diff options
author | 2017-10-13 11:01:56 +0200 | |
---|---|---|
committer | 2017-10-20 14:20:07 +0200 | |
commit | 53501e0236295149fb984c4dafda2dfc8448ed26 (patch) | |
tree | c04ed13b2bbce87c5a1ebe37c641728cd41f76b1 | |
parent | serial: mvebu-uart: augment the maximum number of ports (diff) | |
download | linux-53501e0236295149fb984c4dafda2dfc8448ed26.tar.gz linux-53501e0236295149fb984c4dafda2dfc8448ed26.tar.bz2 linux-53501e0236295149fb984c4dafda2dfc8448ed26.zip |
serial: mvebu-uart: support extended port registers layout
Define the missing register offsets and bit fields for the extended
UART port. Add a second driver data structure filled with its port data,
selected with the right compatible (marvell,armada-3700-uart-ext).
Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>
Reviewed-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/tty/serial/mvebu-uart.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/tty/serial/mvebu-uart.c b/drivers/tty/serial/mvebu-uart.c index 1074054ee5be..16b0a5aa14e2 100644 --- a/drivers/tty/serial/mvebu-uart.c +++ b/drivers/tty/serial/mvebu-uart.c @@ -39,10 +39,13 @@ /* Register Map */ #define UART_STD_RBR 0x00 +#define UART_EXT_RBR 0x18 #define UART_STD_TSH 0x04 +#define UART_EXT_TSH 0x1C #define UART_STD_CTRL1 0x08 +#define UART_EXT_CTRL1 0x04 #define CTRL_SOFT_RST BIT(31) #define CTRL_TXFIFO_RST BIT(15) #define CTRL_RXFIFO_RST BIT(14) @@ -55,15 +58,20 @@ CTRL_PAR_ERR_INT | CTRL_OVR_ERR_INT) #define UART_STD_CTRL2 UART_STD_CTRL1 +#define UART_EXT_CTRL2 0x20 #define CTRL_STD_TX_RDY_INT BIT(5) +#define CTRL_EXT_TX_RDY_INT BIT(6) #define CTRL_STD_RX_RDY_INT BIT(4) +#define CTRL_EXT_RX_RDY_INT BIT(5) #define UART_STAT 0x0C #define STAT_TX_FIFO_EMP BIT(13) #define STAT_TX_FIFO_FUL BIT(11) #define STAT_TX_EMP BIT(6) #define STAT_STD_TX_RDY BIT(5) +#define STAT_EXT_TX_RDY BIT(15) #define STAT_STD_RX_RDY BIT(4) +#define STAT_EXT_RX_RDY BIT(14) #define STAT_BRK_DET BIT(3) #define STAT_FRM_ERR BIT(2) #define STAT_PAR_ERR BIT(1) @@ -865,12 +873,28 @@ static struct mvebu_uart_driver_data uart_std_driver_data = { .flags.stat_rx_rdy = STAT_STD_RX_RDY, }; +static struct mvebu_uart_driver_data uart_ext_driver_data = { + .is_ext = true, + .regs.rbr = UART_EXT_RBR, + .regs.tsh = UART_EXT_TSH, + .regs.ctrl = UART_EXT_CTRL1, + .regs.intr = UART_EXT_CTRL2, + .flags.ctrl_tx_rdy_int = CTRL_EXT_TX_RDY_INT, + .flags.ctrl_rx_rdy_int = CTRL_EXT_RX_RDY_INT, + .flags.stat_tx_rdy = STAT_EXT_TX_RDY, + .flags.stat_rx_rdy = STAT_EXT_RX_RDY, +}; + /* Match table for of_platform binding */ static const struct of_device_id mvebu_uart_of_match[] = { { .compatible = "marvell,armada-3700-uart", .data = (void *)&uart_std_driver_data, }, + { + .compatible = "marvell,armada-3700-uart-ext", + .data = (void *)&uart_ext_driver_data, + }, {} }; |