All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Hogan <james.hogan@imgtec.com>
To: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Cc: Tim Kryger <tim.kryger@linaro.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org,
	patches@linaro.org,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Gregory Clement <gregory.clement@free-electrons.com>,
	Lior Amsalem <alior@marvell.com>,
	Jason Cooper <jason@lakedaemon.net>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2] serial: 8250_dw: Improve unwritable LCR workaround
Date: Fri, 06 Dec 2013 23:51:25 +0000	[thread overview]
Message-ID: <5548535.pYirbknue4@radagast> (raw)
In-Reply-To: <4548523.McqEijQYrs@radagast>

[-- Attachment #1: Type: text/plain, Size: 1376 bytes --]

On Friday 06 December 2013 23:29:02 James Hogan wrote:
> So it looks like the LCR does always change immediately for me in this case
> (obviously it hasn't hit the BUSY case), but not all the bits can be
> written. In particular bit 5 and bit 7 at the least. If I do this (sorry
> for whitespace munging):
> 
> diff --git a/drivers/tty/serial/8250/8250_dw.c
> b/drivers/tty/serial/8250/8250_dw.c
> index 4658e3e..722d448 100644
> --- a/drivers/tty/serial/8250/8250_dw.c
> +++ b/drivers/tty/serial/8250/8250_dw.c
> @@ -96,7 +96,7 @@ static void dw8250_serial_out(struct uart_port *p, int
> offset, int value)
>  	if (offset == UART_LCR) {
>  		int tries = 1000;
>  		while (tries--) {
> -			if (value == p->serial_in(p, UART_LCR))
> +			if (value & ~0xa0 == p->serial_in(p, UART_LCR) & ~0xa0)
>  				return;
>  			dw8250_force_idle(p);
>  			writeb(value, p->membase + (UART_LCR << p->regshift));
> @@ -132,7 +132,7 @@ static void dw8250_serial_out32(struct uart_port *p, int
> offset, int value)
>  	if (offset == UART_LCR) {
>  		int tries = 1000;
>  		while (tries--) {
> -			if (value == p->serial_in(p, UART_LCR))
> +			if (value & ~0xa0 == p->serial_in(p, UART_LCR) & ~0xa0)

My appologies, that should have had some more brackets (I should have retested 
after cleaning up my debugging). I.e.
+			if ((value & ~0xa0) == (p->serial_in(p, UART_LCR) & ~0xa0))

Cheers
James

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: james.hogan@imgtec.com (James Hogan)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] serial: 8250_dw: Improve unwritable LCR workaround
Date: Fri, 06 Dec 2013 23:51:25 +0000	[thread overview]
Message-ID: <5548535.pYirbknue4@radagast> (raw)
In-Reply-To: <4548523.McqEijQYrs@radagast>

On Friday 06 December 2013 23:29:02 James Hogan wrote:
> So it looks like the LCR does always change immediately for me in this case
> (obviously it hasn't hit the BUSY case), but not all the bits can be
> written. In particular bit 5 and bit 7 at the least. If I do this (sorry
> for whitespace munging):
> 
> diff --git a/drivers/tty/serial/8250/8250_dw.c
> b/drivers/tty/serial/8250/8250_dw.c
> index 4658e3e..722d448 100644
> --- a/drivers/tty/serial/8250/8250_dw.c
> +++ b/drivers/tty/serial/8250/8250_dw.c
> @@ -96,7 +96,7 @@ static void dw8250_serial_out(struct uart_port *p, int
> offset, int value)
>  	if (offset == UART_LCR) {
>  		int tries = 1000;
>  		while (tries--) {
> -			if (value == p->serial_in(p, UART_LCR))
> +			if (value & ~0xa0 == p->serial_in(p, UART_LCR) & ~0xa0)
>  				return;
>  			dw8250_force_idle(p);
>  			writeb(value, p->membase + (UART_LCR << p->regshift));
> @@ -132,7 +132,7 @@ static void dw8250_serial_out32(struct uart_port *p, int
> offset, int value)
>  	if (offset == UART_LCR) {
>  		int tries = 1000;
>  		while (tries--) {
> -			if (value == p->serial_in(p, UART_LCR))
> +			if (value & ~0xa0 == p->serial_in(p, UART_LCR) & ~0xa0)

My appologies, that should have had some more brackets (I should have retested 
after cleaning up my debugging). I.e.
+			if ((value & ~0xa0) == (p->serial_in(p, UART_LCR) & ~0xa0))

Cheers
James
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20131206/bac2c317/attachment.sig>

  reply	other threads:[~2013-12-06 23:51 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-01 17:18 [PATCH v2] serial: 8250_dw: Improve unwritable LCR workaround Tim Kryger
2013-10-02  9:47 ` Heikki Krogerus
2013-11-26 18:36 ` Ezequiel Garcia
2013-11-26 18:36   ` Ezequiel Garcia
2013-11-26 18:36   ` Ezequiel Garcia
2013-11-26 23:03   ` Tim Kryger
2013-11-26 23:03     ` Tim Kryger
2013-11-26 23:03     ` Tim Kryger
2013-11-27 18:54     ` Ezequiel Garcia
2013-11-27 18:54       ` Ezequiel Garcia
2013-11-27 18:54       ` Ezequiel Garcia
2013-11-28  2:46       ` Tim Kryger
2013-11-28  2:46         ` Tim Kryger
2013-11-28  8:30       ` Thomas Petazzoni
2013-11-28  8:30         ` Thomas Petazzoni
2013-11-28 19:47         ` Ezequiel Garcia
2013-11-28 19:47           ` Ezequiel Garcia
2013-11-28 19:47           ` Ezequiel Garcia
2013-11-28 19:53           ` Ezequiel Garcia
2013-11-28 19:53             ` Ezequiel Garcia
2013-11-28 19:53             ` Ezequiel Garcia
2013-12-04 13:01             ` Ezequiel Garcia
2013-12-04 13:01               ` Ezequiel Garcia
2013-12-04 13:01               ` Ezequiel Garcia
2013-12-04 18:56               ` Tim Kryger
2013-12-04 18:56                 ` Tim Kryger
2013-12-04 18:56                 ` Tim Kryger
2013-12-06 23:29   ` James Hogan
2013-12-06 23:29     ` James Hogan
2013-12-06 23:51     ` James Hogan [this message]
2013-12-06 23:51       ` James Hogan
2013-12-07  0:31       ` Tim Kryger
2013-12-07  0:31         ` Tim Kryger
2013-12-07  0:59         ` James Hogan
2013-12-07  0:59           ` James Hogan
2013-12-10  0:42           ` Tim Kryger
2013-12-10  0:42             ` Tim Kryger
2013-12-10 12:11             ` Ezequiel Garcia
2013-12-10 12:11               ` Ezequiel Garcia
2013-12-10 12:11               ` Ezequiel Garcia
2013-12-10 22:48               ` James Hogan
2013-12-10 22:48                 ` James Hogan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5548535.pYirbknue4@radagast \
    --to=james.hogan@imgtec.com \
    --cc=alior@marvell.com \
    --cc=ezequiel.garcia@free-electrons.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gregory.clement@free-electrons.com \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=jason@lakedaemon.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=patches@linaro.org \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=tim.kryger@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.