Skip to content

Commit f70cdb3

Browse files
committed
cpu/rp2350_common: change register calculation functions to pointers
1 parent de713fb commit f70cdb3

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

cpu/rp2350_common/include/periph_cpu.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,11 @@ void rp2350_init(void);
9191
* @param pin The GPIO pin number
9292
* @return The address of the GPIO pad register for the given pin
9393
*/
94-
static inline uint32_t calculate_gpio_pad_register_addr(gpio_t pin) {
94+
static inline uint32_t* calculate_gpio_pad_register_addr(gpio_t pin) {
9595
/* Each pin has a 4 byte register, so we can calculate the address
9696
* by adding 4 bytes for each pin, starting at the base address of PADS_BANK0
9797
* and adding 4 bytes to skip VOLTAGE_SELECT */
98-
return PADS_BANK0_BASE + 4 * (pin + 1);
98+
return (uint32_t*) (PADS_BANK0_BASE + (4 * (pin + 1)));
9999
}
100100

101101
/**
@@ -105,7 +105,7 @@ static inline uint32_t calculate_gpio_pad_register_addr(gpio_t pin) {
105105
*/
106106
static uint32_t calculate_gpio_io_status_register_addr(gpio_t pin) {
107107
/* Each status register is followed by a ctrl register */
108-
return IO_BANK0_BASE + 8 * pin;
108+
return IO_BANK0_BASE + (8 * pin);
109109
}
110110

111111
/**
@@ -114,11 +114,11 @@ static uint32_t calculate_gpio_io_status_register_addr(gpio_t pin) {
114114
* @param pin The GPIO pin number
115115
* @return The address of the GPIO IO control register for the given pin
116116
*/
117-
static inline uint32_t calculate_gpio_io_ctrl_register_addr(gpio_t pin) {
117+
static inline uint32_t* calculate_gpio_io_ctrl_register_addr(gpio_t pin) {
118118
/* Each pin has a 8 byte register (4 Bytes of Status, 4 Bytes of CTRL),
119119
* so we can calculate the address by adding 8 bytes for each pin,
120120
* starting at the base address of IO_BANK0 */
121-
return calculate_gpio_io_status_register_addr(pin) + 4;
121+
return (uint32_t*) (calculate_gpio_io_status_register_addr(pin) + 4);
122122
}
123123

124124

cpu/rp2350_common/periph/gpio.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ int gpio_init(gpio_t pin, gpio_mode_t mode) {
3636

3737
switch (mode) {
3838
case GPIO_OUT:
39-
*(uint32_t*)calculate_gpio_io_ctrl_register_addr(pin) =
39+
*calculate_gpio_io_ctrl_register_addr(pin) =
4040
FUNCTION_SELECT_SIO;
4141

4242
volatile uint32_t* pad_reg =
43-
(uint32_t*)calculate_gpio_pad_register_addr(pin);
43+
calculate_gpio_pad_register_addr(pin);
4444

4545
/* We clear all bits except the drive strength bit.
4646
* We set that to the highest one possible (12mA)

cpu/rp2350_common/periph/uart.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ void uart_init_pins(uart_t uart) {
145145
UART0_Type *dev = uart_config[uart].dev;
146146

147147
/* Set the UART pins to the correct function */
148-
*(uint32_t *)calculate_gpio_io_ctrl_register_addr(uart_config[uart].tx_pin) = FUNCTION_SELECT_UART;
149-
*(uint32_t *)calculate_gpio_io_ctrl_register_addr(uart_config[uart].rx_pin) = FUNCTION_SELECT_UART;
148+
*calculate_gpio_io_ctrl_register_addr(uart_config[uart].tx_pin) = FUNCTION_SELECT_UART;
149+
*calculate_gpio_io_ctrl_register_addr(uart_config[uart].rx_pin) = FUNCTION_SELECT_UART;
150150
/* Clear the ISO bits */
151151
atomic_clear(
152152
calculate_gpio_pad_register_addr(uart_config[uart].tx_pin),

0 commit comments

Comments
 (0)