lkml.org 
[lkml]   [2006]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectRE: [PATCH/2.6.17-rc4 8/10] Add tsi108 8250 serial support
Date
> > 
> > On May 17, 2006, at 5:14 AM, Zang Roy-r61911 wrote:
> >
> > > This patch contains changes to the serial device driver
> specific for
> > > integrated serial port in Tsi108 Host Bridge.
>
> There's no explaination about why this is required. What is
> the problem?
> Which changes relate directly to this problem and which
> changes are related to fixing some other issue not related to
> the errata?
>
> Plus, every patch line is prefixed by "> "... patch doesn't like that.

The reason is that the serial port on tsi108/9 is a bit difference with the
standard 8250 serial port. the patch deal with the difference.
The prefixed ">" is caused by "Fw" the email. Sorry for that. The following
is the original patch.

Signed-off-by: Alexandre Bounine <alexandreb@tundra.com>
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>

drivers/serial/8250.c | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)

6cb950357e9970afa671d59f172dbc4b03f11560
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index bbf78aa..c12f516 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -723,7 +723,9 @@ static int broken_efr(struct uart_8250_p static void autoconfig_16550a(struct uart_8250_port *up) {
unsigned char status1, status2;
+#ifndef CONFIG_TSI108_BRIDGE
unsigned int iersave;
+#endif

up->port.type = PORT_16550A;
up->capabilities |= UART_CAP_FIFO;
@@ -833,6 +835,7 @@ static void autoconfig_16550a(struct uar
* trying to write and read a 1 just to make sure it's not
* already a 1 and maybe locked there before we even start start.
*/
+#ifndef CONFIG_TSI108_BRIDGE
iersave = serial_in(up, UART_IER);
serial_outp(up, UART_IER, iersave & ~UART_IER_UUE);
if (!(serial_in(up, UART_IER) & UART_IER_UUE)) { @@ -859,6 +862,7 @@ static void autoconfig_16550a(struct uar
DEBUG_AUTOCONF("Couldn't force IER_UUE to 0 ");
}
serial_outp(up, UART_IER, iersave);
+#endif
}

/*
@@ -1348,7 +1352,12 @@ static irqreturn_t serial8250_interrupt(

up = list_entry(l, struct uart_8250_port, list);

+#ifdef CONFIG_TSI108_BRIDGE /* for TSI108_REV_Z1 errata U2 */
+ /* read IIR as part of 32-bit word */
+ iir = (in_be32((u32 *)(up->port.membase + UART_RX)) >> 8) & 0xff;
+#else
iir = serial_in(up, UART_IIR);
+#endif
if (!(iir & UART_IIR_NO_INT)) {
serial8250_handle_port(up, regs);

@@ -1529,7 +1538,9 @@ static int serial8250_startup(struct uar {
struct uart_8250_port *up = (struct uart_8250_port *)port;
unsigned long flags;
+#ifndef CONFIG_TSI108_BRIDGE
unsigned char lsr, iir;
+#endif
int retval;

up->capabilities = uart_config[up->port.type].flags; @@ -1567,7 +1578,9 @@ #endif
*/
(void) serial_inp(up, UART_LSR);
(void) serial_inp(up, UART_RX);
+#ifndef CONFIG_TSI108_BRIDGE /* for TSI108_REV_Z1 errata U2 */
(void) serial_inp(up, UART_IIR);
+#endif
(void) serial_inp(up, UART_MSR);

/*
@@ -1634,6 +1647,7 @@ #endif

serial8250_set_mctrl(&up->port, up->port.mctrl);

+#ifndef CONFIG_TSI108_BRIDGE
/*
* Do a quick test to see if we receive an
* interrupt when we enable the TX irq.
@@ -1652,6 +1666,7 @@ #endif
} else {
up->bugs &= ~UART_BUG_TXEN;
}
+#endif

spin_unlock_irqrestore(&up->port.lock, flags);

@@ -1678,7 +1693,9 @@ #endif
*/
(void) serial_inp(up, UART_LSR);
(void) serial_inp(up, UART_RX);
+#ifndef CONFIG_TSI108_BRIDGE /* for TSI108_REV_Z1 errata U2 */
(void) serial_inp(up, UART_IIR);
+#endif
(void) serial_inp(up, UART_MSR);

return 0;
--
1.3.0

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-06-13 07:42    [W:0.030 / U:0.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site