From: Andre Przywara <andre.przywara@arm.com>
To: Dave P Martin <Dave.Martin@arm.com>,
Philip Elcan <pelcan@codeaurora.org>
Cc: Mark Rutland <Mark.Rutland@arm.com>,
"rob.herring@linaro.org" <rob.herring@linaro.org>,
"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
"arnd@arndb.de" <arnd@arndb.de>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>,
"jslaby@suse.cz" <jslaby@suse.cz>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 10/10] drivers: PL011: add support for the ARM SBSA generic UART
Date: Wed, 04 Mar 2015 17:47:40 +0000 [thread overview]
Message-ID: <54F7453C.5060407@arm.com> (raw)
In-Reply-To: <20150217161613.GC3783@e103592.cambridge.arm.com>
Philip,
sorry for the late reply, that was stuck in my Drafts folder :-(
On 02/17/2015 04:16 PM, Dave P Martin wrote:
> On Tue, Feb 17, 2015 at 10:55:35AM -0500, Philip Elcan wrote:
>> On 01/16/2015 12:23 PM, Andre Przywara wrote:
>>> The ARM Server Base System Architecture[1] document describes a
>>> generic UART which is a subset of the PL011 UART.
>>> It lacks DMA support, baud rate control and modem status line
>>> control, among other things.
>>> The idea is to move the UART initialization and setup into the
>>> firmware (which does this job today already) and let the kernel just
>>> use the UART for sending and receiving characters.
>>> We use the recent refactoring the build a new struct uart_ops
>>> variable which points to some new functions avoiding access to the
>>> missing registers. We reuse as much existing PL011 code as possible.
>>>
>>> In contrast to the PL011 the SBSA UART does not define any AMBA or
>>> PrimeCell relations, so we go a pretty generic probe function
>>> which only uses platform device functions.
>>> A DT binding is provided, but other systems can easily attach to it,
>>> too (hint, hint!).
>>>
>>> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
>>> ---
>>
>> <snip>
>>
>> Andre,
>>
>> I'm a little late to address this patchset, but the SBSA defines all
>> the Generic UART registers 32-bit wide. However, the amba-pl011 driver
>> uses 16-bit accessors. How will you be handling that? Can the ARM PL011
>> hardware handle 32-bit access?
>
> Interesting question. The PL011 TRM [1] specifies only a 16-bit-wide
> APB bus interface, but does not say that 32-bit accesses won't work.
>
> I suspect that 32-bit accesses will work on all or most PL011s -- if
> that looks too risky or we can't find enough test platforms to be sure
> of this, then we could maybe abstract the register access size as a
> quirk.
>
> Andre may already have an answer on this.
I am not sure if the 32-bit register _width_ mentioned in the spec
really mandates 32-bit accesses, also the width may be just a spec bug.
Since the SBSA states that an ARM PL011r1p5 is a valid SBSA-UART
implementation, I wonder how this goes together. Also the highest
non-reserved bit in the registers is bit 15 in PL011 and bit 11 in the
SBSA subset.
I fear the actual bus connection is an implementation detail. Given the
fact that all existing PL011 hardware so far works with the 16bit
accesses, I don't dare to change this.
So I'd suggest to keep it as readw/writew for now and the revisit this
topic if some SBSA UART users complain. That makes it easier to justify
the rather invasive change to all MMIO accessors (which I already tried
on one machine for now without problems, btw).
Cheers,
Andre.
WARNING: multiple messages have this Message-ID (diff)
From: andre.przywara@arm.com (Andre Przywara)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 10/10] drivers: PL011: add support for the ARM SBSA generic UART
Date: Wed, 04 Mar 2015 17:47:40 +0000 [thread overview]
Message-ID: <54F7453C.5060407@arm.com> (raw)
In-Reply-To: <20150217161613.GC3783@e103592.cambridge.arm.com>
Philip,
sorry for the late reply, that was stuck in my Drafts folder :-(
On 02/17/2015 04:16 PM, Dave P Martin wrote:
> On Tue, Feb 17, 2015 at 10:55:35AM -0500, Philip Elcan wrote:
>> On 01/16/2015 12:23 PM, Andre Przywara wrote:
>>> The ARM Server Base System Architecture[1] document describes a
>>> generic UART which is a subset of the PL011 UART.
>>> It lacks DMA support, baud rate control and modem status line
>>> control, among other things.
>>> The idea is to move the UART initialization and setup into the
>>> firmware (which does this job today already) and let the kernel just
>>> use the UART for sending and receiving characters.
>>> We use the recent refactoring the build a new struct uart_ops
>>> variable which points to some new functions avoiding access to the
>>> missing registers. We reuse as much existing PL011 code as possible.
>>>
>>> In contrast to the PL011 the SBSA UART does not define any AMBA or
>>> PrimeCell relations, so we go a pretty generic probe function
>>> which only uses platform device functions.
>>> A DT binding is provided, but other systems can easily attach to it,
>>> too (hint, hint!).
>>>
>>> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
>>> ---
>>
>> <snip>
>>
>> Andre,
>>
>> I'm a little late to address this patchset, but the SBSA defines all
>> the Generic UART registers 32-bit wide. However, the amba-pl011 driver
>> uses 16-bit accessors. How will you be handling that? Can the ARM PL011
>> hardware handle 32-bit access?
>
> Interesting question. The PL011 TRM [1] specifies only a 16-bit-wide
> APB bus interface, but does not say that 32-bit accesses won't work.
>
> I suspect that 32-bit accesses will work on all or most PL011s -- if
> that looks too risky or we can't find enough test platforms to be sure
> of this, then we could maybe abstract the register access size as a
> quirk.
>
> Andre may already have an answer on this.
I am not sure if the 32-bit register _width_ mentioned in the spec
really mandates 32-bit accesses, also the width may be just a spec bug.
Since the SBSA states that an ARM PL011r1p5 is a valid SBSA-UART
implementation, I wonder how this goes together. Also the highest
non-reserved bit in the registers is bit 15 in PL011 and bit 11 in the
SBSA subset.
I fear the actual bus connection is an implementation detail. Given the
fact that all existing PL011 hardware so far works with the 16bit
accesses, I don't dare to change this.
So I'd suggest to keep it as readw/writew for now and the revisit this
topic if some SBSA UART users complain. That makes it easier to justify
the rather invasive change to all MMIO accessors (which I already tried
on one machine for now without problems, btw).
Cheers,
Andre.
next prev parent reply other threads:[~2015-03-04 17:47 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-16 17:22 [PATCH 00/10] drivers: PL011: add ARM SBSA Generic UART support Andre Przywara
2015-01-16 17:22 ` Andre Przywara
2015-01-16 17:22 ` [PATCH 01/10] drivers: PL011: avoid potential unregister_driver call Andre Przywara
2015-01-16 17:22 ` Andre Przywara
2015-01-16 17:22 ` [PATCH 02/10] drivers: PL011: refactor pl011_startup() Andre Przywara
2015-01-16 17:22 ` Andre Przywara
2015-01-16 17:22 ` [PATCH 03/10] drivers: PL011: refactor pl011_shutdown() Andre Przywara
2015-01-16 17:22 ` Andre Przywara
2015-01-16 17:23 ` [PATCH 04/10] drivers: PL011: refactor pl011_set_termios() Andre Przywara
2015-01-16 17:23 ` Andre Przywara
2015-01-16 17:23 ` [PATCH 05/10] drivers: PL011: refactor pl011_probe() Andre Przywara
2015-01-16 17:23 ` Andre Przywara
2015-01-16 17:23 ` [PATCH 06/10] drivers: PL011: replace UART_MIS reading with _RIS & _IMSC Andre Przywara
2015-01-16 17:23 ` Andre Przywara
2015-01-16 17:23 ` [PATCH 07/10] drivers: PL011: move cts_event workaround into separate function Andre Przywara
2015-01-16 17:23 ` Andre Przywara
2015-01-16 17:23 ` [PATCH 08/10] drivers: PL011: allow avoiding UART enabling/disabling Andre Przywara
2015-01-16 17:23 ` Andre Przywara
2015-01-16 17:23 ` [PATCH 09/10] drivers: PL011: allow to supply fixed option string Andre Przywara
2015-01-16 17:23 ` Andre Przywara
2015-01-16 17:23 ` [PATCH 10/10] drivers: PL011: add support for the ARM SBSA generic UART Andre Przywara
2015-01-16 17:23 ` Andre Przywara
2015-01-16 17:34 ` Mark Rutland
2015-01-16 17:34 ` Mark Rutland
2015-01-16 18:07 ` Andre Przywara
2015-01-16 18:07 ` Andre Przywara
2015-01-16 18:12 ` Mark Rutland
2015-01-16 18:12 ` Mark Rutland
2015-01-16 18:33 ` Andre Przywara
2015-01-16 18:33 ` Andre Przywara
2015-01-16 18:37 ` Mark Rutland
2015-01-16 18:37 ` Mark Rutland
2015-01-19 13:31 ` Arnd Bergmann
2015-01-19 13:31 ` Arnd Bergmann
2015-01-19 13:44 ` Andre Przywara
2015-01-19 13:44 ` Andre Przywara
2015-01-19 13:56 ` Arnd Bergmann
2015-01-19 13:56 ` Arnd Bergmann
2015-02-17 15:55 ` Philip Elcan
2015-02-17 15:55 ` Philip Elcan
2015-02-17 16:16 ` Dave Martin
2015-02-17 16:16 ` Dave Martin
2015-03-04 17:47 ` Andre Przywara [this message]
2015-03-04 17:47 ` Andre Przywara
2015-03-05 11:15 ` Dave Martin
2015-03-05 11:15 ` Dave Martin
2015-01-16 17:31 ` [PATCH 00/10] drivers: PL011: add ARM SBSA Generic UART support Arnd Bergmann
2015-01-16 17:31 ` Arnd Bergmann
2015-01-16 17:53 ` Andre Przywara
2015-01-16 17:53 ` Andre Przywara
2015-01-20 13:08 ` Graeme Gregory
2015-01-20 13:08 ` Graeme Gregory
2015-01-20 13:55 ` Andre Przywara
2015-01-20 13:55 ` Andre Przywara
2015-01-20 14:26 ` Graeme Gregory
2015-01-20 14:26 ` Graeme Gregory
2015-01-20 14:33 ` Andre Przywara
2015-01-20 14:33 ` Andre Przywara
2015-01-20 14:52 ` Graeme Gregory
2015-01-20 14:52 ` Graeme Gregory
2015-01-21 9:26 ` Graeme Gregory
2015-01-21 9:26 ` Graeme Gregory
2015-01-20 14:32 ` Dave P Martin
2015-01-20 14:32 ` Dave P Martin
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=54F7453C.5060407@arm.com \
--to=andre.przywara@arm.com \
--cc=Dave.Martin@arm.com \
--cc=Mark.Rutland@arm.com \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=jslaby@suse.cz \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=pelcan@codeaurora.org \
--cc=rob.herring@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.