Revert "arch/arm/src/xmc4: Serial fix... Cannot use SR1 for RXD. It will not work on this hardware. This means that no more than on UART can be configured per USIC."

This reverts commit 88982df09c.
This commit is contained in:
Gregory Nutt 2017-11-25 09:45:12 -06:00
parent 3160613db4
commit 776b65bc90
4 changed files with 35 additions and 36 deletions

View File

@ -132,8 +132,7 @@ endchoice # USIC0 Channel 0 Configuration
choice choice
prompt "USIC0 Channel 1 Configuration" prompt "USIC0 Channel 1 Configuration"
default XMC4_USIC0_CHAN1_ISUART if !XMC4_USIC0_CHAN0_ISUART default XMC4_USIC0_CHAN1_ISUART
default XMC4_USIC0_CHAN1_NONE if XMC4_USIC0_CHAN0_ISUART
depends on XMC4_USIC0 depends on XMC4_USIC0
config XMC4_USIC0_CHAN1_NONE config XMC4_USIC0_CHAN1_NONE
@ -145,7 +144,6 @@ config XMC4_USIC0_CHAN1_ISUART
bool "UART1" bool "UART1"
select UART1_SERIALDRIVER select UART1_SERIALDRIVER
select XMC4_USCI_UART select XMC4_USCI_UART
depends on !XMC4_USIC0_CHAN0_ISUART
---help--- ---help---
Configure USIC0 Channel 1 as a UART Configure USIC0 Channel 1 as a UART
@ -220,8 +218,7 @@ endchoice # USIC1 Channel 0 Configuration
choice choice
prompt "USIC1 Channel 1 Configuration" prompt "USIC1 Channel 1 Configuration"
default XMC4_USIC1_CHAN1_ISUART if !XMC4_USIC1_CHAN0_ISUART default XMC4_USIC1_CHAN1_ISUART
default XMC4_USIC1_CHAN1_NONE if XMC4_USIC1_CHAN0_ISUART
depends on XMC4_USIC1 depends on XMC4_USIC1
config XMC4_USIC1_CHAN1_NONE config XMC4_USIC1_CHAN1_NONE
@ -233,7 +230,6 @@ config XMC4_USIC1_CHAN1_ISUART
bool "UART3" bool "UART3"
select UART3_SERIALDRIVER select UART3_SERIALDRIVER
select XMC4_USCI_UART select XMC4_USCI_UART
depends on !XMC4_USIC1_CHAN0_ISUART
---help--- ---help---
Configure USIC1 Channel 1 as a UART Configure USIC1 Channel 1 as a UART
@ -308,8 +304,7 @@ endchoice # USIC2 Channel 0 Configuration
choice choice
prompt "USIC2 Channel 1 Configuration" prompt "USIC2 Channel 1 Configuration"
default XMC4_USIC2_CHAN1_ISUART if !XMC4_USIC2_CHAN0_ISUART default XMC4_USIC2_CHAN1_ISUART
default XMC4_USIC2_CHAN1_NONE if XMC4_USIC2_CHAN0_ISUART
depends on XMC4_USIC2 depends on XMC4_USIC2
config XMC4_USIC2_CHAN1_NONE config XMC4_USIC2_CHAN1_NONE
@ -321,7 +316,6 @@ config XMC4_USIC2_CHAN1_ISUART
bool "UART5" bool "UART5"
select UART5_SERIALDRIVER select UART5_SERIALDRIVER
select XMC4_USCI_UART select XMC4_USCI_UART
depends on !XMC4_USIC2_CHAN0_ISUART
---help--- ---help---
Configure USIC2 Channel 1 as a UART Configure USIC2 Channel 1 as a UART

View File

@ -205,24 +205,24 @@ void xmc4_lowsetup(void)
(void)xmc4_gpio_config(GPIO_UART0_TXD0); (void)xmc4_gpio_config(GPIO_UART0_TXD0);
#endif #endif
#ifdef HAVE_UART1 #ifdef HAVE_UART1
(void)xmc4_gpio_config(GPIO_UART1_RXD); (void)xmc4_gpio_config(GPIO_UART0_RXD1);
(void)xmc4_gpio_config(GPIO_UART1_TXD); (void)xmc4_gpio_config(GPIO_UART0_TXD1);
#endif #endif
#ifdef HAVE_UART2 #ifdef HAVE_UART2
(void)xmc4_gpio_config(GPIO_UART2_RXD); (void)xmc4_gpio_config(GPIO_UART0_RXD2);
(void)xmc4_gpio_config(GPIO_UART2_TXD); (void)xmc4_gpio_config(GPIO_UART0_TXD2);
#endif #endif
#ifdef HAVE_UART3 #ifdef HAVE_UART3
(void)xmc4_gpio_config(GPIO_UART3_RXD); (void)xmc4_gpio_config(GPIO_UART0_RXD3);
(void)xmc4_gpio_config(GPIO_UART3_TXD); (void)xmc4_gpio_config(GPIO_UART0_TXD3);
#endif #endif
#ifdef HAVE_UART4 #ifdef HAVE_UART4
(void)xmc4_gpio_config(GPIO_UART4_RXD); (void)xmc4_gpio_config(GPIO_UART0_RXD4);
(void)xmc4_gpio_config(GPIO_UART4_TXD); (void)xmc4_gpio_config(GPIO_UART0_TXD4);
#endif #endif
#ifdef HAVE_UART5 #ifdef HAVE_UART5
(void)xmc4_gpio_config(GPIO_UART5_RXD); (void)xmc4_gpio_config(GPIO_UART0_RXD5);
(void)xmc4_gpio_config(GPIO_UART5_TXD); (void)xmc4_gpio_config(GPIO_UART0_TXD5);
#endif #endif
#ifdef HAVE_UART_CONSOLE #ifdef HAVE_UART_CONSOLE
@ -412,18 +412,23 @@ int xmc4_uart_configure(enum usic_channel_e channel,
/* Set service request for UART protocol, receiver, and transmitter events. /* Set service request for UART protocol, receiver, and transmitter events.
* *
* Set channel 0/1 events on sevice request 0. Only SR0 can be used with * Set channel 0 events on sevice request 0
* RXD events. This precludes use of Channel 0 and Channel 1 concurrently * Set channel 1 events on sevice request 1
* for UARTs since both will map to the same interrupt request.
*/ */
regval = getreg32(base + XMC4_USIC_INPR_OFFSET); regval = getreg32(base + XMC4_USIC_INPR_OFFSET);
regval &= ~(USIC_INPR_TBINP_MASK | USIC_INPR_RINP_MASK | regval &= ~(USIC_INPR_TBINP_MASK | USIC_INPR_RINP_MASK | USIC_INPR_PINP_MASK);
USIC_INPR_AINP_MASK | USIC_INPR_PINP_MASK);
regval |= (USIC_INPR_TBINP_SR0 | USIC_INPR_RINP_SR0 |
USIC_INPR_AINP_SR0 | USIC_INPR_PINP_SR0);
putreg32(regval, base + XMC4_USIC_INPR_OFFSET);
if (((unsigned int)channel & 1) != 0)
{
regval |= (USIC_INPR_TBINP_SR1 | USIC_INPR_RINP_SR1 | USIC_INPR_PINP_SR1);
}
else
{
regval |= (USIC_INPR_TBINP_SR0 | USIC_INPR_RINP_SR0 | USIC_INPR_PINP_SR0);
}
putreg32(regval, base + XMC4_USIC_INPR_OFFSET);
return OK; return OK;
} }
#endif #endif

View File

@ -226,9 +226,9 @@
/* Event sets */ /* Event sets */
#ifdef CONFIG_DEBUG_FEATURES #ifdef CONFIG_DEBUG_FEATURES
# define CCR_RX_EVENTS (USIC_CCR_RIEN | USIC_CCR_AIEN | USIC_CCR_DLIEN) # define CCR_RX_EVENTS (USIC_CCR_RIEN | USIC_CCR_DLIEN)
#else #else
# define CCR_RX_EVENTS (USIC_CCR_RIEN | USIC_CCR_AIEN) # define CCR_RX_EVENTS (USIC_CCR_RIEN)
#endif #endif
#define CCR_TX_EVENTS (USIC_CCR_TBIEN) #define CCR_TX_EVENTS (USIC_CCR_TBIEN)
@ -362,7 +362,7 @@ static struct xmc4_dev_s g_uart1priv =
{ {
.uartbase = XMC4_USIC0_CH1_BASE, .uartbase = XMC4_USIC0_CH1_BASE,
.channel = (uint8_t)USIC0_CHAN1, .channel = (uint8_t)USIC0_CHAN1,
.irq = XMC4_IRQ_USIC0_SR0, .irq = XMC4_IRQ_USIC0_SR1,
.config = .config =
{ {
.baud = CONFIG_UART1_BAUD, .baud = CONFIG_UART1_BAUD,
@ -432,7 +432,7 @@ static struct xmc4_dev_s g_uart3priv =
{ {
.uartbase = XMC4_USIC1_CH1_BASE, .uartbase = XMC4_USIC1_CH1_BASE,
.channel = (uint8_t)USIC1_CHAN1, .channel = (uint8_t)USIC1_CHAN1,
.irq = XMC4_IRQ_USIC1_SR0, .irq = XMC4_IRQ_USIC1_SR1,
.config = .config =
{ {
.baud = CONFIG_UART3_BAUD, .baud = CONFIG_UART3_BAUD,
@ -502,7 +502,7 @@ static struct xmc4_dev_s g_uart5priv =
{ {
.uartbase = XMC4_USIC2_CH1_BASE, .uartbase = XMC4_USIC2_CH1_BASE,
.channel = (uint8_t)USIC2_CHAN1, .channel = (uint8_t)USIC2_CHAN1,
.irq = XMC4_IRQ_USIC2_SR0, .irq = XMC4_IRQ_USIC2_SR1,
.config = .config =
{ {
.baud = CONFIG_UART5_BAUD, .baud = CONFIG_UART5_BAUD,

View File

@ -327,8 +327,8 @@
*/ */
#define BOARD_UART0_DX USIC_DXB #define BOARD_UART0_DX USIC_DXB
#define GPIO_UART0_RXD GPIO_U0C0_DX0B #define GPIO_UART0_RXD0 GPIO_U0C0_DX0B
#define GPIO_UART0_TXD (GPIO_U0C0_DOUT0_3 | GPIO_PADA1P_STRONGSOFT | GPIO_OUTPUT_SET) #define GPIO_UART0_TXD0 (GPIO_U0C0_DOUT0_3 | GPIO_PADA1P_STRONGSOFT | GPIO_OUTPUT_SET)
/* USIC1 CH1 is used as UART3 /* USIC1 CH1 is used as UART3
* *
@ -337,8 +337,8 @@
*/ */
#define BOARD_UART3_DX USIC_DXD #define BOARD_UART3_DX USIC_DXD
#define GPIO_UART3_RXD (GPIO_U1C1_DX0D | GPIO_INPUT_PULLUP) #define GPIO_UART0_RXD3 (GPIO_U1C1_DX0D | GPIO_INPUT_PULLUP)
#define GPIO_UART3_TXD (GPIO_U1C1_DOUT0_2 | GPIO_PADA1P_STRONGSOFT | GPIO_OUTPUT_SET) #define GPIO_UART0_TXD3 (GPIO_U1C1_DOUT0_2 | GPIO_PADA1P_STRONGSOFT | GPIO_OUTPUT_SET)
/************************************************************************************ /************************************************************************************
* Public Data * Public Data