• vikram pandita's avatar
    omap: serial: fix non-empty uart fifo read abort · ce13d471
    vikram pandita authored
    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: default avatarVikram Pandita <vikram.pandita@ti.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    ce13d471
serial.c 16.5 KB