omap: serial: fix non-empty uart fifo read abort
authorvikram pandita <vikram.pandita@ti.com>
Sat, 12 Dec 2009 00:16:37 +0000 (16:16 -0800)
committerTony Lindgren <tony@atomide.com>
Sat, 12 Dec 2009 00:16:37 +0000 (16:16 -0800)
OMAP3xxx and OMAP4430 UART IP blocks have a restriction wrt RX FIFO.
Empty RX fifo read causes an abort.

OMAP3xxx:
UART IP revision >= 0x52 have this issue
MVR register format is:
Bits  Field Name  Description   Type  Reset
31:8   RESERVED  RO   0x0
7:4    MAJOR   Major revision number of the module.   RO   0x--
3:0    MINOR   Minor revision number of the module.   RO   0x--

OMAP4xxx:
All revisions have this issue
Revision id check is not used as the format of MVR resigster has changed
For omap4 MVR register reads as: 0x50410602 => Revision id = 0x0602
Format of MVR register on omap4 is: (Courtesy: Cousson, Benoit)
Bits  Field Name  Description   Type  Reset
31:30 SCHEME   Scheme revision number of module   RO   0x1
29:28 RESERVED    RO   0x1
27:16 FUNC   Function revision number of module   RO   0x041
15:11 RTL   Rtl revision number of module   RO   0x00
10:8  MAJOR  Major revision number of the module.   RO   0x6
7:6   CUSTOM   Custom revision number of the module.   RO   0x0
5:0   MINOR   Minor revision number of the module.   RO   0x02

Override the default 8250 read handler: mem_serial_in()
by a custom handler: serial_in_8250()
which makes sure that RX fifo is not read when empty

tested on zoom3(3630) board

Cc: Benoit Cousson <b-cousson@ti.com>
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>

No differences found