All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] omap: serial: fix non-empty uart fifo read abort
@ 2009-12-05  0:20 Vikram Pandita
  2009-12-07 22:23 ` [APPLIED] " Tony Lindgren
  0 siblings, 1 reply; 6+ messages in thread
From: Vikram Pandita @ 2009-12-05  0:20 UTC (permalink / raw)
  To: linux-omap; +Cc: Vikram Pandita, Cousson, Benoit

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: Cousson, Benoit <b-cousson@ti.com>
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
---
History of Patch:
V1:
	http://patchwork.kernel.org/patch/61671/
	http://patchwork.kernel.org/patch/61672/

V2: Incorporate approach suggested by Tony L
	Introduce IP version check in mach-omap2/serial.c file	

V3: Change #ifdef OMAP4 to cpu_is_omap44xx()

diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 2e17b57..e853115 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -33,6 +33,7 @@
 #include "pm.h"
 #include "prm-regbits-34xx.h"
 
+#define UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV	0x52
 #define UART_OMAP_WER		0x17	/* Wake-up enable register */
 
 #define DEFAULT_TIMEOUT (5 * HZ)
@@ -572,6 +573,23 @@ static struct omap_uart_state omap_uart[] = {
 #endif
 };
 
+/*
+ * Override the default 8250 read handler: mem_serial_in()
+ * Empty RX fifo read causes an abort on omap3630 and omap4
+ * This function makes sure that an empty rx fifo is not read on these silicons
+ * (OMAP1/2/3430 are not affected)
+ */
+static unsigned int serial_in_override(struct uart_port *up, int offset)
+{
+	if (UART_RX == offset) {
+		unsigned int lsr;
+		lsr = serial_read_reg(omap_uart[up->line].p, UART_LSR);
+		if (!(lsr & UART_LSR_DR))
+			return -EPERM;
+	}
+	return serial_read_reg(omap_uart[up->line].p, offset);
+}
+
 void __init omap_serial_early_init(void)
 {
 	int i;
@@ -650,5 +668,15 @@ void __init omap_serial_init(void)
 			device_init_wakeup(dev, true);
 			DEV_CREATE_FILE(dev, &dev_attr_sleep_timeout);
 		}
+
+		/* omap44xx: Never read empty UART fifo
+		 * omap3xxx: Never read empty UART fifo on UARTs
+		 * with IP rev >=0x52
+		 */
+		if (cpu_is_omap44xx())
+			uart->p->serial_in = serial_in_override;
+		else if ((serial_read_reg(uart->p, UART_OMAP_MVER) & 0xFF)
+				>= UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV)
+			uart->p->serial_in = serial_in_override;
 	}
 }
-- 
1.6.6.rc0.66.ge160d


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [APPLIED] [PATCH v3] omap: serial: fix non-empty uart fifo read abort
  2009-12-05  0:20 [PATCH v3] omap: serial: fix non-empty uart fifo read abort Vikram Pandita
@ 2009-12-07 22:23 ` Tony Lindgren
  2009-12-09  8:42   ` Gadiyar, Anand
  0 siblings, 1 reply; 6+ messages in thread
From: Tony Lindgren @ 2009-12-07 22:23 UTC (permalink / raw)
  To: linux-omap

This patch has been applied to the linux-omap
by youw fwiendly patch wobot.

Branch in linux-omap: for-next-vol2

Initial commit ID (Likely to change): 679089aa0dede39863a083a491b40928c5ec8379

PatchWorks
http://patchwork.kernel.org/patch/65022/

Git (Likely to change, and takes a while to get mirrored)
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=679089aa0dede39863a083a491b40928c5ec8379



^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [APPLIED] [PATCH v3] omap: serial: fix non-empty uart fifo read abort
  2009-12-07 22:23 ` [APPLIED] " Tony Lindgren
@ 2009-12-09  8:42   ` Gadiyar, Anand
  2009-12-09 14:17     ` Gadiyar, Anand
  2009-12-09 16:28     ` Tony Lindgren
  0 siblings, 2 replies; 6+ messages in thread
From: Gadiyar, Anand @ 2009-12-09  8:42 UTC (permalink / raw)
  To: Tony Lindgren, linux-omap

Tony Lindgren wrote:
> 
> This patch has been applied to the linux-omap
> by youw fwiendly patch wobot.
> 
> Branch in linux-omap: for-next-vol2
> 

Tony,

A query on this for-next-vol2 branch:
Is this branch going to be pushed in the current merge
window, or is it for the -rc series?


> PatchWorks
> http://patchwork.kernel.org/patch/65022/


With current Linus' tree + this patch, I can boot up on 3630.

Playing with the omap3_defconfig now, to see how many boards
we can boot up with a single image :)

- Anand

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [APPLIED] [PATCH v3] omap: serial: fix non-empty uart fifo read abort
  2009-12-09  8:42   ` Gadiyar, Anand
@ 2009-12-09 14:17     ` Gadiyar, Anand
  2009-12-09 16:29       ` Tony Lindgren
  2009-12-09 16:28     ` Tony Lindgren
  1 sibling, 1 reply; 6+ messages in thread
From: Gadiyar, Anand @ 2009-12-09 14:17 UTC (permalink / raw)
  To: Gadiyar, Anand, Tony Lindgren, linux-omap

<snip>

> 
> With current Linus' tree + this patch, I can boot up on 3630.
> 
> Playing with the omap3_defconfig now, to see how many boards
> we can boot up with a single image :)
> 

I got a zoom2, zoom3, 3430SDP and 3630 SDP booting with a
single image.

I had to disable Profiling and Sound support to get it to
build with this config. Will post a patch after -rc1 if this
is not resolved by then.


- Anand

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [APPLIED] [PATCH v3] omap: serial: fix non-empty uart fifo read abort
  2009-12-09  8:42   ` Gadiyar, Anand
  2009-12-09 14:17     ` Gadiyar, Anand
@ 2009-12-09 16:28     ` Tony Lindgren
  1 sibling, 0 replies; 6+ messages in thread
From: Tony Lindgren @ 2009-12-09 16:28 UTC (permalink / raw)
  To: Gadiyar, Anand; +Cc: linux-omap

* Gadiyar, Anand <gadiyar@ti.com> [091209 00:41]:
> Tony Lindgren wrote:
> > 
> > This patch has been applied to the linux-omap
> > by youw fwiendly patch wobot.
> > 
> > Branch in linux-omap: for-next-vol2
> > 
> 
> Tony,
> 
> A query on this for-next-vol2 branch:
> Is this branch going to be pushed in the current merge
> window, or is it for the -rc series?

What used to be for-next-vol2 is now the current for-next.
We should be able to get that merged too this merge window.

Regards,

Tony

> 
> 
> > PatchWorks
> > http://patchwork.kernel.org/patch/65022/
> 
> 
> With current Linus' tree + this patch, I can boot up on 3630.
> 
> Playing with the omap3_defconfig now, to see how many boards
> we can boot up with a single image :)
> 
> - Anand
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [APPLIED] [PATCH v3] omap: serial: fix non-empty uart fifo read abort
  2009-12-09 14:17     ` Gadiyar, Anand
@ 2009-12-09 16:29       ` Tony Lindgren
  0 siblings, 0 replies; 6+ messages in thread
From: Tony Lindgren @ 2009-12-09 16:29 UTC (permalink / raw)
  To: Gadiyar, Anand; +Cc: linux-omap

* Gadiyar, Anand <gadiyar@ti.com> [091209 06:16]:
> <snip>
> 
> > 
> > With current Linus' tree + this patch, I can boot up on 3630.
> > 
> > Playing with the omap3_defconfig now, to see how many boards
> > we can boot up with a single image :)
> > 
> 
> I got a zoom2, zoom3, 3430SDP and 3630 SDP booting with a
> single image.

OK good to hear.
 
> I had to disable Profiling and Sound support to get it to
> build with this config. Will post a patch after -rc1 if this
> is not resolved by then.

I've applied a patch for the profiling into omap-testing
from Carsten Emde I found on LKML. See patch 
"tracing: Fix trace_marker output".

Regards,

Tony


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-12-09 16:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-12-05  0:20 [PATCH v3] omap: serial: fix non-empty uart fifo read abort Vikram Pandita
2009-12-07 22:23 ` [APPLIED] " Tony Lindgren
2009-12-09  8:42   ` Gadiyar, Anand
2009-12-09 14:17     ` Gadiyar, Anand
2009-12-09 16:29       ` Tony Lindgren
2009-12-09 16:28     ` Tony Lindgren

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.