* [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP
@ 2012-08-27 7:36 Dirk Behme
2012-08-27 7:36 ` [PATCH 1/2] tty: serial: imx: console write routing is unsafe " Dirk Behme
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Dirk Behme @ 2012-08-27 7:36 UTC (permalink / raw)
To: linux-arm-kernel
The following two patches are a port from Freescale's patch
http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/commit/drivers/tty/serial/imx.c?h=imx_3.0.15_android&id=80e525d66d1818722db18e21dc7f1dc41f314156
Using a 3.6-rc3 kernel on a i.MX6 SabreLite board and increasing the
verbosity of the kernel's serial console output with some debug printk
like [1] results in two issues:
1. After some time the kernel output hangs [2]. The debugger tells us that
it hangs in drivers/tty/serial/imx.c at
...
/*
* Finally, wait for transmitter to become empty
* and restore UCR1/2/3
*/
while (!(readl(sport->port.membase + USR2) & USR2_TXDC));
...
with permanently reading 0x1000 from USR2 while it waits for bit USR2_TXDC
(0x8).
2. Even after applying the first patch, there happens to be some garbage in the
output [3].
Both issues are gone applying these two patches.
Note: If these patches are fine, they should go to stable, too.
Best regards
Dirk
[1]
Index: a/mm/mmap.c
===================================================================
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1290,6 +1290,9 @@ munmap_back:
vma->vm_pgoff = pgoff;
INIT_LIST_HEAD(&vma->anon_vma_chain);
+ printk(" => mmap_region: start: 0x%08X end: 0x%08X len: %d\n",
+ (unsigned int)vma->vm_start, (unsigned int)vma->vm_end, (int)len);
+
error = -EINVAL; /* when rejecting VM_GROWSDOWN|VM_GROWSUP */
if (file) {
[2]
...
=> mmap_region: start: 0x76DBC000 end: 0x76DBE000 len: 8192
=> mmap_region: start: 0x76DBE000 end: 0x76DC0000 len: 8192
=> mmap_region: start: 0x76D5C000 end: 0x76DA0000 ??
<hang, no output any more>
[3]
...
=> mmap_region: start: 0x0011C000 end: 0x0011D000 len: 4096
=> mmap_region: start: 0x00008000 end: 0x000B500f??#.??????R????r????j???????}???????????? start: 0x000BD000 end: 0x000BE000 len: 4096
=> mmap_region: start: 0x000BD000 end: 0x000BE000 len: 4096
...
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/2] tty: serial: imx: console write routing is unsafe on SMP
2012-08-27 7:36 [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP Dirk Behme
@ 2012-08-27 7:36 ` Dirk Behme
2012-08-27 22:33 ` Shawn Guo
2012-08-27 7:36 ` [PATCH 2/2] tty: serial: imx: don't reinit clock with enabled console Dirk Behme
2012-08-27 22:31 ` [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP Shawn Guo
2 siblings, 1 reply; 12+ messages in thread
From: Dirk Behme @ 2012-08-27 7:36 UTC (permalink / raw)
To: linux-arm-kernel
From: Xinyu Chen <xinyu.chen@freescale.com>
The console feature's write routing is unsafe on SMP with
the startup/shutdown call.
There could be several consumers of the console
* the kernel printk
* the init process using /dev/kmsg to call printk to show log
* shell, which open /dev/console and write with sys_write()
The shell goes into the normal uart open/write routing,
but the other two go into the console operations.
The open routing calls imx serial startup, which will write USR1/2
register without any lock and critical with imx_console_write call.
Add a spin_lock for startup/shutdown/console_write routing.
This patch is a port from Freescale's Android kernel.
Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
Tested-by: Dirk Behme <dirk.behme@de.bosch.com>
CC: Shawn Guo <shawn.guo@linaro.org>
CC: Sascha Hauer <s.hauer@pengutronix.de>
---
drivers/tty/serial/imx.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index d5c689d..908178f 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -754,6 +754,7 @@ static int imx_startup(struct uart_port *port)
}
}
+ spin_lock_irqsave(&sport->port.lock, flags);
/*
* Finally, clear and enable interrupts
*/
@@ -807,7 +808,6 @@ static int imx_startup(struct uart_port *port)
/*
* Enable modem status interrupts
*/
- spin_lock_irqsave(&sport->port.lock,flags);
imx_enable_ms(&sport->port);
spin_unlock_irqrestore(&sport->port.lock,flags);
@@ -837,10 +837,13 @@ static void imx_shutdown(struct uart_port *port)
{
struct imx_port *sport = (struct imx_port *)port;
unsigned long temp;
+ unsigned long flags;
+ spin_lock_irqsave(&sport->port.lock, flags);
temp = readl(sport->port.membase + UCR2);
temp &= ~(UCR2_TXEN);
writel(temp, sport->port.membase + UCR2);
+ spin_unlock_irqrestore(&sport->port.lock, flags);
if (USE_IRDA(sport)) {
struct imxuart_platform_data *pdata;
@@ -869,12 +872,14 @@ static void imx_shutdown(struct uart_port *port)
* Disable all interrupts, port and break condition.
*/
+ spin_lock_irqsave(&sport->port.lock, flags);
temp = readl(sport->port.membase + UCR1);
temp &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN);
if (USE_IRDA(sport))
temp &= ~(UCR1_IREN);
writel(temp, sport->port.membase + UCR1);
+ spin_unlock_irqrestore(&sport->port.lock, flags);
}
static void
@@ -1217,6 +1222,9 @@ imx_console_write(struct console *co, const char *s, unsigned int count)
struct imx_port *sport = imx_ports[co->index];
struct imx_port_ucrs old_ucr;
unsigned int ucr1;
+ unsigned long flags;
+
+ spin_lock_irqsave(&sport->port.lock, flags);
/*
* First, save UCR1/2/3 and then disable interrupts
@@ -1242,6 +1250,8 @@ imx_console_write(struct console *co, const char *s, unsigned int count)
while (!(readl(sport->port.membase + USR2) & USR2_TXDC));
imx_port_ucrs_restore(&sport->port, &old_ucr);
+
+ spin_unlock_irqrestore(&sport->port.lock, flags);
}
/*
--
1.7.0.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/2] tty: serial: imx: don't reinit clock with enabled console
2012-08-27 7:36 [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP Dirk Behme
2012-08-27 7:36 ` [PATCH 1/2] tty: serial: imx: console write routing is unsafe " Dirk Behme
@ 2012-08-27 7:36 ` Dirk Behme
2012-08-27 18:20 ` Troy Kisky
2012-08-27 22:31 ` [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP Shawn Guo
2 siblings, 1 reply; 12+ messages in thread
From: Dirk Behme @ 2012-08-27 7:36 UTC (permalink / raw)
To: linux-arm-kernel
From: Xinyu Chen <xinyu.chen@freescale.com>
Remove the imx_setup_ufcr() call on startup when CONSOLE enabled,
as this will cause clock reinit, and output garbage.
This patch is a port from Freescale's Android kernel.
Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
Tested-by: Dirk Behme <dirk.behme@de.bosch.com>
CC: Shawn Guo <shawn.guo@linaro.org>
CC: Sascha Hauer <s.hauer@pengutronix.de>
---
drivers/tty/serial/imx.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 908178f..31ce414 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -695,7 +695,9 @@ static int imx_startup(struct uart_port *port)
int retval;
unsigned long flags, temp;
+#ifndef CONFIG_SERIAL_CORE_CONSOLE
imx_setup_ufcr(sport, 0);
+#endif
/* disable the DREN bit (Data Ready interrupt enable) before
* requesting IRQs
--
1.7.0.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/2] tty: serial: imx: don't reinit clock with enabled console
2012-08-27 7:36 ` [PATCH 2/2] tty: serial: imx: don't reinit clock with enabled console Dirk Behme
@ 2012-08-27 18:20 ` Troy Kisky
2012-08-28 10:46 ` Dirk Behme
0 siblings, 1 reply; 12+ messages in thread
From: Troy Kisky @ 2012-08-27 18:20 UTC (permalink / raw)
To: linux-arm-kernel
On 8/27/2012 12:36 AM, Dirk Behme wrote:
> From: Xinyu Chen <xinyu.chen@freescale.com>
>
> Remove the imx_setup_ufcr() call on startup when CONSOLE enabled,
> as this will cause clock reinit, and output garbage.
>
> This patch is a port from Freescale's Android kernel.
>
> Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
> Tested-by: Dirk Behme <dirk.behme@de.bosch.com>
> CC: Shawn Guo <shawn.guo@linaro.org>
> CC: Sascha Hauer <s.hauer@pengutronix.de>
> ---
> drivers/tty/serial/imx.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
> index 908178f..31ce414 100644
> --- a/drivers/tty/serial/imx.c
> +++ b/drivers/tty/serial/imx.c
> @@ -695,7 +695,9 @@ static int imx_startup(struct uart_port *port)
> int retval;
> unsigned long flags, temp;
>
> +#ifndef CONFIG_SERIAL_CORE_CONSOLE
> imx_setup_ufcr(sport, 0);
> +#endif
>
> /* disable the DREN bit (Data Ready interrupt enable) before
> * requesting IRQs
I'd rather do something like this
static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode)
{
unsigned int val;
/* set receiver / transmitter trigger level. */
val = readl(sport->port.membase + UFCR) & UFCR_RFDIV;
val |= TXTL << 10 | RXTL;
writel(val, sport->port.membase + UFCR);
return 0;
}
There is no need for imx_setup_ufcr to change divisor.
Troy
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP
2012-08-27 7:36 [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP Dirk Behme
2012-08-27 7:36 ` [PATCH 1/2] tty: serial: imx: console write routing is unsafe " Dirk Behme
2012-08-27 7:36 ` [PATCH 2/2] tty: serial: imx: don't reinit clock with enabled console Dirk Behme
@ 2012-08-27 22:31 ` Shawn Guo
2012-08-27 22:51 ` Greg Kroah-Hartman
2 siblings, 1 reply; 12+ messages in thread
From: Shawn Guo @ 2012-08-27 22:31 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Aug 27, 2012 at 09:36:50AM +0200, Dirk Behme wrote:
> Both issues are gone applying these two patches.
>
> Note: If these patches are fine, they should go to stable, too.
>
Then you should have Cc: <stable@vger.kernel.org> tag on these patches.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/2] tty: serial: imx: console write routing is unsafe on SMP
2012-08-27 7:36 ` [PATCH 1/2] tty: serial: imx: console write routing is unsafe " Dirk Behme
@ 2012-08-27 22:33 ` Shawn Guo
0 siblings, 0 replies; 12+ messages in thread
From: Shawn Guo @ 2012-08-27 22:33 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Aug 27, 2012 at 09:36:51AM +0200, Dirk Behme wrote:
> From: Xinyu Chen <xinyu.chen@freescale.com>
>
> The console feature's write routing is unsafe on SMP with
> the startup/shutdown call.
>
> There could be several consumers of the console
> * the kernel printk
> * the init process using /dev/kmsg to call printk to show log
> * shell, which open /dev/console and write with sys_write()
>
> The shell goes into the normal uart open/write routing,
> but the other two go into the console operations.
> The open routing calls imx serial startup, which will write USR1/2
> register without any lock and critical with imx_console_write call.
>
> Add a spin_lock for startup/shutdown/console_write routing.
>
> This patch is a port from Freescale's Android kernel.
>
> Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
> Tested-by: Dirk Behme <dirk.behme@de.bosch.com>
> CC: Shawn Guo <shawn.guo@linaro.org>
> CC: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP
2012-08-27 22:31 ` [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP Shawn Guo
@ 2012-08-27 22:51 ` Greg Kroah-Hartman
2012-08-27 23:37 ` Shawn Guo
0 siblings, 1 reply; 12+ messages in thread
From: Greg Kroah-Hartman @ 2012-08-27 22:51 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Aug 28, 2012 at 06:31:35AM +0800, Shawn Guo wrote:
> On Mon, Aug 27, 2012 at 09:36:50AM +0200, Dirk Behme wrote:
> > Both issues are gone applying these two patches.
> >
> > Note: If these patches are fine, they should go to stable, too.
> >
> Then you should have Cc: <stable@vger.kernel.org> tag on these patches.
On both of them? I can do that if needed. How far back should they go?
greg k-h
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP
2012-08-27 22:51 ` Greg Kroah-Hartman
@ 2012-08-27 23:37 ` Shawn Guo
2012-08-28 6:03 ` Dirk Behme
0 siblings, 1 reply; 12+ messages in thread
From: Shawn Guo @ 2012-08-27 23:37 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Aug 27, 2012 at 03:51:42PM -0700, Greg Kroah-Hartman wrote:
> On both of them? I can do that if needed. How far back should they go?
>
It should be okay to apply on 3.4 and 3.5. But patch #2 is still in
question. I do not like the #ifdef.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP
2012-08-27 23:37 ` Shawn Guo
@ 2012-08-28 6:03 ` Dirk Behme
0 siblings, 0 replies; 12+ messages in thread
From: Dirk Behme @ 2012-08-28 6:03 UTC (permalink / raw)
To: linux-arm-kernel
On 28.08.2012 01:37, Shawn Guo wrote:
> On Mon, Aug 27, 2012 at 03:51:42PM -0700, Greg Kroah-Hartman wrote:
>> On both of them? I can do that if needed. How far back should they go?
>>
> It should be okay to apply on 3.4 and 3.5.
For patch #1/2: Yes, thanks!
> But patch #2 is still in
> question. I do not like the #ifdef.
For patch #2/2: Yes, understood. I'll look at Troy's proposal and will
update #2/2.
Many thanks and best regards
Dirk
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] tty: serial: imx: don't reinit clock with enabled console
2012-08-27 18:20 ` Troy Kisky
@ 2012-08-28 10:46 ` Dirk Behme
2012-08-28 18:27 ` Troy Kisky
0 siblings, 1 reply; 12+ messages in thread
From: Dirk Behme @ 2012-08-28 10:46 UTC (permalink / raw)
To: linux-arm-kernel
On 27.08.2012 20:20, Troy Kisky wrote:
> On 8/27/2012 12:36 AM, Dirk Behme wrote:
>> From: Xinyu Chen <xinyu.chen@freescale.com>
>>
>> Remove the imx_setup_ufcr() call on startup when CONSOLE enabled,
>> as this will cause clock reinit, and output garbage.
>>
>> This patch is a port from Freescale's Android kernel.
>>
>> Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
>> Tested-by: Dirk Behme <dirk.behme@de.bosch.com>
>> CC: Shawn Guo <shawn.guo@linaro.org>
>> CC: Sascha Hauer <s.hauer@pengutronix.de>
>> ---
>> drivers/tty/serial/imx.c | 2 ++
>> 1 files changed, 2 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
>> index 908178f..31ce414 100644
>> --- a/drivers/tty/serial/imx.c
>> +++ b/drivers/tty/serial/imx.c
>> @@ -695,7 +695,9 @@ static int imx_startup(struct uart_port *port)
>> int retval;
>> unsigned long flags, temp;
>>
>> +#ifndef CONFIG_SERIAL_CORE_CONSOLE
>> imx_setup_ufcr(sport, 0);
>> +#endif
>>
>> /* disable the DREN bit (Data Ready interrupt enable) before
>> * requesting IRQs
>
>
> I'd rather do something like this
>
> static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode)
> {
> unsigned int val;
>
> /* set receiver / transmitter trigger level. */
> val = readl(sport->port.membase + UFCR) & UFCR_RFDIV;
Shouldn't it be
... & (UFCR_RFDIV | UFCR_DCEDTE);
then? My i.MX6 manual has DCEDTE as bit 6, which we don't want to touch,
too? We only want to touch TXTL and RXTL?
> val |= TXTL << 10 | RXTL;
> writel(val, sport->port.membase + UFCR);
> return 0;
> }
>
> There is no need for imx_setup_ufcr to change divisor.
Ok
Thanks
Dirk
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] tty: serial: imx: don't reinit clock with enabled console
2012-08-28 10:46 ` Dirk Behme
@ 2012-08-28 18:27 ` Troy Kisky
2012-08-28 18:45 ` Troy Kisky
0 siblings, 1 reply; 12+ messages in thread
From: Troy Kisky @ 2012-08-28 18:27 UTC (permalink / raw)
To: linux-arm-kernel
On 8/28/2012 3:46 AM, Dirk Behme wrote:
> On 27.08.2012 20:20, Troy Kisky wrote:
>> On 8/27/2012 12:36 AM, Dirk Behme wrote:
>>> From: Xinyu Chen <xinyu.chen@freescale.com>
>>>
>>> Remove the imx_setup_ufcr() call on startup when CONSOLE enabled,
>>> as this will cause clock reinit, and output garbage.
>>>
>>> This patch is a port from Freescale's Android kernel.
>>>
>>> Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
>>> Tested-by: Dirk Behme <dirk.behme@de.bosch.com>
>>> CC: Shawn Guo <shawn.guo@linaro.org>
>>> CC: Sascha Hauer <s.hauer@pengutronix.de>
>>> ---
>>> drivers/tty/serial/imx.c | 2 ++
>>> 1 files changed, 2 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
>>> index 908178f..31ce414 100644
>>> --- a/drivers/tty/serial/imx.c
>>> +++ b/drivers/tty/serial/imx.c
>>> @@ -695,7 +695,9 @@ static int imx_startup(struct uart_port *port)
>>> int retval;
>>> unsigned long flags, temp;
>>> +#ifndef CONFIG_SERIAL_CORE_CONSOLE
>>> imx_setup_ufcr(sport, 0);
>>> +#endif
>>> /* disable the DREN bit (Data Ready interrupt enable) before
>>> * requesting IRQs
>>
>>
>> I'd rather do something like this
>>
>> static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode)
>> {
>> unsigned int val;
>>
>> /* set receiver / transmitter trigger level. */
>> val = readl(sport->port.membase + UFCR) & UFCR_RFDIV;
>
> Shouldn't it be
>
> ... & (UFCR_RFDIV | UFCR_DCEDTE);
>
> then? My i.MX6 manual has DCEDTE as bit 6, which we don't want to
> touch, too? We only want to touch TXTL and RXTL?
>
If you do that, you should also change imx_set_termios
to possibly clear the bit
new_ufcr = (old_ufcr & (~UFCR_RFDIV)) | UFCR_RFDIV_REG(div);
to
new_ufcr = (old_ufcr & (~(UFCR_RFDIV | UFCR_DCEDTE))) | UFCR_RFDIV_REG(div);
>> val |= TXTL << 10 | RXTL;
>> writel(val, sport->port.membase + UFCR);
>> return 0;
>> }
>>
>> There is no need for imx_setup_ufcr to change divisor.
>
> Ok
>
> Thanks
>
> Dirk
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] tty: serial: imx: don't reinit clock with enabled console
2012-08-28 18:27 ` Troy Kisky
@ 2012-08-28 18:45 ` Troy Kisky
0 siblings, 0 replies; 12+ messages in thread
From: Troy Kisky @ 2012-08-28 18:45 UTC (permalink / raw)
To: linux-arm-kernel
On 8/28/2012 11:27 AM, Troy Kisky wrote:
> On 8/28/2012 3:46 AM, Dirk Behme wrote:
>> On 27.08.2012 20:20, Troy Kisky wrote:
>>> On 8/27/2012 12:36 AM, Dirk Behme wrote:
>>>> From: Xinyu Chen <xinyu.chen@freescale.com>
>>>>
>>>> Remove the imx_setup_ufcr() call on startup when CONSOLE enabled,
>>>> as this will cause clock reinit, and output garbage.
>>>>
>>>> This patch is a port from Freescale's Android kernel.
>>>>
>>>> Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
>>>> Tested-by: Dirk Behme <dirk.behme@de.bosch.com>
>>>> CC: Shawn Guo <shawn.guo@linaro.org>
>>>> CC: Sascha Hauer <s.hauer@pengutronix.de>
>>>> ---
>>>> drivers/tty/serial/imx.c | 2 ++
>>>> 1 files changed, 2 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
>>>> index 908178f..31ce414 100644
>>>> --- a/drivers/tty/serial/imx.c
>>>> +++ b/drivers/tty/serial/imx.c
>>>> @@ -695,7 +695,9 @@ static int imx_startup(struct uart_port *port)
>>>> int retval;
>>>> unsigned long flags, temp;
>>>> +#ifndef CONFIG_SERIAL_CORE_CONSOLE
>>>> imx_setup_ufcr(sport, 0);
>>>> +#endif
>>>> /* disable the DREN bit (Data Ready interrupt enable) before
>>>> * requesting IRQs
>>>
>>>
>>> I'd rather do something like this
>>>
>>> static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode)
>>> {
>>> unsigned int val;
>>>
>>> /* set receiver / transmitter trigger level. */
>>> val = readl(sport->port.membase + UFCR) & UFCR_RFDIV;
>>
>> Shouldn't it be
>>
>> ... & (UFCR_RFDIV | UFCR_DCEDTE);
>>
>> then? My i.MX6 manual has DCEDTE as bit 6, which we don't want to
>> touch, too? We only want to touch TXTL and RXTL?
>>
>
> If you do that, you should also change imx_set_termios
> to possibly clear the bit
>
> new_ufcr = (old_ufcr & (~UFCR_RFDIV)) | UFCR_RFDIV_REG(div);
>
> to
>
> new_ufcr = (old_ufcr & (~(UFCR_RFDIV | UFCR_DCEDTE))) |
> UFCR_RFDIV_REG(div);
>
Sorry, I was looking at the wrong tree. Mainline does not have
sport->use_dcedte. I'm fine either way.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-08-28 18:45 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-27 7:36 [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP Dirk Behme
2012-08-27 7:36 ` [PATCH 1/2] tty: serial: imx: console write routing is unsafe " Dirk Behme
2012-08-27 22:33 ` Shawn Guo
2012-08-27 7:36 ` [PATCH 2/2] tty: serial: imx: don't reinit clock with enabled console Dirk Behme
2012-08-27 18:20 ` Troy Kisky
2012-08-28 10:46 ` Dirk Behme
2012-08-28 18:27 ` Troy Kisky
2012-08-28 18:45 ` Troy Kisky
2012-08-27 22:31 ` [PATCH 0/2] tty: serial: imx: fix lockup and garbage on SMP Shawn Guo
2012-08-27 22:51 ` Greg Kroah-Hartman
2012-08-27 23:37 ` Shawn Guo
2012-08-28 6:03 ` Dirk Behme
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).