grlib: make apbuart driver independent of bsp

Update #3678.
This commit is contained in:
Jiri Gaisler
2019-01-18 11:24:18 +01:00
committed by Sebastian Huber
parent 7eb606d393
commit 411c29735d
3 changed files with 17 additions and 17 deletions

View File

@@ -37,6 +37,7 @@ extern "C" {
#define APBUART_CTRL_EC 0x100
#define APBUART_CTRL_TF 0x200
#define APBUART_CTRL_RF 0x400
#define APBUART_CTRL_DB 0x800
#define APBUART_CTRL_BI 0x1000
#define APBUART_CTRL_DI 0x2000
#define APBUART_CTRL_FA 0x80000000

View File

@@ -260,10 +260,10 @@ int apbuart_init1(struct drvmgr_dev *dev)
db = 0;
#ifdef LEON3
if (priv->regs == leon3_debug_uart) {
db = priv->regs->ctrl & (LEON_REG_UART_CTRL_RE |
LEON_REG_UART_CTRL_TE |
LEON_REG_UART_CTRL_PE |
LEON_REG_UART_CTRL_PS);
db = priv->regs->ctrl & (APBUART_CTRL_RE |
APBUART_CTRL_TE |
APBUART_CTRL_PE |
APBUART_CTRL_PS);
}
#endif
/* Let UART debug tunnelling be untouched if Flow-control is set.
@@ -273,9 +273,9 @@ int apbuart_init1(struct drvmgr_dev *dev)
* guess that we are debugging if FL is already set, the debugger set
* either LB or DB depending on UART capabilities.
*/
if (priv->regs->ctrl & LEON_REG_UART_CTRL_FL) {
db |= priv->regs->ctrl & (LEON_REG_UART_CTRL_DB |
LEON_REG_UART_CTRL_LB | LEON_REG_UART_CTRL_FL);
if (priv->regs->ctrl & APBUART_CTRL_FL) {
db |= priv->regs->ctrl & (APBUART_CTRL_DB |
APBUART_CTRL_LB | APBUART_CTRL_FL);
}
priv->regs->ctrl = db;
@@ -561,26 +561,26 @@ static bool set_attributes(
switch(t->c_cflag & (PARENB|PARODD)){
case (PARENB|PARODD):
/* Odd parity */
ctrl |= LEON_REG_UART_CTRL_PE|LEON_REG_UART_CTRL_PS;
ctrl |= APBUART_CTRL_PE|APBUART_CTRL_PS;
break;
case PARENB:
/* Even parity */
ctrl &= ~LEON_REG_UART_CTRL_PS;
ctrl |= LEON_REG_UART_CTRL_PE;
ctrl &= ~APBUART_CTRL_PS;
ctrl |= APBUART_CTRL_PE;
break;
default:
case 0:
case PARODD:
/* No Parity */
ctrl &= ~(LEON_REG_UART_CTRL_PS|LEON_REG_UART_CTRL_PE);
ctrl &= ~(APBUART_CTRL_PS|APBUART_CTRL_PE);
}
if (!(t->c_cflag & CLOCAL))
ctrl |= LEON_REG_UART_CTRL_FL;
ctrl |= APBUART_CTRL_FL;
else
ctrl &= ~LEON_REG_UART_CTRL_FL;
ctrl &= ~APBUART_CTRL_FL;
/* Update new settings */
uart->regs->ctrl = ctrl;
@@ -618,14 +618,14 @@ static void get_attributes(
/* Read out current parity */
ctrl = uart->regs->ctrl;
if (ctrl & LEON_REG_UART_CTRL_PE) {
if (ctrl & LEON_REG_UART_CTRL_PS)
if (ctrl & APBUART_CTRL_PE) {
if (ctrl & APBUART_CTRL_PS)
t->c_cflag |= PARENB|PARODD; /* Odd parity */
else
t->c_cflag |= PARENB; /* Even parity */
}
if ((ctrl & LEON_REG_UART_CTRL_FL) == 0)
if ((ctrl & APBUART_CTRL_FL) == 0)
t->c_cflag |= CLOCAL;
rtems_termios_set_best_baud(t, apbuart_get_baud(uart));

View File

@@ -266,7 +266,6 @@ typedef struct {
#define LEON_REG_UART_CTRL_PE 0x00000020 /* Parity enable */
#define LEON_REG_UART_CTRL_FL 0x00000040 /* Flow control enable */
#define LEON_REG_UART_CTRL_LB 0x00000080 /* Loop Back enable */
#define LEON_REG_UART_CTRL_DB 0x00000800 /* Debug FIFO enable */
#ifndef ASM