arch/xmc4 uart driver fix
This commit is contained in:
parent
008803865f
commit
50fadb93f2
@ -199,11 +199,14 @@ endmenu
|
||||
menu "XMC4xxx USIC Configuration"
|
||||
depends on XMC4_USIC
|
||||
|
||||
choice
|
||||
prompt "USIC0 Channel 0 Configuration"
|
||||
default XMC4_USIC0_CHAN0_ISUART
|
||||
menu "USIC0 Channel 0 Configuration"
|
||||
depends on XMC4_USIC
|
||||
depends on XMC4_USIC0
|
||||
|
||||
choice
|
||||
prompt "Protocol"
|
||||
default XMC4_USIC0_CHAN0_ISUART
|
||||
|
||||
config XMC4_USIC0_CHAN0_NONE
|
||||
bool "Not used"
|
||||
---help---
|
||||
@ -244,12 +247,36 @@ config XMC4_USIC0_CHAN0_ISI2S
|
||||
---help---
|
||||
Configure USIC0 Channel 0 for I2S audio
|
||||
|
||||
endchoice # USIC0 Channel 0 Configuration
|
||||
endchoice # USIC0 Channel 0 Protocol
|
||||
|
||||
config XMC4_USIC0_CHAN0_TX_BUFFER_SIZE
|
||||
int "Tx Fifo Buffer Size"
|
||||
depends on XMC4_USIC0_CHAN0_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
config XMC4_USIC0_CHAN0_RX_BUFFER_SIZE
|
||||
int "Rx Fifo Buffer Size"
|
||||
depends on XMC4_USIC0_CHAN0_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
endmenu # USIC0 Channel 0 Configuration
|
||||
|
||||
|
||||
menu "USIC0 Channel 1 Configuration"
|
||||
depends on XMC4_USIC
|
||||
depends on XMC4_USIC0
|
||||
|
||||
choice
|
||||
prompt "USIC0 Channel 1 Configuration"
|
||||
prompt "Protocol"
|
||||
default XMC4_USIC0_CHAN1_ISUART
|
||||
depends on XMC4_USIC0
|
||||
|
||||
config XMC4_USIC0_CHAN1_NONE
|
||||
bool "Not used"
|
||||
@ -291,12 +318,35 @@ config XMC4_USIC0_CHAN1_ISI2S
|
||||
---help---
|
||||
Configure USIC0 Channel 1 for I2S audio
|
||||
|
||||
endchoice # USIC0 Channel 1 Configuration
|
||||
endchoice # USIC0 Channel 1 Protocol
|
||||
|
||||
config XMC4_USIC0_CHAN1_TX_BUFFER_SIZE
|
||||
int "Tx Fifo Buffer Size"
|
||||
depends on XMC4_USIC0_CHAN1_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
config XMC4_USIC0_CHAN1_RX_BUFFER_SIZE
|
||||
int "Rx Fifo Buffer Size"
|
||||
depends on XMC4_USIC0_CHAN1_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
endmenu # USIC0 Channel 1 Configuration
|
||||
|
||||
menu "USIC1 Channel 0 Configuration"
|
||||
depends on XMC4_USIC
|
||||
depends on XMC4_USIC1
|
||||
|
||||
choice
|
||||
prompt "USIC1 Channel 0 Configuration"
|
||||
prompt "Protocol"
|
||||
default XMC4_USIC1_CHAN0_ISUART
|
||||
depends on XMC4_USIC1
|
||||
|
||||
config XMC4_USIC1_CHAN0_NONE
|
||||
bool "Not used"
|
||||
@ -338,12 +388,35 @@ config XMC4_USIC1_CHAN0_ISI2S
|
||||
---help---
|
||||
Configure USIC1 Channel 0 for I2S audio
|
||||
|
||||
endchoice # USIC1 Channel 0 Configuration
|
||||
endchoice # USIC1 Channel 0 Protocol
|
||||
|
||||
config XMC4_USIC1_CHAN0_TX_BUFFER_SIZE
|
||||
int "Tx Fifo Buffer Size"
|
||||
depends on XMC4_USIC1_CHAN0_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
config XMC4_USIC1_CHAN0_RX_BUFFER_SIZE
|
||||
int "Rx Fifo Buffer Size"
|
||||
depends on XMC4_USIC1_CHAN0_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
endmenu # USIC1 Channel 0 Configuration
|
||||
|
||||
menu "USIC1 Channel 1 Configuration"
|
||||
depends on XMC4_USIC
|
||||
depends on XMC4_USIC1
|
||||
|
||||
choice
|
||||
prompt "USIC1 Channel 1 Configuration"
|
||||
prompt "Protocol"
|
||||
default XMC4_USIC1_CHAN1_ISUART
|
||||
depends on XMC4_USIC1
|
||||
|
||||
config XMC4_USIC1_CHAN1_NONE
|
||||
bool "Not used"
|
||||
@ -385,12 +458,35 @@ config XMC4_USIC1_CHAN1_ISI2S
|
||||
---help---
|
||||
Configure USIC1 Channel 1 for I2S audio
|
||||
|
||||
endchoice # USIC1 Channel 1 Configuration
|
||||
endchoice # USIC1 Channel 1 Protocol
|
||||
|
||||
config XMC4_USIC1_CHAN1_TX_BUFFER_SIZE
|
||||
int "Tx Fifo Buffer Size"
|
||||
depends on XMC4_USIC1_CHAN1_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
config XMC4_USIC1_CHAN1_RX_BUFFER_SIZE
|
||||
int "Rx Fifo Buffer Size"
|
||||
depends on XMC4_USIC1_CHAN1_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
endmenu # USIC1 Channel 1 Configuration
|
||||
|
||||
menu "USIC2 Channel 0 Configuration"
|
||||
depends on XMC4_USIC
|
||||
depends on XMC4_USIC2
|
||||
|
||||
choice
|
||||
prompt "USIC2 Channel 0 Configuration"
|
||||
prompt "Protocol"
|
||||
default XMC4_USIC2_CHAN0_ISUART
|
||||
depends on XMC4_USIC2
|
||||
|
||||
config XMC4_USIC2_CHAN0_NONE
|
||||
bool "Not used"
|
||||
@ -432,12 +528,35 @@ config XMC4_USIC2_CHAN0_ISI2S
|
||||
---help---
|
||||
Configure USIC2 Channel 0 for I2S audio
|
||||
|
||||
endchoice # USIC2 Channel 0 Configuration
|
||||
endchoice # USIC2 Channel 0 Protocol
|
||||
|
||||
config XMC4_USIC2_CHAN0_TX_BUFFER_SIZE
|
||||
int "Tx Fifo Buffer Size"
|
||||
depends on XMC4_USIC2_CHAN0_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
config XMC4_USIC2_CHAN0_RX_BUFFER_SIZE
|
||||
int "Rx Fifo Buffer Size"
|
||||
depends on XMC4_USIC2_CHAN0_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
endmenu # USIC2 Channel 0 Configuration
|
||||
|
||||
menu "USIC2 Channel 1 Configuration"
|
||||
depends on XMC4_USIC
|
||||
depends on XMC4_USIC2
|
||||
|
||||
choice
|
||||
prompt "USIC2 Channel 1 Configuration"
|
||||
prompt "Protocol"
|
||||
default XMC4_USIC2_CHAN1_ISUART
|
||||
depends on XMC4_USIC2
|
||||
|
||||
config XMC4_USIC2_CHAN1_NONE
|
||||
bool "Not used"
|
||||
@ -478,6 +597,26 @@ config XMC4_USIC2_CHAN1_ISI2S
|
||||
select XMC4_USCI_I2S
|
||||
---help---
|
||||
Configure USIC2 Channel 1 for I2S audio
|
||||
endchoice # USIC2 Channel 1 Protocol
|
||||
|
||||
config XMC4_USIC2_CHAN1_TX_BUFFER_SIZE
|
||||
int "Tx Fifo Buffer Size"
|
||||
depends on XMC4_USIC2_CHAN1_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
config XMC4_USIC2_CHAN1_RX_BUFFER_SIZE
|
||||
int "Rx Fifo Buffer Size"
|
||||
depends on XMC4_USIC2_CHAN1_ISUART
|
||||
default 16
|
||||
---help---
|
||||
Should be a power of 2 between 2 and 64
|
||||
The sum of Rx and Tx buffers sizes of both
|
||||
channels should be inferior to 64
|
||||
|
||||
endmenu # USIC2 Channel 1 Configuration
|
||||
|
||||
endchoice # USIC2 Channel 1 Configuration
|
||||
endmenu # XMC4xxx USIC Configuration
|
||||
|
@ -57,6 +57,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/lib/math32.h>
|
||||
|
||||
#include "hardware/xmc4_memorymap.h"
|
||||
|
||||
@ -1008,12 +1009,7 @@
|
||||
#define USIC_TBCTR_SIZE_SHIFT (24) /* Bits 24-26: Buffer Size */
|
||||
#define USIC_TBCTR_SIZE_MASK (7 << USIC_TBCTR_SIZE_SHIFT)
|
||||
# define USIC_TBCTR_SIZE_DISABLE (0 << USIC_TBCTR_SIZE_SHIFT) /* FIFO mechanism is disabled */
|
||||
# define USIC_TBCTR_SIZE_2 (1 << USIC_TBCTR_SIZE_SHIFT) /* FIFO buffer contains 2 entries */
|
||||
# define USIC_TBCTR_SIZE_4 (2 << USIC_TBCTR_SIZE_SHIFT) /* FIFO buffer contains 4 entries */
|
||||
# define USIC_TBCTR_SIZE_8 (3 << USIC_TBCTR_SIZE_SHIFT) /* FIFO buffer contains 8 entries */
|
||||
# define USIC_TBCTR_SIZE_16 (4 << USIC_TBCTR_SIZE_SHIFT) /* FIFO buffer contains 16 entries */
|
||||
# define USIC_TBCTR_SIZE_32 (5 << USIC_TBCTR_SIZE_SHIFT) /* FIFO buffer contains 32 entries */
|
||||
# define USIC_TBCTR_SIZE_64 (6 << USIC_TBCTR_SIZE_SHIFT) /* FIFO buffer contains 64 entries */
|
||||
# define USIC_TBCTR_SIZE(n) ((uint32_t)(LOG2_CEIL(n)) << USIC_TBCTR_SIZE_SHIFT)
|
||||
|
||||
#define USIC_TBCTR_LOF (1 << 28) /* Bit 28: Buffer Event on Limit Overflow */
|
||||
#define USIC_TBCTR_STBIEN (1 << 30) /* Bit 30: Standard Transmit Buffer Interrupt Enable */
|
||||
@ -1058,12 +1054,7 @@
|
||||
#define USIC_RBCTR_SIZE_SHIFT (24) /* Bits 24-26: Buffer Size */
|
||||
#define USIC_RBCTR_SIZE_MASK (7 << USIC_RBCTR_SIZE_SHIFT)
|
||||
# define USIC_RBCTR_SIZE_DISABLE (0 << USIC_RBCTR_SIZE_SHIFT) /* FIFO mechanism is disabled */
|
||||
# define USIC_RBCTR_SIZE_2 (1 << USIC_RBCTR_SIZE_SHIFT) /* FIFO buffer contains 2 entries */
|
||||
# define USIC_RBCTR_SIZE_4 (2 << USIC_RBCTR_SIZE_SHIFT) /* FIFO buffer contains 4 entries */
|
||||
# define USIC_RBCTR_SIZE_8 (3 << USIC_RBCTR_SIZE_SHIFT) /* FIFO buffer contains 8 entries */
|
||||
# define USIC_RBCTR_SIZE_16 (4 << USIC_RBCTR_SIZE_SHIFT) /* FIFO buffer contains 16 entries */
|
||||
# define USIC_RBCTR_SIZE_32 (5 << USIC_RBCTR_SIZE_SHIFT) /* FIFO buffer contains 32 entries */
|
||||
# define USIC_RBCTR_SIZE_64 (6 << USIC_RBCTR_SIZE_SHIFT) /* FIFO buffer contains 64 entries */
|
||||
# define USIC_RBCTR_SIZE(n) ((uint32_t)(LOG2_CEIL(n)) << USIC_RBCTR_SIZE_SHIFT)
|
||||
|
||||
#define USIC_RBCTR_RNM (1 << 27) /* Bit 27: Receiver Notification Mode */
|
||||
#define USIC_RBCTR_LOF (1 << 28) /* Bit 28: Buffer Event on Limit Overflow */
|
||||
|
@ -23,6 +23,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/lib/math32.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <errno.h>
|
||||
@ -109,6 +110,129 @@
|
||||
|
||||
#define UART_OVERSAMPLING 16
|
||||
|
||||
#if defined(CONFIG_XMC4_USIC0_CHAN0_ISUART)
|
||||
#if CONFIG_XMC4_USIC0_CHAN0_TX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC0_CHAN0_TX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC0_CHAN0_TX_BUFFER_SIZE)
|
||||
# error Tx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC0_CHAN0_RX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC0_CHAN0_RX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC0_CHAN0_RX_BUFFER_SIZE)
|
||||
# error Rx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_XMC4_USIC0_CHAN1_ISUART)
|
||||
#if CONFIG_XMC4_USIC0_CHAN1_TX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC0_CHAN1_TX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC0_CHAN1_TX_BUFFER_SIZE)
|
||||
# error Tx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC0_CHAN1_RX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC0_CHAN1_RX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC0_CHAN1_RX_BUFFER_SIZE)
|
||||
# error Rx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_XMC4_USIC0_CHAN0_ISUART) && defined(CONFIG_XMC4_USIC0_CHAN1_ISUART)
|
||||
#if CONFIG_XMC4_USIC0_CHAN0_TX_BUFFER_SIZE + CONFIG_XMC4_USIC0_CHAN0_RX_BUFFER_SIZE + \
|
||||
CONFIG_XMC4_USIC0_CHAN1_TX_BUFFER_SIZE + CONFIG_XMC4_USIC0_CHAN1_RX_BUFFER_SIZE > 64
|
||||
# error The sum of Rx and Tx Buffers sizes should be inferior to 64
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_XMC4_USIC1_CHAN0_ISUART)
|
||||
#if CONFIG_XMC4_USIC1_CHAN0_TX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC1_CHAN0_TX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC1_CHAN0_TX_BUFFER_SIZE)
|
||||
# error Tx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC1_CHAN0_RX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC1_CHAN0_RX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC1_CHAN0_RX_BUFFER_SIZE)
|
||||
# error Rx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC1_CHAN0_TX_BUFFER_SIZE + CONFIG_XMC4_USIC1_CHAN0_RX_BUFFER_SIZE > 64
|
||||
# error The sum of Rx and Tx Buffer sizes should be inferior to 64
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_XMC4_USIC1_CHAN1_ISUART)
|
||||
#if CONFIG_XMC4_USIC1_CHAN1_TX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC1_CHAN1_TX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC1_CHAN1_TX_BUFFER_SIZE)
|
||||
# error Tx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC1_CHAN1_RX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC1_CHAN1_RX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC1_CHAN1_RX_BUFFER_SIZE)
|
||||
# error Rx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC1_CHAN1_TX_BUFFER_SIZE + CONFIG_XMC4_USIC1_CHAN1_RX_BUFFER_SIZE > 64
|
||||
# error The sum of Rx and Tx Buffer sizes should be inferior to 64
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_XMC4_USIC1_CHAN0_ISUART) && defined(CONFIG_XMC4_USIC1_CHAN1_ISUART)
|
||||
#if CONFIG_XMC4_USIC1_CHAN0_TX_BUFFER_SIZE + CONFIG_XMC4_USIC1_CHAN0_RX_BUFFER_SIZE + \
|
||||
CONFIG_XMC4_USIC1_CHAN1_TX_BUFFER_SIZE + CONFIG_XMC4_USIC1_CHAN1_RX_BUFFER_SIZE > 64
|
||||
# error The sum of Rx and Tx Buffers sizes should be inferior to 64
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_XMC4_USIC2_CHAN0_ISUART)
|
||||
#if CONFIG_XMC4_USIC2_CHAN0_TX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC2_CHAN0_TX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC2_CHAN0_TX_BUFFER_SIZE)
|
||||
# error Tx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC2_CHAN0_RX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC2_CHAN0_RX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC2_CHAN0_RX_BUFFER_SIZE)
|
||||
# error Rx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC2_CHAN0_TX_BUFFER_SIZE + CONFIG_XMC4_USIC2_CHAN0_RX_BUFFER_SIZE > 64
|
||||
# error The sum of Rx and Tx Buffer sizes should be inferior to 64
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_XMC4_USIC2_CHAN1_ISUART)
|
||||
#if CONFIG_XMC4_USIC2_CHAN1_TX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC2_CHAN1_TX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC2_CHAN1_TX_BUFFER_SIZE)
|
||||
# error Tx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC2_CHAN1_RX_BUFFER_SIZE < 2 \
|
||||
|| CONFIG_XMC4_USIC2_CHAN1_RX_BUFFER_SIZE > 64 \
|
||||
|| !IS_POWER_OF_2(CONFIG_XMC4_USIC2_CHAN1_RX_BUFFER_SIZE)
|
||||
# error Rx Buffer Size should be a power of 2 between 2 and 64
|
||||
#endif
|
||||
|
||||
#if CONFIG_XMC4_USIC2_CHAN1_TX_BUFFER_SIZE + CONFIG_XMC4_USIC2_CHAN1_RX_BUFFER_SIZE > 64
|
||||
# error The sum of Rx and Tx Buffer sizes should be inferior to 64
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_XMC4_USIC2_CHAN0_ISUART) && defined(CONFIG_XMC4_USIC2_CHAN1_ISUART)
|
||||
#if CONFIG_XMC4_USIC2_CHAN0_TX_BUFFER_SIZE + CONFIG_XMC4_USIC2_CHAN0_RX_BUFFER_SIZE + \
|
||||
CONFIG_XMC4_USIC2_CHAN1_TX_BUFFER_SIZE + CONFIG_XMC4_USIC2_CHAN1_RX_BUFFER_SIZE > 64
|
||||
# error The sum of Rx and Tx Buffers sizes should be inferior to 64
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
@ -357,21 +481,21 @@ int xmc4_uart_configure(enum usic_channel_e channel,
|
||||
|
||||
/* Configure transmit FIFO
|
||||
*
|
||||
* - DPTR = 16
|
||||
* - LIMIT = 1
|
||||
* - STBTEN = 0, the trigger of the standard transmit buffer event is
|
||||
* based on the transition of the fill level from equal to below the
|
||||
* limit, not the fact being below
|
||||
* - SIZE = 16
|
||||
* - LOF = 0, A standard transmit buffer event occurs when the filling
|
||||
* level equals the limit value and gets lower due to transmission of
|
||||
* a data word
|
||||
*/
|
||||
|
||||
regval &= ~(USIC_TBCTR_DPTR_MASK | USIC_TBCTR_LIMIT_MASK |
|
||||
USIC_TBCTR_STBTEN | USIC_TBCTR_SIZE_MASK | USIC_TBCTR_LOF);
|
||||
regval |= (USIC_TBCTR_DPTR(16) | USIC_TBCTR_LIMIT(1) |
|
||||
USIC_TBCTR_SIZE_16);
|
||||
USIC_TBCTR_STBTEN | USIC_TBCTR_SIZE_MASK |
|
||||
USIC_TBCTR_LOF);
|
||||
regval |= (USIC_TBCTR_DPTR(config->startbufferptr)) |
|
||||
USIC_TBCTR_LIMIT(1) |
|
||||
USIC_TBCTR_SIZE(config->txbuffersize);
|
||||
putreg32(regval, base + XMC4_USIC_TBCTR_OFFSET);
|
||||
|
||||
/* Disable the receive FIFO */
|
||||
@ -382,9 +506,6 @@ int xmc4_uart_configure(enum usic_channel_e channel,
|
||||
|
||||
/* Configure receive FIFO.
|
||||
*
|
||||
* - DPTR = 0
|
||||
* - LIMIT = 16
|
||||
* - SIZE = 15
|
||||
* - LOF = 1, A standard receive buffer event occurs when the filling
|
||||
* level equals the limit value and gets bigger due to the reception
|
||||
* of a new data word
|
||||
@ -392,7 +513,9 @@ int xmc4_uart_configure(enum usic_channel_e channel,
|
||||
|
||||
regval &= ~(USIC_RBCTR_DPTR_MASK | USIC_RBCTR_LIMIT_MASK |
|
||||
USIC_RBCTR_SIZE_MASK);
|
||||
regval |= (USIC_RBCTR_DPTR(0) | USIC_RBCTR_LIMIT(15) | USIC_RBCTR_SIZE_16 |
|
||||
regval |= (USIC_RBCTR_DPTR(config->startbufferptr + config->txbuffersize) |
|
||||
USIC_RBCTR_LIMIT(config->rxbuffersize) |
|
||||
USIC_RBCTR_SIZE(config->rxbuffersize) |
|
||||
USIC_RBCTR_LOF);
|
||||
putreg32(regval, base + XMC4_USIC_RBCTR_OFFSET);
|
||||
|
||||
|
@ -46,6 +46,9 @@ struct uart_config_s
|
||||
uint8_t parity; /* Parity selection: 0=none, 1=odd, 2=even */
|
||||
uint8_t nbits; /* Number of bits per word */
|
||||
bool stop2; /* true=2 stop bits; false=1 stop bit */
|
||||
uint8_t startbufferptr; /* Hardware Tx buffer start pointer */
|
||||
uint8_t txbuffersize; /* Hardware Tx Buffer Size */
|
||||
uint8_t rxbuffersize; /* Hardware Rx Buffer Size */
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -320,6 +320,9 @@ static struct xmc4_dev_s g_uart0priv =
|
||||
.parity = CONFIG_UART0_PARITY,
|
||||
.nbits = CONFIG_UART0_BITS,
|
||||
.stop2 = CONFIG_UART0_2STOP,
|
||||
.startbufferptr = 0,
|
||||
.txbuffersize = CONFIG_XMC4_USIC0_CHAN0_TX_BUFFER_SIZE,
|
||||
.rxbuffersize = CONFIG_XMC4_USIC0_CHAN0_RX_BUFFER_SIZE,
|
||||
}
|
||||
};
|
||||
|
||||
@ -355,6 +358,10 @@ static struct xmc4_dev_s g_uart1priv =
|
||||
.parity = CONFIG_UART1_PARITY,
|
||||
.nbits = CONFIG_UART1_BITS,
|
||||
.stop2 = CONFIG_UART1_2STOP,
|
||||
.startbufferptr = CONFIG_XMC4_USIC0_CHAN0_TX_BUFFER_SIZE
|
||||
+ CONFIG_XMC4_USIC0_CHAN0_RX_BUFFER_SIZE,
|
||||
.txbuffersize = CONFIG_XMC4_USIC0_CHAN1_TX_BUFFER_SIZE,
|
||||
.rxbuffersize = CONFIG_XMC4_USIC0_CHAN1_RX_BUFFER_SIZE,
|
||||
}
|
||||
};
|
||||
|
||||
@ -390,6 +397,9 @@ static struct xmc4_dev_s g_uart2priv =
|
||||
.parity = CONFIG_UART2_PARITY,
|
||||
.nbits = CONFIG_UART2_BITS,
|
||||
.stop2 = CONFIG_UART2_2STOP,
|
||||
.startbufferptr = 0,
|
||||
.txbuffersize = CONFIG_XMC4_USIC1_CHAN0_TX_BUFFER_SIZE,
|
||||
.rxbuffersize = CONFIG_XMC4_USIC1_CHAN0_RX_BUFFER_SIZE,
|
||||
}
|
||||
};
|
||||
|
||||
@ -425,6 +435,10 @@ static struct xmc4_dev_s g_uart3priv =
|
||||
.parity = CONFIG_UART3_PARITY,
|
||||
.nbits = CONFIG_UART3_BITS,
|
||||
.stop2 = CONFIG_UART3_2STOP,
|
||||
.startbufferptr = CONFIG_XMC4_USIC1_CHAN0_TX_BUFFER_SIZE
|
||||
+ CONFIG_XMC4_USIC1_CHAN0_RX_BUFFER_SIZE,
|
||||
.txbuffersize = CONFIG_XMC4_USIC1_CHAN1_TX_BUFFER_SIZE,
|
||||
.rxbuffersize = CONFIG_XMC4_USIC1_CHAN1_RX_BUFFER_SIZE,
|
||||
}
|
||||
};
|
||||
|
||||
@ -460,6 +474,9 @@ static struct xmc4_dev_s g_uart4priv =
|
||||
.parity = CONFIG_UART4_PARITY,
|
||||
.nbits = CONFIG_UART4_BITS,
|
||||
.stop2 = CONFIG_UART4_2STOP,
|
||||
.startbufferptr = 0,
|
||||
.txbuffersize = CONFIG_XMC4_USIC2_CHAN0_TX_BUFFER_SIZE,
|
||||
.rxbuffersize = CONFIG_XMC4_USIC2_CHAN0_RX_BUFFER_SIZE,
|
||||
}
|
||||
};
|
||||
|
||||
@ -495,6 +512,10 @@ static struct xmc4_dev_s g_uart5priv =
|
||||
.parity = CONFIG_UART5_PARITY,
|
||||
.nbits = CONFIG_UART5_BITS,
|
||||
.stop2 = CONFIG_UART5_2STOP,
|
||||
.startbufferptr = CONFIG_XMC4_USIC2_CHAN0_TX_BUFFER_SIZE
|
||||
+ CONFIG_XMC4_USIC2_CHAN0_RX_BUFFER_SIZE,
|
||||
.txbuffersize = CONFIG_XMC4_USIC2_CHAN1_TX_BUFFER_SIZE,
|
||||
.rxbuffersize = CONFIG_XMC4_USIC2_CHAN1_RX_BUFFER_SIZE,
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user