@@ -24,6 +24,11 @@ int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, uintp
24
24
(void )base ;
25
25
#endif /*USART_COUNT > 1*/
26
26
27
+ #ifdef CONFIG_SPI_GECKO_EUSART
28
+ EUSART_TypeDef * ebase = (EUSART_TypeDef * )reg ;
29
+ int eusart_num = EUSART_NUM (ebase );
30
+ #endif
31
+
27
32
#endif
28
33
29
34
#ifdef CONFIG_I2C_GECKO
@@ -171,7 +176,53 @@ int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, uintp
171
176
#endif /* CONFIG_SOC_FAMILY_SILABS_S1 */
172
177
#endif /* CONFIG_UART_GECKO */
173
178
174
- #ifdef CONFIG_SPI_GECKO
179
+ #ifdef CONFIG_SPI_GECKO_EUSART
180
+ case GECKO_FUN_SPI_SCK :
181
+ pin_config .mode = gpioModePushPull ;
182
+ pin_config .out = 1 ;
183
+ GPIO -> EUSARTROUTE [eusart_num ].SCLKROUTE =
184
+ (pin_config .port << _GPIO_EUSART_SCLKROUTE_PORT_SHIFT ) |
185
+ (pin_config .pin << _GPIO_EUSART_SCLKROUTE_PIN_SHIFT );
186
+ GPIO -> EUSARTROUTE [eusart_num ].ROUTEEN |= GPIO_EUSART_ROUTEEN_SCLKPEN ;
187
+ GPIO_PinModeSet (pin_config .port , pin_config .pin , pin_config .mode ,
188
+ pin_config .out );
189
+ break ;
190
+
191
+ case GECKO_FUN_SPI_CSN :
192
+ pin_config .mode = gpioModePushPull ;
193
+ pin_config .out = 1 ;
194
+ GPIO -> EUSARTROUTE [eusart_num ].CSROUTE =
195
+ (pin_config .port << _GPIO_EUSART_CSROUTE_PORT_SHIFT ) |
196
+ (pin_config .pin << _GPIO_EUSART_CSROUTE_PIN_SHIFT );
197
+ GPIO -> EUSARTROUTE [eusart_num ].ROUTEEN |= GPIO_EUSART_ROUTEEN_CSPEN ;
198
+ GPIO_PinModeSet (pin_config .port , pin_config .pin , pin_config .mode ,
199
+ pin_config .out );
200
+ break ;
201
+
202
+ case GECKO_FUN_SPI_MOSI :
203
+ pin_config .mode = gpioModePushPull ;
204
+ pin_config .out = 1 ;
205
+ GPIO -> EUSARTROUTE [eusart_num ].TXROUTE =
206
+ (pin_config .port << _GPIO_EUSART_TXROUTE_PORT_SHIFT ) |
207
+ (pin_config .pin << _GPIO_EUSART_TXROUTE_PIN_SHIFT );
208
+ GPIO -> EUSARTROUTE [eusart_num ].ROUTEEN |= GPIO_EUSART_ROUTEEN_TXPEN ;
209
+ GPIO_PinModeSet (pin_config .port , pin_config .pin , pin_config .mode ,
210
+ pin_config .out );
211
+ break ;
212
+
213
+ case GECKO_FUN_SPI_MISO :
214
+ pin_config .mode = gpioModeInput ;
215
+ pin_config .out = 1 ;
216
+ GPIO -> EUSARTROUTE [eusart_num ].RXROUTE =
217
+ (pin_config .port << _GPIO_EUSART_RXROUTE_PORT_SHIFT ) |
218
+ (pin_config .pin << _GPIO_EUSART_RXROUTE_PIN_SHIFT );
219
+ GPIO -> EUSARTROUTE [EUSART_NUM (EUSART1 )].ROUTEEN |= GPIO_EUSART_ROUTEEN_RXPEN ;
220
+ GPIO_PinModeSet (pin_config .port , pin_config .pin , pin_config .mode ,
221
+ pin_config .out );
222
+ break ;
223
+ #endif /*CONFIG_SPI_GECKO_EUSART*/
224
+
225
+ #ifdef CONFIG_SPI_GECKO_USART
175
226
#ifdef CONFIG_SOC_FAMILY_SILABS_S1
176
227
case GECKO_FUN_SPIM_SCK :
177
228
pin_config .mode = gpioModePushPull ;
@@ -287,7 +338,7 @@ int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, uintp
287
338
pin_config .out );
288
339
break ;
289
340
#endif /* CONFIG_SOC_FAMILY_SILABS_S1 */
290
- #endif /* CONFIG_SPI_GECKO */
341
+ #endif /* CONFIG_SPI_GECKO_USART */
291
342
292
343
#ifdef CONFIG_I2C_GECKO
293
344
case GECKO_FUN_I2C_SDA :
0 commit comments