* [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.