aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQipeng Zha <qipeng.zha@intel.com>2015-08-07 07:14:47 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-08-14 20:15:13 -0400
commitcbba3e6f7a1eb642cccf520f690d4a58b97a9588 (patch)
treee8509fe5121791535bde80d973829071fb16b7b6
parent2b9a8508cb7f50d1880e2b8bb43615afd228f738 (diff)
serial:8250_dw: do not alter CTS and DCTS since AFE is enabled
Since the serial core is informed that this device is doing automatic flow control, it is not necessary to alter CTS and DCTS of the MSR as the core no longer attempts stop the port in uart_handle_cts_change(). Signed-off-by: Huiquan Zhong <huiquan.zhong@intel.com> Signed-off-by: Qipeng Zha <qipeng.zha@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/tty/serial/8250/8250_dw.c22
1 files changed, 0 insertions, 22 deletions
diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
index 8d04ea781de4..06324f17a0cb 100644
--- a/drivers/tty/serial/8250/8250_dw.c
+++ b/drivers/tty/serial/8250/8250_dw.c
@@ -56,7 +56,6 @@
56 56
57struct dw8250_data { 57struct dw8250_data {
58 u8 usr_reg; 58 u8 usr_reg;
59 int last_mcr;
60 int line; 59 int line;
61 int msr_mask_on; 60 int msr_mask_on;
62 int msr_mask_off; 61 int msr_mask_off;
@@ -76,12 +75,6 @@ static inline int dw8250_modify_msr(struct uart_port *p, int offset, int value)
76{ 75{
77 struct dw8250_data *d = p->private_data; 76 struct dw8250_data *d = p->private_data;
78 77
79 /* If reading MSR, report CTS asserted when auto-CTS/RTS enabled */
80 if (offset == UART_MSR && d->last_mcr & UART_MCR_AFE) {
81 value |= UART_MSR_CTS;
82 value &= ~UART_MSR_DCTS;
83 }
84
85 /* Override any modem control signals if needed */ 78 /* Override any modem control signals if needed */
86 if (offset == UART_MSR) { 79 if (offset == UART_MSR) {
87 value |= d->msr_mask_on; 80 value |= d->msr_mask_on;
@@ -101,11 +94,6 @@ static void dw8250_force_idle(struct uart_port *p)
101 94
102static void dw8250_serial_out(struct uart_port *p, int offset, int value) 95static void dw8250_serial_out(struct uart_port *p, int offset, int value)
103{ 96{
104 struct dw8250_data *d = p->private_data;
105
106 if (offset == UART_MCR)
107 d->last_mcr = value;
108
109 writeb(value, p->membase + (offset << p->regshift)); 97 writeb(value, p->membase + (offset << p->regshift));
110 98
111 /* Make sure LCR write wasn't ignored */ 99 /* Make sure LCR write wasn't ignored */
@@ -144,11 +132,6 @@ static unsigned int dw8250_serial_inq(struct uart_port *p, int offset)
144 132
145static void dw8250_serial_outq(struct uart_port *p, int offset, int value) 133static void dw8250_serial_outq(struct uart_port *p, int offset, int value)
146{ 134{
147 struct dw8250_data *d = p->private_data;
148
149 if (offset == UART_MCR)
150 d->last_mcr = value;
151
152 value &= 0xff; 135 value &= 0xff;
153 __raw_writeq(value, p->membase + (offset << p->regshift)); 136 __raw_writeq(value, p->membase + (offset << p->regshift));
154 /* Read back to ensure register write ordering. */ 137 /* Read back to ensure register write ordering. */
@@ -175,11 +158,6 @@ static void dw8250_serial_outq(struct uart_port *p, int offset, int value)
175 158
176static void dw8250_serial_out32(struct uart_port *p, int offset, int value) 159static void dw8250_serial_out32(struct uart_port *p, int offset, int value)
177{ 160{
178 struct dw8250_data *d = p->private_data;
179
180 if (offset == UART_MCR)
181 d->last_mcr = value;
182
183 writel(value, p->membase + (offset << p->regshift)); 161 writel(value, p->membase + (offset << p->regshift));
184 162
185 /* Make sure LCR write wasn't ignored */ 163 /* Make sure LCR write wasn't ignored */