Browse Source

serial: nsl16550: add hw flow control support

keystone serial hw support hw flow control. This patch
enables hw flow control for keystone EVMs as an optional
feature based on CONFIG_SERIAL_HW_FLOW_CONTROL.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Karicheri, Muralidharan 11 years ago
parent
commit
d57dee5787
3 changed files with 11 additions and 0 deletions
  1. 4 0
      README
  2. 6 0
      drivers/serial/ns16550.c
  3. 1 0
      include/ns16550.h

+ 4 - 0
README

@@ -751,6 +751,10 @@ The following options need to be configured:
 		boot loader that has already initialized the UART.  Define this
 		boot loader that has already initialized the UART.  Define this
 		variable to flush the UART at init time.
 		variable to flush the UART at init time.
 
 
+		CONFIG_SERIAL_HW_FLOW_CONTROL
+
+		Define this variable to enable hw flow control in serial driver.
+		Current user of this option is drivers/serial/nsl16550.c driver
 
 
 - Console Interface:
 - Console Interface:
 		Depending on board, define exactly one serial port
 		Depending on board, define exactly one serial port

+ 6 - 0
drivers/serial/ns16550.c

@@ -33,6 +33,12 @@
 #if defined(CONFIG_K2HK_EVM)
 #if defined(CONFIG_K2HK_EVM)
 #define UART_REG_VAL_PWREMU_MGMT_UART_DISABLE   0
 #define UART_REG_VAL_PWREMU_MGMT_UART_DISABLE   0
 #define UART_REG_VAL_PWREMU_MGMT_UART_ENABLE ((1 << 14) | (1 << 13) | (1 << 0))
 #define UART_REG_VAL_PWREMU_MGMT_UART_ENABLE ((1 << 14) | (1 << 13) | (1 << 0))
+#undef UART_MCRVAL
+#ifdef CONFIG_SERIAL_HW_FLOW_CONTROL
+#define UART_MCRVAL             (UART_MCR_RTS | UART_MCR_AFE)
+#else
+#define UART_MCRVAL             (UART_MCR_RTS)
+#endif
 #endif
 #endif
 
 
 #ifndef CONFIG_SYS_NS16550_IER
 #ifndef CONFIG_SYS_NS16550_IER

+ 1 - 0
include/ns16550.h

@@ -100,6 +100,7 @@ typedef struct NS16550 *NS16550_t;
 #define UART_MCR_OUT1	0x04		/* Out 1 */
 #define UART_MCR_OUT1	0x04		/* Out 1 */
 #define UART_MCR_OUT2	0x08		/* Out 2 */
 #define UART_MCR_OUT2	0x08		/* Out 2 */
 #define UART_MCR_LOOP	0x10		/* Enable loopback test mode */
 #define UART_MCR_LOOP	0x10		/* Enable loopback test mode */
+#define UART_MCR_AFE	0x20		/* Enable auto-RTS/CTS */
 
 
 #define UART_MCR_DMA_EN	0x04
 #define UART_MCR_DMA_EN	0x04
 #define UART_MCR_TX_DFR	0x08
 #define UART_MCR_TX_DFR	0x08