[PATCH v4 4/8] grlib: make apbuart driver independent of bsp
Jiri Gaisler
jiri at gaisler.se
Mon Jan 21 15:49:45 UTC 2019
---
bsps/include/grlib/apbuart.h | 1 +
bsps/shared/grlib/uart/apbuart_cons.c | 32 +++++++++++++--------------
2 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/bsps/include/grlib/apbuart.h b/bsps/include/grlib/apbuart.h
index d30ad0bcef..6a89bb949a 100644
--- a/bsps/include/grlib/apbuart.h
+++ b/bsps/include/grlib/apbuart.h
@@ -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
diff --git a/bsps/shared/grlib/uart/apbuart_cons.c b/bsps/shared/grlib/uart/apbuart_cons.c
index 8cd8a1ebf0..ee635e6944 100644
--- a/bsps/shared/grlib/uart/apbuart_cons.c
+++ b/bsps/shared/grlib/uart/apbuart_cons.c
@@ -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));
--
2.17.1
More information about the devel
mailing list