@@ -25,13 +25,8 @@ int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, uintp
25
25
uint8_t bit0 = (pins -> config >> CH32V003_PINCTRL_RM_BASE_SHIFT ) & 0x1F ;
26
26
uint8_t remap = (pins -> config >> CH32V003_PINCTRL_RM_SHIFT ) & 0x3 ;
27
27
GPIO_TypeDef * regs = wch_afio_pinctrl_regs [port ];
28
- uint32_t pcfr1 = AFIO -> PCFR1 ;
29
28
uint8_t cfg = 0 ;
30
29
31
- if (remap != 0 ) {
32
- RCC -> APB2PCENR |= RCC_AFIOEN ;
33
- }
34
-
35
30
if (pins -> output_high || pins -> output_low ) {
36
31
cfg |= (pins -> slew_rate + 1 );
37
32
if (pins -> drive_open_drain ) {
@@ -63,16 +58,23 @@ int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, uintp
63
58
}
64
59
}
65
60
66
- if (bit0 == CH32V003_PINMUX_I2C1_RM ) {
67
- pcfr1 |= ((remap & 1 ) << CH32V003_PINMUX_I2C1_RM ) |
68
- (((remap >> 1 ) & 1 ) << CH32V003_PINMUX_I2C1_RM1 );
69
- } else if (bit0 == CH32V003_PINMUX_USART1_RM ) {
70
- pcfr1 |= ((remap & 1 ) << CH32V003_PINMUX_USART1_RM ) |
71
- (((remap >> 1 ) & 1 ) << CH32V003_PINMUX_USART1_RM1 );
72
- } else {
73
- pcfr1 |= remap << bit0 ;
61
+ if (remap != 0 ) {
62
+ RCC -> APB2PCENR |= RCC_AFIOEN ;
63
+
64
+ if (bit0 == CH32V003_PINMUX_I2C1_RM ) {
65
+ AFIO -> PCFR1 |= ((uint32_t )((remap >> 0 ) & 1 )
66
+ << CH32V003_PINMUX_I2C1_RM ) |
67
+ ((uint32_t )((remap >> 1 ) & 1 )
68
+ << CH32V003_PINMUX_I2C1_RM1 );
69
+ } else if (bit0 == CH32V003_PINMUX_USART1_RM ) {
70
+ AFIO -> PCFR1 |= ((uint32_t )((remap >> 0 ) & 1 )
71
+ << CH32V003_PINMUX_USART1_RM ) |
72
+ ((uint32_t )((remap >> 1 ) & 1 )
73
+ << CH32V003_PINMUX_USART1_RM1 );
74
+ } else {
75
+ AFIO -> PCFR1 |= (uint32_t )remap << bit0 ;
76
+ }
74
77
}
75
- AFIO -> PCFR1 = pcfr1 ;
76
78
}
77
79
78
80
return 0 ;
0 commit comments