drivers: serial: Rework Silabs Gecko UART Driver
Introduces the location property and adds the ability to use values generated by the device tree configuration. Signed-off-by: Diego Sueiro <diego.sueiro@gmail.com> Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
parent
eb20984143
commit
0c7a28c4cc
18 changed files with 326 additions and 145 deletions
|
@ -43,9 +43,6 @@ if UART_GECKO
|
||||||
config USART_GECKO_1
|
config USART_GECKO_1
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config USART_GECKO_1_GPIO_LOC
|
|
||||||
default 4
|
|
||||||
|
|
||||||
endif # UART_GECKO
|
endif # UART_GECKO
|
||||||
|
|
||||||
endif # BOARD_EFM32HG_SLSTK3400A
|
endif # BOARD_EFM32HG_SLSTK3400A
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
compatible = "silabs,efm32hg_slstk3400a", "silabs,efm32hg";
|
compatible = "silabs,efm32hg_slstk3400a", "silabs,efm32hg";
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
zephyr,console = &uart1;
|
zephyr,console = &usart1;
|
||||||
zephyr,sram = &sram0;
|
zephyr,sram = &sram0;
|
||||||
zephyr,flash = &flash0;
|
zephyr,flash = &flash0;
|
||||||
};
|
};
|
||||||
|
@ -23,6 +23,7 @@
|
||||||
led1 = &led1;
|
led1 = &led1;
|
||||||
sw0 = &button0;
|
sw0 = &button0;
|
||||||
sw1 = &button1;
|
sw1 = &button1;
|
||||||
|
usart-1 = &usart1;
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
|
@ -53,7 +54,8 @@
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&uart1 {
|
&usart1 {
|
||||||
current-speed = <115200>;
|
current-speed = <115200>;
|
||||||
|
location = <4>;
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,9 +43,6 @@ if UART_GECKO
|
||||||
config UART_GECKO_0
|
config UART_GECKO_0
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config UART_GECKO_0_GPIO_LOC
|
|
||||||
default 1
|
|
||||||
|
|
||||||
endif # UART_GECKO
|
endif # UART_GECKO
|
||||||
|
|
||||||
endif # BOARD_EFM32WG_STK3800
|
endif # BOARD_EFM32WG_STK3800
|
||||||
|
|
|
@ -11,6 +11,10 @@
|
||||||
model = "Silicon Labs EFM32WG STK3800 board";
|
model = "Silicon Labs EFM32WG STK3800 board";
|
||||||
compatible = "silabs,efm32wg_stk3800", "silabs,efm32wg";
|
compatible = "silabs,efm32wg_stk3800", "silabs,efm32wg";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
uart-0 = &uart0;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
zephyr,console = &uart0;
|
zephyr,console = &uart0;
|
||||||
zephyr,sram = &sram0;
|
zephyr,sram = &sram0;
|
||||||
|
@ -54,5 +58,6 @@
|
||||||
|
|
||||||
&uart0 {
|
&uart0 {
|
||||||
current-speed = <115200>;
|
current-speed = <115200>;
|
||||||
|
location = <1>;
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,9 +43,6 @@ if UART_GECKO
|
||||||
config USART_GECKO_0
|
config USART_GECKO_0
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config USART_GECKO_0_GPIO_LOC
|
|
||||||
default 0
|
|
||||||
|
|
||||||
endif # UART_GECKO
|
endif # UART_GECKO
|
||||||
|
|
||||||
endif # BOARD_EFR32_SLWSTK6061A
|
endif # BOARD_EFR32_SLWSTK6061A
|
||||||
|
|
|
@ -11,8 +11,12 @@
|
||||||
model = "Silicon Labs EFR32 SLWSTK6061A board";
|
model = "Silicon Labs EFR32 SLWSTK6061A board";
|
||||||
compatible = "silabs,efr32_slwstk6061a", "silabs,efr32fg1p";
|
compatible = "silabs,efr32_slwstk6061a", "silabs,efr32fg1p";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
usart-0 = &usart0;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
zephyr,console = &uart0;
|
zephyr,console = &usart0;
|
||||||
zephyr,sram = &sram0;
|
zephyr,sram = &sram0;
|
||||||
zephyr,flash = &flash0;
|
zephyr,flash = &flash0;
|
||||||
};
|
};
|
||||||
|
@ -53,7 +57,8 @@
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&uart0 {
|
&usart0 {
|
||||||
current-speed = <115200>;
|
current-speed = <115200>;
|
||||||
|
location = <0>;
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
|
@ -232,7 +232,8 @@ static void uart_gecko_init_pins(struct device *dev)
|
||||||
soc_gpio_configure(&config->pin_tx);
|
soc_gpio_configure(&config->pin_tx);
|
||||||
#if defined(_USART_ROUTEPEN_MASK) || defined(_UART_ROUTEPEN_MASK)
|
#if defined(_USART_ROUTEPEN_MASK) || defined(_UART_ROUTEPEN_MASK)
|
||||||
config->base->ROUTEPEN = USART_ROUTEPEN_RXPEN | USART_ROUTEPEN_TXPEN;
|
config->base->ROUTEPEN = USART_ROUTEPEN_RXPEN | USART_ROUTEPEN_TXPEN;
|
||||||
config->base->ROUTELOC0 = (config->loc << _USART_ROUTELOC0_TXLOC_SHIFT) |
|
config->base->ROUTELOC0 =
|
||||||
|
(config->loc << _USART_ROUTELOC0_TXLOC_SHIFT) |
|
||||||
(config->loc << _USART_ROUTELOC0_RXLOC_SHIFT);
|
(config->loc << _USART_ROUTELOC0_RXLOC_SHIFT);
|
||||||
config->base->ROUTELOC1 = _USART_ROUTELOC1_RESETVALUE;
|
config->base->ROUTELOC1 = _USART_ROUTELOC1_RESETVALUE;
|
||||||
#else
|
#else
|
||||||
|
@ -297,12 +298,12 @@ static void uart_gecko_config_func_0(struct device *dev);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const struct uart_gecko_config uart_gecko_0_config = {
|
static const struct uart_gecko_config uart_gecko_0_config = {
|
||||||
.base = UART0,
|
.base = (USART_TypeDef *)CONFIG_UART_GECKO_0_BASE_ADDRESS,
|
||||||
.clock = cmuClock_UART0,
|
.clock = cmuClock_UART0,
|
||||||
.baud_rate = CONFIG_UART_GECKO_0_BAUD_RATE,
|
.baud_rate = CONFIG_UART_GECKO_0_CURRENT_SPEED,
|
||||||
.pin_rx = PIN_UART0_RXD,
|
.pin_rx = PIN_UART0_RXD,
|
||||||
.pin_tx = PIN_UART0_TXD,
|
.pin_tx = PIN_UART0_TXD,
|
||||||
.loc = CONFIG_UART_GECKO_0_GPIO_LOC,
|
.loc = CONFIG_UART_GECKO_0_LOCATION,
|
||||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
.irq_config_func = uart_gecko_config_func_0,
|
.irq_config_func = uart_gecko_config_func_0,
|
||||||
#endif
|
#endif
|
||||||
|
@ -310,22 +311,22 @@ static const struct uart_gecko_config uart_gecko_0_config = {
|
||||||
|
|
||||||
static struct uart_gecko_data uart_gecko_0_data;
|
static struct uart_gecko_data uart_gecko_0_data;
|
||||||
|
|
||||||
DEVICE_AND_API_INIT(uart_0, CONFIG_UART_GECKO_0_NAME,
|
DEVICE_AND_API_INIT(uart_0, CONFIG_UART_GECKO_0_LABEL, &uart_gecko_init, &uart_gecko_0_data,
|
||||||
&uart_gecko_init,
|
&uart_gecko_0_config, PRE_KERNEL_1,
|
||||||
&uart_gecko_0_data, &uart_gecko_0_config,
|
CONFIG_KERNEL_INIT_PRIORITY_DEVICE, &uart_gecko_driver_api);
|
||||||
PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
|
||||||
&uart_gecko_driver_api);
|
|
||||||
|
|
||||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
static void uart_gecko_config_func_0(struct device *dev)
|
static void uart_gecko_config_func_0(struct device *dev)
|
||||||
{
|
{
|
||||||
IRQ_CONNECT(UART0_RX_IRQn, CONFIG_UART_GECKO_0_IRQ_PRI,
|
IRQ_CONNECT(CONFIG_UART_GECKO_0_IRQ_RX,
|
||||||
uart_gecko_isr, DEVICE_GET(uart_0), 0);
|
CONFIG_UART_GECKO_0_IRQ_RX_PRIORITY, uart_gecko_isr,
|
||||||
IRQ_CONNECT(UART0_TX_IRQn, CONFIG_UART_GECKO_0_IRQ_PRI,
|
DEVICE_GET(uart_0), 0);
|
||||||
uart_gecko_isr, DEVICE_GET(uart_0), 0);
|
IRQ_CONNECT(CONFIG_UART_GECKO_0_IRQ_TX,
|
||||||
|
CONFIG_UART_GECKO_0_IRQ_TX_PRIORITY, uart_gecko_isr,
|
||||||
|
DEVICE_GET(uart_0), 0);
|
||||||
|
|
||||||
irq_enable(UART0_TX_IRQn);
|
irq_enable(CONFIG_UART_GECKO_0_IRQ_RX);
|
||||||
irq_enable(UART0_RX_IRQn);
|
irq_enable(CONFIG_UART_GECKO_0_IRQ_TX);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -338,12 +339,12 @@ static void uart_gecko_config_func_1(struct device *dev);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const struct uart_gecko_config uart_gecko_1_config = {
|
static const struct uart_gecko_config uart_gecko_1_config = {
|
||||||
.base = UART1,
|
.base = (USART_TypeDef *)CONFIG_UART_GECKO_1_BASE_ADDRESS,
|
||||||
.clock = cmuClock_UART1,
|
.clock = cmuClock_UART1,
|
||||||
.baud_rate = CONFIG_UART_GECKO_1_BAUD_RATE,
|
.baud_rate = CONFIG_UART_GECKO_1_CURRENT_SPEED,
|
||||||
.pin_rx = PIN_UART1_RXD,
|
.pin_rx = PIN_UART1_RXD,
|
||||||
.pin_tx = PIN_UART1_TXD,
|
.pin_tx = PIN_UART1_TXD,
|
||||||
.loc = CONFIG_UART_GECKO_1_GPIO_LOC,
|
.loc = CONFIG_UART_GECKO_1_LOCATION,
|
||||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
.irq_config_func = uart_gecko_config_func_1,
|
.irq_config_func = uart_gecko_config_func_1,
|
||||||
#endif
|
#endif
|
||||||
|
@ -351,22 +352,22 @@ static const struct uart_gecko_config uart_gecko_1_config = {
|
||||||
|
|
||||||
static struct uart_gecko_data uart_gecko_1_data;
|
static struct uart_gecko_data uart_gecko_1_data;
|
||||||
|
|
||||||
DEVICE_AND_API_INIT(uart_1, CONFIG_UART_GECKO_1_NAME,
|
DEVICE_AND_API_INIT(uart_1, CONFIG_UART_GECKO_1_LABEL, &uart_gecko_init, &uart_gecko_1_data,
|
||||||
&uart_gecko_init,
|
&uart_gecko_1_config, PRE_KERNEL_1,
|
||||||
&uart_gecko_1_data, &uart_gecko_1_config,
|
CONFIG_KERNEL_INIT_PRIORITY_DEVICE, &uart_gecko_driver_api);
|
||||||
PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
|
||||||
&uart_gecko_driver_api);
|
|
||||||
|
|
||||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
static void uart_gecko_config_func_1(struct device *dev)
|
static void uart_gecko_config_func_1(struct device *dev)
|
||||||
{
|
{
|
||||||
IRQ_CONNECT(UART1_RX_IRQn, CONFIG_UART_GECKO_1_IRQ_PRI,
|
IRQ_CONNECT(CONFIG_UART_GECKO_1_IRQ_RX,
|
||||||
uart_gecko_isr, DEVICE_GET(uart_1), 0);
|
CONFIG_UART_GECKO_1_IRQ_RX_PRIORITY, uart_gecko_isr,
|
||||||
IRQ_CONNECT(UART1_TX_IRQn, CONFIG_UART_GECKO_1_IRQ_PRI,
|
DEVICE_GET(uart_1), 0);
|
||||||
uart_gecko_isr, DEVICE_GET(uart_1), 0);
|
IRQ_CONNECT(CONFIG_UART_GECKO_1_IRQ_TX,
|
||||||
|
CONFIG_UART_GECKO_1_IRQ_TX_PRIORITY, uart_gecko_isr,
|
||||||
|
DEVICE_GET(uart_1), 0);
|
||||||
|
|
||||||
irq_enable(UART1_RX_IRQn);
|
irq_enable(CONFIG_UART_GECKO_1_IRQ_RX);
|
||||||
irq_enable(UART1_TX_IRQn);
|
irq_enable(CONFIG_UART_GECKO_1_IRQ_TX);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -379,12 +380,12 @@ static void usart_gecko_config_func_0(struct device *dev);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const struct uart_gecko_config usart_gecko_0_config = {
|
static const struct uart_gecko_config usart_gecko_0_config = {
|
||||||
.base = USART0,
|
.base = (USART_TypeDef *)CONFIG_USART_GECKO_0_BASE_ADDRESS,
|
||||||
.clock = cmuClock_USART0,
|
.clock = cmuClock_USART0,
|
||||||
.baud_rate = CONFIG_USART_GECKO_0_BAUD_RATE,
|
.baud_rate = CONFIG_USART_GECKO_0_CURRENT_SPEED,
|
||||||
.pin_rx = PIN_USART0_RXD,
|
.pin_rx = PIN_USART0_RXD,
|
||||||
.pin_tx = PIN_USART0_TXD,
|
.pin_tx = PIN_USART0_TXD,
|
||||||
.loc = CONFIG_USART_GECKO_0_GPIO_LOC,
|
.loc = CONFIG_USART_GECKO_0_LOCATION,
|
||||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
.irq_config_func = usart_gecko_config_func_0,
|
.irq_config_func = usart_gecko_config_func_0,
|
||||||
#endif
|
#endif
|
||||||
|
@ -392,22 +393,22 @@ static const struct uart_gecko_config usart_gecko_0_config = {
|
||||||
|
|
||||||
static struct uart_gecko_data usart_gecko_0_data;
|
static struct uart_gecko_data usart_gecko_0_data;
|
||||||
|
|
||||||
DEVICE_AND_API_INIT(usart_0, CONFIG_USART_GECKO_0_NAME,
|
DEVICE_AND_API_INIT(usart_0, CONFIG_USART_GECKO_0_LABEL, &uart_gecko_init,
|
||||||
&uart_gecko_init,
|
&usart_gecko_0_data, &usart_gecko_0_config, PRE_KERNEL_1,
|
||||||
&usart_gecko_0_data, &usart_gecko_0_config,
|
CONFIG_KERNEL_INIT_PRIORITY_DEVICE, &uart_gecko_driver_api);
|
||||||
PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
|
||||||
&uart_gecko_driver_api);
|
|
||||||
|
|
||||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
static void usart_gecko_config_func_0(struct device *dev)
|
static void usart_gecko_config_func_0(struct device *dev)
|
||||||
{
|
{
|
||||||
IRQ_CONNECT(USART0_RX_IRQn, CONFIG_USART_GECKO_0_IRQ_PRI,
|
IRQ_CONNECT(CONFIG_USART_GECKO_0_IRQ_RX,
|
||||||
uart_gecko_isr, DEVICE_GET(usart_0), 0);
|
CONFIG_USART_GECKO_0_IRQ_RX_PRIORITY, uart_gecko_isr,
|
||||||
IRQ_CONNECT(USART0_TX_IRQn, CONFIG_USART_GECKO_0_IRQ_PRI,
|
DEVICE_GET(usart_0), 0);
|
||||||
uart_gecko_isr, DEVICE_GET(usart_0), 0);
|
IRQ_CONNECT(CONFIG_USART_GECKO_0_IRQ_TX,
|
||||||
|
CONFIG_USART_GECKO_0_IRQ_TX_PRIORITY, uart_gecko_isr,
|
||||||
|
DEVICE_GET(usart_0), 0);
|
||||||
|
|
||||||
irq_enable(USART0_TX_IRQn);
|
irq_enable(CONFIG_USART_GECKO_0_IRQ_RX);
|
||||||
irq_enable(USART0_RX_IRQn);
|
irq_enable(CONFIG_USART_GECKO_0_IRQ_TX);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -420,12 +421,12 @@ static void usart_gecko_config_func_1(struct device *dev);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const struct uart_gecko_config usart_gecko_1_config = {
|
static const struct uart_gecko_config usart_gecko_1_config = {
|
||||||
.base = USART1,
|
.base = (USART_TypeDef *)CONFIG_USART_GECKO_1_BASE_ADDRESS,
|
||||||
.clock = cmuClock_USART1,
|
.clock = cmuClock_USART1,
|
||||||
.baud_rate = CONFIG_USART_GECKO_1_BAUD_RATE,
|
.baud_rate = CONFIG_USART_GECKO_1_CURRENT_SPEED,
|
||||||
.pin_rx = PIN_USART1_RXD,
|
.pin_rx = PIN_USART1_RXD,
|
||||||
.pin_tx = PIN_USART1_TXD,
|
.pin_tx = PIN_USART1_TXD,
|
||||||
.loc = CONFIG_USART_GECKO_1_GPIO_LOC,
|
.loc = CONFIG_USART_GECKO_1_LOCATION,
|
||||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
.irq_config_func = usart_gecko_config_func_1,
|
.irq_config_func = usart_gecko_config_func_1,
|
||||||
#endif
|
#endif
|
||||||
|
@ -433,23 +434,105 @@ static const struct uart_gecko_config usart_gecko_1_config = {
|
||||||
|
|
||||||
static struct uart_gecko_data usart_gecko_1_data;
|
static struct uart_gecko_data usart_gecko_1_data;
|
||||||
|
|
||||||
DEVICE_AND_API_INIT(usart_1, CONFIG_USART_GECKO_1_NAME,
|
DEVICE_AND_API_INIT(usart_1, CONFIG_USART_GECKO_1_LABEL, &uart_gecko_init,
|
||||||
&uart_gecko_init,
|
&usart_gecko_1_data, &usart_gecko_1_config, PRE_KERNEL_1,
|
||||||
&usart_gecko_1_data, &usart_gecko_1_config,
|
CONFIG_KERNEL_INIT_PRIORITY_DEVICE, &uart_gecko_driver_api);
|
||||||
PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
|
||||||
&uart_gecko_driver_api);
|
|
||||||
|
|
||||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
static void usart_gecko_config_func_1(struct device *dev)
|
static void usart_gecko_config_func_1(struct device *dev)
|
||||||
{
|
{
|
||||||
IRQ_CONNECT(USART1_RX_IRQn, CONFIG_USART_GECKO_1_IRQ_PRI,
|
IRQ_CONNECT(CONFIG_USART_GECKO_1_IRQ_RX,
|
||||||
uart_gecko_isr, DEVICE_GET(usart_1), 0);
|
CONFIG_USART_GECKO_1_IRQ_RX_PRIORITY, uart_gecko_isr,
|
||||||
IRQ_CONNECT(USART1_TX_IRQn, CONFIG_USART_GECKO_1_IRQ_PRI,
|
DEVICE_GET(usart_1), 0);
|
||||||
uart_gecko_isr, DEVICE_GET(usart_1), 0);
|
IRQ_CONNECT(CONFIG_USART_GECKO_1_IRQ_TX,
|
||||||
|
CONFIG_USART_GECKO_1_IRQ_TX_PRIORITY, uart_gecko_isr,
|
||||||
|
DEVICE_GET(usart_1), 0);
|
||||||
|
|
||||||
irq_enable(USART1_RX_IRQn);
|
irq_enable(CONFIG_USART_GECKO_1_IRQ_RX);
|
||||||
irq_enable(USART1_TX_IRQn);
|
irq_enable(CONFIG_USART_GECKO_1_IRQ_TX);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* CONFIG_UART_GECKO_1 */
|
#endif /* CONFIG_USART_GECKO_1 */
|
||||||
|
|
||||||
|
#ifdef CONFIG_USART_GECKO_2
|
||||||
|
|
||||||
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
|
static void usart_gecko_config_func_2(struct device *dev);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static const struct uart_gecko_config usart_gecko_2_config = {
|
||||||
|
.base = (USART_TypeDef *)CONFIG_USART_GECKO_2_BASE_ADDRESS,
|
||||||
|
.clock = cmuClock_USART2,
|
||||||
|
.baud_rate = CONFIG_USART_GECKO_2_CURRENT_SPEED,
|
||||||
|
.pin_rx = PIN_USART2_RXD,
|
||||||
|
.pin_tx = PIN_USART2_TXD,
|
||||||
|
.loc = CONFIG_USART_GECKO_2_LOCATION,
|
||||||
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
|
.irq_config_func = usart_gecko_config_func_2,
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct uart_gecko_data usart_gecko_2_data;
|
||||||
|
|
||||||
|
DEVICE_AND_API_INIT(usart_2, CONFIG_USART_GECKO_2_LABEL, &uart_gecko_init,
|
||||||
|
&usart_gecko_2_data, &usart_gecko_2_config, PRE_KERNEL_1,
|
||||||
|
CONFIG_KERNEL_INIT_PRIORITY_DEVICE, &uart_gecko_driver_api);
|
||||||
|
|
||||||
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
|
static void usart_gecko_config_func_2(struct device *dev)
|
||||||
|
{
|
||||||
|
IRQ_CONNECT(CONFIG_USART_GECKO_2_IRQ_RX,
|
||||||
|
CONFIG_USART_GECKO_2_IRQ_RX_PRIORITY, uart_gecko_isr,
|
||||||
|
DEVICE_GET(usart_2), 0);
|
||||||
|
IRQ_CONNECT(CONFIG_USART_GECKO_2_IRQ_TX,
|
||||||
|
CONFIG_USART_GECKO_2_IRQ_TX_PRIORITY, uart_gecko_isr,
|
||||||
|
DEVICE_GET(usart_2), 0);
|
||||||
|
|
||||||
|
irq_enable(CONFIG_USART_GECKO_2_IRQ_RX);
|
||||||
|
irq_enable(CONFIG_USART_GECKO_2_IRQ_TX);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* CONFIG_USART_GECKO_2 */
|
||||||
|
|
||||||
|
#ifdef CONFIG_USART_GECKO_3
|
||||||
|
|
||||||
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
|
static void usart_gecko_config_func_3(struct device *dev);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static const struct uart_gecko_config usart_gecko_3_config = {
|
||||||
|
.base = (USART_TypeDef *)CONFIG_USART_GECKO_3_BASE_ADDRESS,
|
||||||
|
.clock = cmuClock_USART3,
|
||||||
|
.baud_rate = CONFIG_USART_GECKO_3_CURRENT_SPEED,
|
||||||
|
.pin_rx = PIN_USART3_RXD,
|
||||||
|
.pin_tx = PIN_USART3_TXD,
|
||||||
|
.loc = CONFIG_USART_GECKO_3_LOCATION,
|
||||||
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
|
.irq_config_func = usart_gecko_config_func_3,
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct uart_gecko_data usart_gecko_3_data;
|
||||||
|
|
||||||
|
DEVICE_AND_API_INIT(usart_3, CONFIG_USART_GECKO_3_LABEL, &uart_gecko_init,
|
||||||
|
&usart_gecko_3_data, &usart_gecko_3_config, PRE_KERNEL_1,
|
||||||
|
CONFIG_KERNEL_INIT_PRIORITY_DEVICE, &uart_gecko_driver_api);
|
||||||
|
|
||||||
|
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||||
|
static void usart_gecko_config_func_3(struct device *dev)
|
||||||
|
{
|
||||||
|
IRQ_CONNECT(CONFIG_USART_GECKO_3_IRQ_RX,
|
||||||
|
CONFIG_USART_GECKO_3_IRQ_RX_PRIORITY, uart_gecko_isr,
|
||||||
|
DEVICE_GET(usart_3), 0);
|
||||||
|
IRQ_CONNECT(CONFIG_USART_GECKO_3_IRQ_TX,
|
||||||
|
CONFIG_USART_GECKO_3_IRQ_TX_PRIORITY, uart_gecko_isr,
|
||||||
|
DEVICE_GET(usart_3), 0);
|
||||||
|
|
||||||
|
irq_enable(CONFIG_USART_GECKO_3_IRQ_RX);
|
||||||
|
irq_enable(CONFIG_USART_GECKO_3_IRQ_TX);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* CONFIG_USART_GECKO_3 */
|
||||||
|
|
|
@ -23,18 +23,20 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
uart0: uart@4000c000 { /* USART0 */
|
usart0: usart@4000c000 { /* USART0 */
|
||||||
compatible = "silabs,efm32-usart";
|
compatible = "silabs,gecko-usart";
|
||||||
reg = <0x4000c000 0x400>;
|
reg = <0x4000c000 0x400>;
|
||||||
interrupts = <17 0 18 0>;
|
interrupts = <17 0>, <18 0>;
|
||||||
|
interrupt-names = "rx", "tx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
label = "UART_0";
|
label = "UART_0";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1: uart@4000c400 { /* USART1 */
|
usart1: usart@4000c400 { /* USART1 */
|
||||||
compatible = "silabs,efm32-usart";
|
compatible = "silabs,gecko-usart";
|
||||||
reg = <0x4000c400 0x400>;
|
reg = <0x4000c400 0x400>;
|
||||||
interrupts = <8 0 9 0>;
|
interrupts = <8 0>, <9 0>;
|
||||||
|
interrupt-names = "rx", "tx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
label = "UART_1";
|
label = "UART_1";
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,42 +23,47 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
uart0: uart@4000c000 { /* USART0 */
|
usart0: usart@4000c000 { /* USART0 */
|
||||||
compatible = "silabs,efm32-usart";
|
compatible = "silabs,gecko-usart";
|
||||||
reg = <0x4000c000 0x400>;
|
reg = <0x4000c000 0x400>;
|
||||||
interrupts = <3 0 4 0>;
|
interrupts = <3 0>, <4 0>;
|
||||||
|
interrupt-names = "rx", "tx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
label = "UART_0";
|
label = "UART_0";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1: uart@4000c400 { /* USART1 */
|
usart1: usart@4000c400 { /* USART1 */
|
||||||
compatible = "silabs,efm32-usart";
|
compatible = "silabs,gecko-usart";
|
||||||
reg = <0x4000c400 0x400>;
|
reg = <0x4000c400 0x400>;
|
||||||
interrupts = <15 0 16 0>;
|
interrupts = <15 0>, <16 0>;
|
||||||
|
interrupt-names = "rx", "tx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
label = "UART_1";
|
label = "UART_1";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart2: uart@4000c800 { /* USART2 */
|
usart2: usart@4000c800 { /* USART2 */
|
||||||
compatible = "silabs,efm32-usart";
|
compatible = "silabs,gecko-usart";
|
||||||
reg = <0x4000c800 0x400>;
|
reg = <0x4000c800 0x400>;
|
||||||
interrupts = <18 0 19 0>;
|
interrupts = <18 0>, <19 0>;
|
||||||
|
interrupt-names = "rx", "tx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
label = "UART_2";
|
label = "UART_2";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart3: uart@4000e000 { /* UART0 */
|
uart0: uart@4000e000 { /* UART0 */
|
||||||
compatible = "silabs,efm32-uart";
|
compatible = "silabs,gecko-uart";
|
||||||
reg = <0x4000e000 0x400>;
|
reg = <0x4000e000 0x400>;
|
||||||
interrupts = <20 0 21 0>;
|
interrupts = <20 0>, <21 0>;
|
||||||
|
interrupt-names = "rx", "tx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
label = "UART_3";
|
label = "UART_3";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart4: uart@4000e400 { /* UART1 */
|
uart1: uart@4000e400 { /* UART1 */
|
||||||
compatible = "silabs,efm32-uart";
|
compatible = "silabs,gecko-uart";
|
||||||
reg = <0x4000e400 0x400>;
|
reg = <0x4000e400 0x400>;
|
||||||
interrupts = <22 0 23 0>;
|
interrupts = <22 0>, <23 0>;
|
||||||
|
interrupt-names = "rx", "tx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
label = "UART_4";
|
label = "UART_4";
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,20 +23,22 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
uart0: uart@40010000 { /* USART0 */
|
usart0: usart@40010000 { /* USART0 */
|
||||||
compatible = "silabs,efm32-usart";
|
compatible = "silabs,gecko-usart";
|
||||||
reg = <0x40010000 0x400>;
|
reg = <0x40010000 0x400>;
|
||||||
interrupts = <11 0 12 0>;
|
interrupts = <11 0>, <12 0>;
|
||||||
|
interrupt-names = "rx", "tx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
label = "UART_0";
|
label = "USART_0";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1: uart@40010400 { /* USART1 */
|
usart1: usart@40010400 { /* USART1 */
|
||||||
compatible = "silabs,efm32-usart";
|
compatible = "silabs,gecko-usart";
|
||||||
reg = <0x40010400 0x400>;
|
reg = <0x40010400 0x400>;
|
||||||
interrupts = <19 0 20 0>;
|
interrupts = <19 0>, <20 0>;
|
||||||
|
interrupt-names = "rx", "tx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
label = "UART_1";
|
label = "USART_1";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio@4000a400 {
|
gpio@4000a400 {
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
---
|
---
|
||||||
title: EFM32 UART
|
title: GECKO UART
|
||||||
version: 0.1
|
version: 0.1
|
||||||
|
|
||||||
description: >
|
description: >
|
||||||
This binding gives a base representation of the EFM32 UART
|
This binding gives a base representation of the GECKO UART
|
||||||
|
|
||||||
inherits:
|
inherits:
|
||||||
!include uart.yaml
|
!include uart.yaml
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
constraint: "silabs,efm32-uart"
|
constraint: "silabs,gecko-uart"
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
type: array
|
type: array
|
||||||
|
@ -19,8 +19,14 @@ properties:
|
||||||
category: required
|
category: required
|
||||||
|
|
||||||
interrupts:
|
interrupts:
|
||||||
type: array
|
type: compound
|
||||||
category: required
|
category: required
|
||||||
description: required interrupts
|
description: required interrupts
|
||||||
generation: define
|
generation: define
|
||||||
|
|
||||||
|
location:
|
||||||
|
type: int
|
||||||
|
category: required
|
||||||
|
description: PIN location
|
||||||
|
generation: define
|
||||||
...
|
...
|
|
@ -1,16 +1,16 @@
|
||||||
---
|
---
|
||||||
title: EFM32 USART
|
title: GECKO USART
|
||||||
version: 0.1
|
version: 0.1
|
||||||
|
|
||||||
description: >
|
description: >
|
||||||
This binding gives a base representation of the EFM32 USART
|
This binding gives a base representation of the Gecko USART
|
||||||
|
|
||||||
inherits:
|
inherits:
|
||||||
!include uart.yaml
|
!include uart.yaml
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
constraint: "silabs,efm32-usart"
|
constraint: "silabs,gecko-usart"
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
type: array
|
type: array
|
||||||
|
@ -19,8 +19,14 @@ properties:
|
||||||
category: required
|
category: required
|
||||||
|
|
||||||
interrupts:
|
interrupts:
|
||||||
type: array
|
type: compound
|
||||||
category: required
|
category: required
|
||||||
description: required interrupts
|
description: required interrupts
|
||||||
generation: define
|
generation: define
|
||||||
|
|
||||||
|
location:
|
||||||
|
type: int
|
||||||
|
category: required
|
||||||
|
description: PIN location
|
||||||
|
generation: define
|
||||||
...
|
...
|
|
@ -8,14 +8,25 @@
|
||||||
|
|
||||||
#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V6M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
|
#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V6M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
|
||||||
|
|
||||||
#define CONFIG_USART_GECKO_0_NAME SILABS_EFM32_USART_4000C000_LABEL
|
#define CONFIG_USART_GECKO_0_BASE_ADDRESS SILABS_GECKO_USART_4000C000_BASE_ADDRESS
|
||||||
#define CONFIG_USART_GECKO_0_BAUD_RATE SILABS_EFM32_USART_4000C000_CURRENT_SPEED
|
#define CONFIG_USART_GECKO_0_CURRENT_SPEED SILABS_GECKO_USART_4000C000_CURRENT_SPEED
|
||||||
#define CONFIG_USART_GECKO_0_IRQ_PRI SILABS_EFM32_USART_4000C000_IRQ_0_PRIORITY
|
#define CONFIG_USART_GECKO_0_IRQ_RX SILABS_GECKO_USART_4000C000_IRQ_0
|
||||||
|
#define CONFIG_USART_GECKO_0_IRQ_RX_PRIORITY SILABS_GECKO_USART_4000C000_IRQ_0_PRIORITY
|
||||||
#define CONFIG_USART_GECKO_1_NAME SILABS_EFM32_USART_4000C400_LABEL
|
#define CONFIG_USART_GECKO_0_IRQ_TX SILABS_GECKO_USART_4000C000_IRQ_1
|
||||||
#define CONFIG_USART_GECKO_1_BAUD_RATE SILABS_EFM32_USART_4000C400_CURRENT_SPEED
|
#define CONFIG_USART_GECKO_0_IRQ_TX_PRIORITY SILABS_GECKO_USART_4000C000_IRQ_1_PRIORITY
|
||||||
#define CONFIG_USART_GECKO_1_IRQ_PRI SILABS_EFM32_USART_4000C400_IRQ_0_PRIORITY
|
#define CONFIG_USART_GECKO_0_LABEL SILABS_GECKO_USART_4000C000_LABEL
|
||||||
|
#define CONFIG_USART_GECKO_0_LOCATION SILABS_GECKO_USART_4000C000_LOCATION
|
||||||
|
#define CONFIG_USART_GECKO_0_SIZE SILABS_GECKO_USART_4000C000_SIZE
|
||||||
|
|
||||||
|
#define CONFIG_USART_GECKO_1_BASE_ADDRESS SILABS_GECKO_USART_4000C400_BASE_ADDRESS
|
||||||
|
#define CONFIG_USART_GECKO_1_CURRENT_SPEED SILABS_GECKO_USART_4000C400_CURRENT_SPEED
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_RX SILABS_GECKO_USART_4000C400_IRQ_0
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_RX_PRIORITY SILABS_GECKO_USART_4000C400_IRQ_0_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_TX SILABS_GECKO_USART_4000C400_IRQ_1
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_TX_PRIORITY SILABS_GECKO_USART_4000C400_IRQ_1_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_1_LABEL SILABS_GECKO_USART_4000C400_LABEL
|
||||||
|
#define CONFIG_USART_GECKO_1_LOCATION SILABS_GECKO_USART_4000C400_LOCATION
|
||||||
|
#define CONFIG_USART_GECKO_1_SIZE SILABS_GECKO_USART_4000C400_SIZE
|
||||||
|
|
||||||
#define CONFIG_GPIO_GECKO_COMMON_NAME SILABS_EFM32_GPIO_40006100_LABEL
|
#define CONFIG_GPIO_GECKO_COMMON_NAME SILABS_EFM32_GPIO_40006100_LABEL
|
||||||
#define CONFIG_GPIO_GECKO_COMMON_EVEN_IRQ SILABS_EFM32_GPIO_40006100_IRQ_GPIO_EVEN
|
#define CONFIG_GPIO_GECKO_COMMON_EVEN_IRQ SILABS_EFM32_GPIO_40006100_IRQ_GPIO_EVEN
|
||||||
|
|
|
@ -18,17 +18,17 @@
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_PART_NUMBER_EFM32HG322F64
|
#ifdef CONFIG_SOC_PART_NUMBER_EFM32HG322F64
|
||||||
#ifdef CONFIG_USART_GECKO_0
|
#ifdef CONFIG_USART_GECKO_0
|
||||||
#if (CONFIG_USART_GECKO_0_GPIO_LOC == 0)
|
#if (CONFIG_USART_GECKO_0_LOCATION == 0)
|
||||||
#define PIN_USART0_TXD {gpioPortE, 10, gpioModePushPull, 1}
|
#define PIN_USART0_TXD {gpioPortE, 10, gpioModePushPull, 1}
|
||||||
#define PIN_USART0_RXD {gpioPortE, 11, gpioModeInput, 1}
|
#define PIN_USART0_RXD {gpioPortE, 11, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_0_GPIO_LOC == 3)
|
#elif (CONFIG_USART_GECKO_0_LOCATION == 3)
|
||||||
#define PIN_USART0_TXD {gpioPortE, 13, gpioModePushPull, 1}
|
#define PIN_USART0_TXD {gpioPortE, 13, gpioModePushPull, 1}
|
||||||
#define PIN_USART0_RXD {gpioPortE, 12, gpioModeInput, 1}
|
#define PIN_USART0_RXD {gpioPortE, 12, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_0_GPIO_LOC == 4)
|
#elif (CONFIG_USART_GECKO_0_LOCATION == 4)
|
||||||
#define PIN_USART0_TXD {gpioPortB, 7, gpioModePushPull, 1}
|
#define PIN_USART0_TXD {gpioPortB, 7, gpioModePushPull, 1}
|
||||||
#define PIN_USART0_RXD {gpioPortB, 8, gpioModeInput, 1}
|
#define PIN_USART0_RXD {gpioPortB, 8, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_0_GPIO_LOC == 5) || \
|
#elif (CONFIG_USART_GECKO_0_LOCATION == 5) || \
|
||||||
(CONFIG_USART_GECKO_0_GPIO_LOC == 6)
|
(CONFIG_USART_GECKO_0_LOCATION == 6)
|
||||||
#define PIN_USART0_TXD {gpioPortC, 0, gpioModePushPull, 1}
|
#define PIN_USART0_TXD {gpioPortC, 0, gpioModePushPull, 1}
|
||||||
#define PIN_USART0_RXD {gpioPortC, 1, gpioModeInput, 1}
|
#define PIN_USART0_RXD {gpioPortC, 1, gpioModeInput, 1}
|
||||||
#else
|
#else
|
||||||
|
@ -37,17 +37,17 @@
|
||||||
#endif /* CONFIG_USART_GECKO_0 */
|
#endif /* CONFIG_USART_GECKO_0 */
|
||||||
|
|
||||||
#ifdef CONFIG_USART_GECKO_1
|
#ifdef CONFIG_USART_GECKO_1
|
||||||
#if (CONFIG_USART_GECKO_1_GPIO_LOC == 0)
|
#if (CONFIG_USART_GECKO_1_LOCATION == 0)
|
||||||
#define PIN_USART1_TXD {gpioPortC, 0, gpioModePushPull, 1}
|
#define PIN_USART1_TXD {gpioPortC, 0, gpioModePushPull, 1}
|
||||||
#define PIN_USART1_RXD {gpioPortC, 1, gpioModeInput, 1}
|
#define PIN_USART1_RXD {gpioPortC, 1, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_1_GPIO_LOC == 2) || \
|
#elif (CONFIG_USART_GECKO_1_LOCATION == 2) || \
|
||||||
(CONFIG_USART_GECKO_1_GPIO_LOC == 3)
|
(CONFIG_USART_GECKO_1_LOCATION == 3)
|
||||||
#define PIN_USART1_TXD {gpioPortD, 7, gpioModePushPull, 1}
|
#define PIN_USART1_TXD {gpioPortD, 7, gpioModePushPull, 1}
|
||||||
#define PIN_USART1_RXD {gpioPortD, 6, gpioModeInput, 1}
|
#define PIN_USART1_RXD {gpioPortD, 6, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_1_GPIO_LOC == 4)
|
#elif (CONFIG_USART_GECKO_1_LOCATION == 4)
|
||||||
#define PIN_USART1_TXD {gpioPortF, 2, gpioModePushPull, 1}
|
#define PIN_USART1_TXD {gpioPortF, 2, gpioModePushPull, 1}
|
||||||
#define PIN_USART1_RXD {gpioPortA, 0, gpioModeInput, 1}
|
#define PIN_USART1_RXD {gpioPortA, 0, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_1_GPIO_LOC == 5)
|
#elif (CONFIG_USART_GECKO_1_LOCATION == 5)
|
||||||
#define PIN_USART1_TXD {gpioPortC, 1, gpioModePushPull, 1}
|
#define PIN_USART1_TXD {gpioPortC, 1, gpioModePushPull, 1}
|
||||||
#define PIN_USART1_RXD {gpioPortC, 2, gpioModeInput, 1}
|
#define PIN_USART1_RXD {gpioPortC, 2, gpioModeInput, 1}
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -7,10 +7,57 @@
|
||||||
/* SoC level DTS fixup file */
|
/* SoC level DTS fixup file */
|
||||||
|
|
||||||
#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
|
#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
|
||||||
#define CONFIG_UART_GECKO_0_NAME SILABS_EFM32_USART_4000C000_LABEL
|
|
||||||
|
|
||||||
#define CONFIG_UART_GECKO_0_BAUD_RATE SILABS_EFM32_USART_4000C000_CURRENT_SPEED
|
#define CONFIG_USART_GECKO_0_BASE_ADDRESS SILABS_GECKO_USART_4000C000_BASE_ADDRESS
|
||||||
#define CONFIG_UART_GECKO_0_IRQ_PRI SILABS_EFM32_USART_4000C000_IRQ_0_PRIORITY
|
#define CONFIG_USART_GECKO_0_CURRENT_SPEED SILABS_GECKO_USART_4000C000_CURRENT_SPEED
|
||||||
|
#define CONFIG_USART_GECKO_0_IRQ_RX SILABS_GECKO_USART_4000C000_IRQ_0
|
||||||
|
#define CONFIG_USART_GECKO_0_IRQ_RX_PRIORITY SILABS_GECKO_USART_4000C000_IRQ_0_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_0_IRQ_TX SILABS_GECKO_USART_4000C000_IRQ_1
|
||||||
|
#define CONFIG_USART_GECKO_0_IRQ_TX_PRIORITY SILABS_GECKO_USART_4000C000_IRQ_1_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_0_LABEL SILABS_GECKO_USART_4000C000_LABEL
|
||||||
|
#define CONFIG_USART_GECKO_0_LOCATION SILABS_GECKO_USART_4000C000_LOCATION
|
||||||
|
#define CONFIG_USART_GECKO_0_SIZE SILABS_GECKO_USART_4000C000_SIZE
|
||||||
|
|
||||||
|
#define CONFIG_USART_GECKO_1_BASE_ADDRESS SILABS_GECKO_USART_4000C400_BASE_ADDRESS
|
||||||
|
#define CONFIG_USART_GECKO_1_CURRENT_SPEED SILABS_GECKO_USART_4000C400_CURRENT_SPEED
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_RX SILABS_GECKO_USART_4000C400_IRQ_0
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_RX_PRIORITY SILABS_GECKO_USART_4000C400_IRQ_0_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_TX SILABS_GECKO_USART_4000C400_IRQ_1
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_TX_PRIORITY SILABS_GECKO_USART_4000C400_IRQ_1_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_1_LABEL SILABS_GECKO_USART_4000C400_LABEL
|
||||||
|
#define CONFIG_USART_GECKO_1_LOCATION SILABS_GECKO_USART_4000C400_LOCATION
|
||||||
|
#define CONFIG_USART_GECKO_1_SIZE SILABS_GECKO_USART_4000C400_SIZE
|
||||||
|
|
||||||
|
#define CONFIG_USART_GECKO_2_BASE_ADDRESS SILABS_GECKO_USART_4000C800_BASE_ADDRESS
|
||||||
|
#define CONFIG_USART_GECKO_2_CURRENT_SPEED SILABS_GECKO_USART_4000C800_CURRENT_SPEED
|
||||||
|
#define CONFIG_USART_GECKO_2_IRQ_RX SILABS_GECKO_USART_4000C800_IRQ_0
|
||||||
|
#define CONFIG_USART_GECKO_2_IRQ_RX_PRIORITY SILABS_GECKO_USART_4000C800_IRQ_0_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_2_IRQ_TX SILABS_GECKO_USART_4000C800_IRQ_1
|
||||||
|
#define CONFIG_USART_GECKO_2_IRQ_TX_PRIORITY SILABS_GECKO_USART_4000C800_IRQ_1_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_2_LABEL SILABS_GECKO_USART_4000C800_LABEL
|
||||||
|
#define CONFIG_USART_GECKO_2_LOCATION SILABS_GECKO_USART_4000C800_LOCATION
|
||||||
|
#define CONFIG_USART_GECKO_2_SIZE SILABS_GECKO_USART_4000C800_SIZE
|
||||||
|
|
||||||
|
#define CONFIG_UART_GECKO_0_BASE_ADDRESS SILABS_GECKO_UART_4000E000_BASE_ADDRESS
|
||||||
|
#define CONFIG_UART_GECKO_0_CURRENT_SPEED SILABS_GECKO_UART_4000E000_CURRENT_SPEED
|
||||||
|
#define CONFIG_UART_GECKO_0_IRQ_RX SILABS_GECKO_UART_4000E000_IRQ_0
|
||||||
|
#define CONFIG_UART_GECKO_0_IRQ_RX_PRIORITY SILABS_GECKO_UART_4000E000_IRQ_0_PRIORITY
|
||||||
|
#define CONFIG_UART_GECKO_0_IRQ_TX SILABS_GECKO_UART_4000E000_IRQ_1
|
||||||
|
#define CONFIG_UART_GECKO_0_IRQ_TX_PRIORITY SILABS_GECKO_UART_4000E000_IRQ_1_PRIORITY
|
||||||
|
#define CONFIG_UART_GECKO_0_LABEL SILABS_GECKO_UART_4000E000_LABEL
|
||||||
|
#define CONFIG_UART_GECKO_0_LOCATION SILABS_GECKO_UART_4000E000_LOCATION
|
||||||
|
#define CONFIG_UART_GECKO_0_SIZE SILABS_GECKO_UART_4000E000_SIZE
|
||||||
|
|
||||||
|
#define CONFIG_UART_GECKO_1_BASE_ADDRESS SILABS_GECKO_UART_4000E400_BASE_ADDRESS
|
||||||
|
#define CONFIG_UART_GECKO_1_CURRENT_SPEED SILABS_GECKO_UART_4000E400_CURRENT_SPEED
|
||||||
|
#define CONFIG_UART_GECKO_1_IRQ_RX SILABS_GECKO_UART_4000E400_IRQ_0
|
||||||
|
#define CONFIG_UART_GECKO_1_IRQ_RX_PRIORITY SILABS_GECKO_UART_4000E400_IRQ_0_PRIORITY
|
||||||
|
#define CONFIG_UART_GECKO_1_IRQ_TX SILABS_GECKO_UART_4000E400_IRQ_1
|
||||||
|
#define CONFIG_UART_GECKO_1_IRQ_TX_PRIORITY SILABS_GECKO_UART_4000E400_IRQ_1_PRIORITY
|
||||||
|
#define CONFIG_UART_GECKO_1_LABEL SILABS_GECKO_UART_4000E400_LABEL
|
||||||
|
#define CONFIG_UART_GECKO_1_LOCATION SILABS_GECKO_UART_4000E400_LOCATION
|
||||||
|
#define CONFIG_UART_GECKO_1_SIZE SILABS_GECKO_UART_4000E400_SIZE
|
||||||
|
|
||||||
|
|
||||||
#define CONFIG_GPIO_GECKO_COMMON_NAME SILABS_EFM32_GPIO_40006100_LABEL
|
#define CONFIG_GPIO_GECKO_COMMON_NAME SILABS_EFM32_GPIO_40006100_LABEL
|
||||||
#define CONFIG_GPIO_GECKO_COMMON_EVEN_IRQ SILABS_EFM32_GPIO_40006100_IRQ_GPIO_EVEN
|
#define CONFIG_GPIO_GECKO_COMMON_EVEN_IRQ SILABS_EFM32_GPIO_40006100_IRQ_GPIO_EVEN
|
||||||
|
|
|
@ -18,13 +18,13 @@
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_PART_NUMBER_EFM32WG990F256
|
#ifdef CONFIG_SOC_PART_NUMBER_EFM32WG990F256
|
||||||
#ifdef CONFIG_UART_GECKO_0
|
#ifdef CONFIG_UART_GECKO_0
|
||||||
#if (CONFIG_UART_GECKO_0_GPIO_LOC == 0)
|
#if (CONFIG_UART_GECKO_0_LOCATION == 0)
|
||||||
#define PIN_UART0_TXD {gpioPortF, 6, gpioModePushPull, 1}
|
#define PIN_UART0_TXD {gpioPortF, 6, gpioModePushPull, 1}
|
||||||
#define PIN_UART0_RXD {gpioPortF, 7, gpioModeInput, 1}
|
#define PIN_UART0_RXD {gpioPortF, 7, gpioModeInput, 1}
|
||||||
#elif (CONFIG_UART_GECKO_0_GPIO_LOC == 1)
|
#elif (CONFIG_UART_GECKO_0_LOCATION == 1)
|
||||||
#define PIN_UART0_TXD {gpioPortE, 0, gpioModePushPull, 1}
|
#define PIN_UART0_TXD {gpioPortE, 0, gpioModePushPull, 1}
|
||||||
#define PIN_UART0_RXD {gpioPortE, 1, gpioModeInput, 1}
|
#define PIN_UART0_RXD {gpioPortE, 1, gpioModeInput, 1}
|
||||||
#elif (CONFIG_UART_GECKO_0_GPIO_LOC == 2)
|
#elif (CONFIG_UART_GECKO_0_LOCATION == 2)
|
||||||
#define PIN_UART0_TXD {gpioPortA, 3, gpioModePushPull, 1}
|
#define PIN_UART0_TXD {gpioPortA, 3, gpioModePushPull, 1}
|
||||||
#define PIN_UART0_RXD {gpioPortA, 4, gpioModeInput, 1}
|
#define PIN_UART0_RXD {gpioPortA, 4, gpioModeInput, 1}
|
||||||
#else
|
#else
|
||||||
|
@ -33,15 +33,15 @@
|
||||||
#endif /* CONFIG_UART_GECKO_0 */
|
#endif /* CONFIG_UART_GECKO_0 */
|
||||||
|
|
||||||
#ifdef CONFIG_UART_GECKO_1
|
#ifdef CONFIG_UART_GECKO_1
|
||||||
#if (CONFIG_UART_GECKO_1_GPIO_LOC == 0)
|
#if (CONFIG_UART_GECKO_1_LOCATION == 0)
|
||||||
#error ("Serial Driver for Gecko MCUs not implemented for this location index")
|
#error ("Serial Driver for Gecko MCUs not implemented for this location index")
|
||||||
#elif (CONFIG_UART_GECKO_1_GPIO_LOC == 1)
|
#elif (CONFIG_UART_GECKO_1_LOCATION == 1)
|
||||||
#define PIN_UART1_TXD {gpioPortF, 10, gpioModePushPull, 1}
|
#define PIN_UART1_TXD {gpioPortF, 10, gpioModePushPull, 1}
|
||||||
#define PIN_UART1_RXD {gpioPortF, 11, gpioModeInput, 1}
|
#define PIN_UART1_RXD {gpioPortF, 11, gpioModeInput, 1}
|
||||||
#elif (CONFIG_UART_GECKO_1_GPIO_LOC == 2)
|
#elif (CONFIG_UART_GECKO_1_LOCATION == 2)
|
||||||
#define PIN_UART1_TXD {gpioPortB, 9, gpioModePushPull, 1}
|
#define PIN_UART1_TXD {gpioPortB, 9, gpioModePushPull, 1}
|
||||||
#define PIN_UART1_RXD {gpioPortB, 10, gpioModeInput, 1}
|
#define PIN_UART1_RXD {gpioPortB, 10, gpioModeInput, 1}
|
||||||
#elif (CONFIG_UART_GECKO_1_GPIO_LOC == 3)
|
#elif (CONFIG_UART_GECKO_1_LOCATION == 3)
|
||||||
#define PIN_UART1_TXD {gpioPortE, 2, gpioModePushPull, 1}
|
#define PIN_UART1_TXD {gpioPortE, 2, gpioModePushPull, 1}
|
||||||
#define PIN_UART1_RXD {gpioPortE, 3, gpioModeInput, 1}
|
#define PIN_UART1_RXD {gpioPortE, 3, gpioModeInput, 1}
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -7,10 +7,26 @@
|
||||||
/* SoC level DTS fixup file */
|
/* SoC level DTS fixup file */
|
||||||
|
|
||||||
#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
|
#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
|
||||||
#define CONFIG_USART_GECKO_0_NAME SILABS_EFM32_USART_40010000_LABEL
|
|
||||||
|
|
||||||
#define CONFIG_USART_GECKO_0_BAUD_RATE SILABS_EFM32_USART_40010000_CURRENT_SPEED
|
#define CONFIG_USART_GECKO_0_BASE_ADDRESS SILABS_GECKO_USART_40010000_BASE_ADDRESS
|
||||||
#define CONFIG_USART_GECKO_0_IRQ_PRI SILABS_EFM32_USART_40010000_IRQ_0_PRIORITY
|
#define CONFIG_USART_GECKO_0_CURRENT_SPEED SILABS_GECKO_USART_40010000_CURRENT_SPEED
|
||||||
|
#define CONFIG_USART_GECKO_0_IRQ_RX SILABS_GECKO_USART_40010000_IRQ_0
|
||||||
|
#define CONFIG_USART_GECKO_0_IRQ_RX_PRIORITY SILABS_GECKO_USART_40010000_IRQ_0_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_0_IRQ_TX SILABS_GECKO_USART_40010000_IRQ_1
|
||||||
|
#define CONFIG_USART_GECKO_0_IRQ_TX_PRIORITY SILABS_GECKO_USART_40010000_IRQ_1_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_0_LABEL SILABS_GECKO_USART_40010000_LABEL
|
||||||
|
#define CONFIG_USART_GECKO_0_LOCATION SILABS_GECKO_USART_40010000_LOCATION
|
||||||
|
#define CONFIG_USART_GECKO_0_SIZE SILABS_GECKO_USART_40010000_SIZE
|
||||||
|
|
||||||
|
#define CONFIG_USART_GECKO_1_BASE_ADDRESS SILABS_GECKO_USART_40010400_BASE_ADDRESS
|
||||||
|
#define CONFIG_USART_GECKO_1_CURRENT_SPEED SILABS_GECKO_USART_40010400_CURRENT_SPEED
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_RX SILABS_GECKO_USART_40010400_IRQ_0
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_RX_PRIORITY SILABS_GECKO_USART_40010400_IRQ_0_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_TX SILABS_GECKO_USART_40010400_IRQ_1
|
||||||
|
#define CONFIG_USART_GECKO_1_IRQ_TX_PRIORITY SILABS_GECKO_USART_40010400_IRQ_1_PRIORITY
|
||||||
|
#define CONFIG_USART_GECKO_1_LABEL SILABS_GECKO_USART_40010400_LABEL
|
||||||
|
#define CONFIG_USART_GECKO_1_LOCATION SILABS_GECKO_USART_40010400_LOCATION
|
||||||
|
#define CONFIG_USART_GECKO_1_SIZE SILABS_GECKO_USART_40010400_SIZE
|
||||||
|
|
||||||
#define CONFIG_GPIO_GECKO_COMMON_NAME SILABS_EFR32XG1_GPIO_4000A400_LABEL
|
#define CONFIG_GPIO_GECKO_COMMON_NAME SILABS_EFR32XG1_GPIO_4000A400_LABEL
|
||||||
#define CONFIG_GPIO_GECKO_COMMON_EVEN_IRQ SILABS_EFR32XG1_GPIO_4000A400_IRQ_GPIO_EVEN
|
#define CONFIG_GPIO_GECKO_COMMON_EVEN_IRQ SILABS_EFR32XG1_GPIO_4000A400_IRQ_GPIO_EVEN
|
||||||
|
|
|
@ -18,13 +18,13 @@
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_PART_NUMBER_EFR32FG1P133F256GM48
|
#ifdef CONFIG_SOC_PART_NUMBER_EFR32FG1P133F256GM48
|
||||||
#ifdef CONFIG_USART_GECKO_0
|
#ifdef CONFIG_USART_GECKO_0
|
||||||
#if (CONFIG_USART_GECKO_0_GPIO_LOC == 0)
|
#if (CONFIG_USART_GECKO_0_LOCATION == 0)
|
||||||
#define PIN_USART0_TXD {gpioPortA, 0, gpioModePushPull, 1}
|
#define PIN_USART0_TXD {gpioPortA, 0, gpioModePushPull, 1}
|
||||||
#define PIN_USART0_RXD {gpioPortA, 1, gpioModeInput, 1}
|
#define PIN_USART0_RXD {gpioPortA, 1, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_0_GPIO_LOC == 1)
|
#elif (CONFIG_USART_GECKO_0_LOCATION == 1)
|
||||||
#define PIN_USART0_TXD {gpioPortA, 1, gpioModePushPull, 1}
|
#define PIN_USART0_TXD {gpioPortA, 1, gpioModePushPull, 1}
|
||||||
#define PIN_USART0_RXD {gpioPortA, 2, gpioModeInput, 1}
|
#define PIN_USART0_RXD {gpioPortA, 2, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_0_GPIO_LOC == 2)
|
#elif (CONFIG_USART_GECKO_0_LOCATION == 2)
|
||||||
#define PIN_USART0_TXD {gpioPortA, 2, gpioModePushPull, 1}
|
#define PIN_USART0_TXD {gpioPortA, 2, gpioModePushPull, 1}
|
||||||
#define PIN_USART0_RXD {gpioPortA, 3, gpioModeInput, 1}
|
#define PIN_USART0_RXD {gpioPortA, 3, gpioModeInput, 1}
|
||||||
#else
|
#else
|
||||||
|
@ -33,15 +33,15 @@
|
||||||
#endif /* CONFIG_USART_GECKO_0 */
|
#endif /* CONFIG_USART_GECKO_0 */
|
||||||
|
|
||||||
#ifdef CONFIG_USART_GECKO_1
|
#ifdef CONFIG_USART_GECKO_1
|
||||||
#if (CONFIG_USART_GECKO_1_GPIO_LOC == 0)
|
#if (CONFIG_USART_GECKO_1_LOCATION == 0)
|
||||||
#error ("Serial Driver for Gecko MCUs not implemented for this location index")
|
#error ("Serial Driver for Gecko MCUs not implemented for this location index")
|
||||||
#elif (CONFIG_USART_GECKO_1_GPIO_LOC == 1)
|
#elif (CONFIG_USART_GECKO_1_LOCATION == 1)
|
||||||
#define PIN_USART1_TXD {gpioPortF, 10, gpioModePushPull, 1}
|
#define PIN_USART1_TXD {gpioPortF, 10, gpioModePushPull, 1}
|
||||||
#define PIN_USART1_RXD {gpioPortF, 11, gpioModeInput, 1}
|
#define PIN_USART1_RXD {gpioPortF, 11, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_1_GPIO_LOC == 2)
|
#elif (CONFIG_USART_GECKO_1_LOCATION == 2)
|
||||||
#define PIN_USART1_TXD {gpioPortB, 9, gpioModePushPull, 1}
|
#define PIN_USART1_TXD {gpioPortB, 9, gpioModePushPull, 1}
|
||||||
#define PIN_USART1_RXD {gpioPortB, 10, gpioModeInput, 1}
|
#define PIN_USART1_RXD {gpioPortB, 10, gpioModeInput, 1}
|
||||||
#elif (CONFIG_USART_GECKO_1_GPIO_LOC == 3)
|
#elif (CONFIG_USART_GECKO_1_LOCATION == 3)
|
||||||
#define PIN_USART1_TXD {gpioPortE, 2, gpioModePushPull, 1}
|
#define PIN_USART1_TXD {gpioPortE, 2, gpioModePushPull, 1}
|
||||||
#define PIN_USART1_RXD {gpioPortE, 3, gpioModeInput, 1}
|
#define PIN_USART1_RXD {gpioPortE, 3, gpioModeInput, 1}
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue