[SERIAL] 8250: add tsi108 serial support
authorZang Roy-r61911 <tie-fei.zang@freescale.com>
Fri, 30 Jun 2006 09:29:58 +0000 (02:29 -0700)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 9 Jul 2006 20:11:09 +0000 (21:11 +0100)
commit3be91ec7388bae3cf1bfb4febcee5ab6c65f409f
treecb2fa80f81321e0d1dda6e88ca95ade081064624
parentc65b15cfd6b8b74c6f2b3635bf47ee661d351ef3
[SERIAL] 8250: add tsi108 serial support

The following patch gets rid of CONFIG_TSI108_BRIDGE.  I add UPIO_TSI to
handle IIR and IER register in serial_in and serial_out.

(1) the reason to rewrite serial_in:

    TSI108 rev Z1 version ERRATA.  Reading the UART's Interrupt
    Identification Register (IIR) clears the Transmit Holding Register
    Empty (THRE) and Transmit buffer Empty (TEMP) interrupts even if they
    are not enabled in the Interrupt Enable Register (IER).  This leads to
    loss of the interrupts.  Interrupts are not cleared when reading UART
    registers as 32-bit word.

(2) the reason to rewrite serial_out:

    Check for UART_IER_UUE bit in the autoconfig routine.  This section
    of autoconfig is excluded for Tsi108/109 because bits 7 and 6 are
    reserved for internal use.  They are R/W bits.  In addition to
    incorrect identification, changing these bits (from 00) will make
    Tsi108/109 UART non-functional.

Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/serial/8250.c
drivers/serial/serial_core.c
include/linux/serial_core.h