| From c3d8b76f61586714cdc5f219ba45592a54caaa55 Mon Sep 17 00:00:00 2001 |
| From: Linus Walleij <linus.walleij@linaro.org> |
| Date: Wed, 21 Mar 2012 20:15:18 +0100 |
| Subject: serial: PL011: move interrupt clearing |
| |
| From: Linus Walleij <linus.walleij@linaro.org> |
| |
| commit c3d8b76f61586714cdc5f219ba45592a54caaa55 upstream. |
| |
| Commit 360f748b204275229f8398cb2f9f53955db1503b |
| "serial: PL011: clear pending interrupts" |
| attempts to clear interrupts by writing to a |
| yet-unassigned memory address. This fixes the issue. |
| |
| The breaking patch is marked for stable so should be |
| carried along with the other patch. |
| |
| Cc: Shreshtha Kumar Sahu <shreshthakumar.sahu@stericsson.com> |
| Cc: Russell King <linux@arm.linux.org.uk> |
| Cc: Nicolas Pitre <nico@fluxnic.net> |
| Reported-by: Viresh Kumar <viresh.kumar@st.com> |
| Signed-off-by: Linus Walleij <linus.walleij@linaro.org> |
| Tested-by: Grant Likely <grant.likely@secretlab.ca> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/tty/serial/amba-pl011.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/tty/serial/amba-pl011.c |
| +++ b/drivers/tty/serial/amba-pl011.c |
| @@ -1919,10 +1919,6 @@ static int pl011_probe(struct amba_devic |
| goto unmap; |
| } |
| |
| - /* Ensure interrupts from this UART are masked and cleared */ |
| - writew(0, uap->port.membase + UART011_IMSC); |
| - writew(0xffff, uap->port.membase + UART011_ICR); |
| - |
| uap->vendor = vendor; |
| uap->lcrh_rx = vendor->lcrh_rx; |
| uap->lcrh_tx = vendor->lcrh_tx; |
| @@ -1939,6 +1935,10 @@ static int pl011_probe(struct amba_devic |
| uap->port.line = i; |
| pl011_dma_probe(uap); |
| |
| + /* Ensure interrupts from this UART are masked and cleared */ |
| + writew(0, uap->port.membase + UART011_IMSC); |
| + writew(0xffff, uap->port.membase + UART011_ICR); |
| + |
| snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev)); |
| |
| amba_ports[i] = uap; |