From: Peter Hurley <peter@hurleysoftware.com>
To: Grant Likely <grant.likely@linaro.org>,
Kevin Cernekee <cernekee@gmail.com>,
gregkh@linuxfoundation.org, jslaby@suse.cz, robh@kernel.org
Cc: arnd@arndb.de, f.fainelli@gmail.com,
linux-serial@vger.kernel.org, devicetree@vger.kernel.org,
linux-mips@linux-mips.org
Subject: Re: [PATCH V3 5/7] serial: earlycon: Set UPIO_MEM32BE based on DT properties
Date: Sat, 28 Mar 2015 13:01:24 -0400 [thread overview]
Message-ID: <5516DE64.6000104@hurleysoftware.com> (raw)
In-Reply-To: <20150328013604.488A0C4091F@trevor.secretlab.ca>
Hi Grant,
On 03/27/2015 09:36 PM, Grant Likely wrote:
> On Sun, 01 Mar 2015 17:23:11 -0500
> , Peter Hurley <peter@hurleysoftware.com>
> wrote:
>> Hi Kevin,
>>
>> On 11/24/2014 06:36 PM, Kevin Cernekee wrote:
>>> If an earlycon (stdout-path) node is being used, check for "big-endian"
>>> or "native-endian" properties and pass the appropriate iotype to the
>>> driver.
>>>
>>> Note that LE sets UPIO_MEM (8-bit) but BE sets UPIO_MEM32BE (32-bit). The
>>> big-endian property only really makes sense in the context of 32-bit
>>> registers, since 8-bit accesses never require data swapping.
>>>
>>> At some point, the of_earlycon code may want to pass in the reg-io-width,
>>> reg-offset, and reg-shift parameters too.
>>>
>>> Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
>>> ---
>>> drivers/of/fdt.c | 7 ++++++-
>>> drivers/tty/serial/earlycon.c | 4 ++--
>>> include/linux/serial_core.h | 2 +-
>>> 3 files changed, 9 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
>>> index 658656f..9d21472 100644
>>> --- a/drivers/of/fdt.c
>>> +++ b/drivers/of/fdt.c
>>> @@ -794,6 +794,8 @@ int __init early_init_dt_scan_chosen_serial(void)
>>>
>>> while (match->compatible[0]) {
>>> unsigned long addr;
>>> + unsigned char iotype = UPIO_MEM;
>>> +
>>> if (fdt_node_check_compatible(fdt, offset, match->compatible)) {
>>> match++;
>>> continue;
>>> @@ -803,7 +805,10 @@ int __init early_init_dt_scan_chosen_serial(void)
>>> if (!addr)
>>> return -ENXIO;
>>>
>>> - of_setup_earlycon(addr, match->data);
>>> + if (of_fdt_is_big_endian(fdt, offset))
>>> + iotype = UPIO_MEM32BE;
>>> +
>>> + of_setup_earlycon(addr, iotype, match->data);
>>
>> I know these got ACKs already but as you point out in the commit log,
>> earlycon _will_ need reg-io-width, reg-offset and reg-shift. Since the
>> distinction between early_init_dt_scan_chosen_serial() and
>> of_setup_earlycon() is arbitrary, I'd rather see of_setup_earlycon()
>> taught to properly decode of_serial driver bindings instead of a
>> stack of parameters to of_setup_earlycon().
>>
>> In fact, this patch allows a mis-defined devicetree to bring up a
>> functioning earlycon because the 'big-endian' property is directly
>> associated with UPIO_MEM32BE, which will create incompatibility problems
>> when DT earlycon is fixed to decode the of_serial DT bindings.
>
> That's a good point. This hasn't been merged yet, so there isn't any
> impact on addressing this. I would propose that for consistency, the
> earlycon code should always default to 8-bit access. if big-endian
> accesses are required, then reg-io-width + big-endian must be specified.
>
> Something like the following would do it and would be future-proof. We
> can add support for 16 or 64bit big or little endian access if it ever
> became necessary.
I was planning on adding MEM32BE support to OF earlycon on top of my
patch series 'OF earlycon cleanup', which adds full support for the
of_serial driver DT properties (among other things).
Unfortunately, that series is waiting on two things:
1. libfdt upstream patch, which I submitted but was referred back to me
to add test cases. That was 3 weeks ago and I simply haven't had a free
day to burn to figure out how their test matrix is organized. I don't
think that's going to change anytime soon; I might just abandon that patch
and do the string manipulation on the stack.
ATM, earlycon is still broken if stdout-path options have been set.
2. Rob never got back to me on my query [1] to unify the OF_EARLYCON_DECLARE
macro with the EARLYCON_DECLARE macro so that all earlycon consoles
are named.
Regards,
Peter Hurley
[1] https://lkml.org/lkml/2015/3/6/571
WARNING: multiple messages have this Message-ID (diff)
From: Peter Hurley <peter-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
To: Grant Likely
<grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Kevin Cernekee <cernekee-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
jslaby-AlSwsSmVLrQ@public.gmane.org,
robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Cc: arnd-r2nGTMty4D4@public.gmane.org,
f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-mips-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org
Subject: Re: [PATCH V3 5/7] serial: earlycon: Set UPIO_MEM32BE based on DT properties
Date: Sat, 28 Mar 2015 13:01:24 -0400 [thread overview]
Message-ID: <5516DE64.6000104@hurleysoftware.com> (raw)
In-Reply-To: <20150328013604.488A0C4091F-WNowdnHR2B42iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
Hi Grant,
On 03/27/2015 09:36 PM, Grant Likely wrote:
> On Sun, 01 Mar 2015 17:23:11 -0500
> , Peter Hurley <peter-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
> wrote:
>> Hi Kevin,
>>
>> On 11/24/2014 06:36 PM, Kevin Cernekee wrote:
>>> If an earlycon (stdout-path) node is being used, check for "big-endian"
>>> or "native-endian" properties and pass the appropriate iotype to the
>>> driver.
>>>
>>> Note that LE sets UPIO_MEM (8-bit) but BE sets UPIO_MEM32BE (32-bit). The
>>> big-endian property only really makes sense in the context of 32-bit
>>> registers, since 8-bit accesses never require data swapping.
>>>
>>> At some point, the of_earlycon code may want to pass in the reg-io-width,
>>> reg-offset, and reg-shift parameters too.
>>>
>>> Signed-off-by: Kevin Cernekee <cernekee-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>> ---
>>> drivers/of/fdt.c | 7 ++++++-
>>> drivers/tty/serial/earlycon.c | 4 ++--
>>> include/linux/serial_core.h | 2 +-
>>> 3 files changed, 9 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
>>> index 658656f..9d21472 100644
>>> --- a/drivers/of/fdt.c
>>> +++ b/drivers/of/fdt.c
>>> @@ -794,6 +794,8 @@ int __init early_init_dt_scan_chosen_serial(void)
>>>
>>> while (match->compatible[0]) {
>>> unsigned long addr;
>>> + unsigned char iotype = UPIO_MEM;
>>> +
>>> if (fdt_node_check_compatible(fdt, offset, match->compatible)) {
>>> match++;
>>> continue;
>>> @@ -803,7 +805,10 @@ int __init early_init_dt_scan_chosen_serial(void)
>>> if (!addr)
>>> return -ENXIO;
>>>
>>> - of_setup_earlycon(addr, match->data);
>>> + if (of_fdt_is_big_endian(fdt, offset))
>>> + iotype = UPIO_MEM32BE;
>>> +
>>> + of_setup_earlycon(addr, iotype, match->data);
>>
>> I know these got ACKs already but as you point out in the commit log,
>> earlycon _will_ need reg-io-width, reg-offset and reg-shift. Since the
>> distinction between early_init_dt_scan_chosen_serial() and
>> of_setup_earlycon() is arbitrary, I'd rather see of_setup_earlycon()
>> taught to properly decode of_serial driver bindings instead of a
>> stack of parameters to of_setup_earlycon().
>>
>> In fact, this patch allows a mis-defined devicetree to bring up a
>> functioning earlycon because the 'big-endian' property is directly
>> associated with UPIO_MEM32BE, which will create incompatibility problems
>> when DT earlycon is fixed to decode the of_serial DT bindings.
>
> That's a good point. This hasn't been merged yet, so there isn't any
> impact on addressing this. I would propose that for consistency, the
> earlycon code should always default to 8-bit access. if big-endian
> accesses are required, then reg-io-width + big-endian must be specified.
>
> Something like the following would do it and would be future-proof. We
> can add support for 16 or 64bit big or little endian access if it ever
> became necessary.
I was planning on adding MEM32BE support to OF earlycon on top of my
patch series 'OF earlycon cleanup', which adds full support for the
of_serial driver DT properties (among other things).
Unfortunately, that series is waiting on two things:
1. libfdt upstream patch, which I submitted but was referred back to me
to add test cases. That was 3 weeks ago and I simply haven't had a free
day to burn to figure out how their test matrix is organized. I don't
think that's going to change anytime soon; I might just abandon that patch
and do the string manipulation on the stack.
ATM, earlycon is still broken if stdout-path options have been set.
2. Rob never got back to me on my query [1] to unify the OF_EARLYCON_DECLARE
macro with the EARLYCON_DECLARE macro so that all earlycon consoles
are named.
Regards,
Peter Hurley
[1] https://lkml.org/lkml/2015/3/6/571
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-03-28 17:01 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-24 23:36 [PATCH V3 0/7] serial: Configure {big,native}-endian MMIO accesses via DT Kevin Cernekee
2014-11-24 23:36 ` [PATCH V3 1/7] of: Add helper function to check MMIO register endianness Kevin Cernekee
2014-11-24 23:36 ` [PATCH V3 2/7] of/fdt: Add endianness helper function for early init code Kevin Cernekee
2014-11-24 23:36 ` [PATCH V3 3/7] of: Document {little,big,native}-endian bindings Kevin Cernekee
2015-03-02 13:14 ` Peter Hurley
2015-03-02 13:14 ` Peter Hurley
2015-03-02 14:56 ` Kevin Cernekee
2015-03-02 14:56 ` Kevin Cernekee
2015-03-02 16:08 ` Peter Hurley
2015-03-02 16:08 ` Peter Hurley
2015-03-02 16:28 ` Kevin Cernekee
2015-03-02 16:28 ` Kevin Cernekee
2015-03-02 17:45 ` Peter Hurley
2015-03-02 17:45 ` Peter Hurley
2015-03-02 18:57 ` Kevin Cernekee
2015-03-02 18:57 ` Kevin Cernekee
2015-03-20 23:48 ` Grant Likely
2015-03-20 23:48 ` Grant Likely
2014-11-24 23:36 ` [PATCH V3 4/7] serial: core: Add big-endian iotype Kevin Cernekee
2014-11-24 23:36 ` [PATCH V3 5/7] serial: earlycon: Set UPIO_MEM32BE based on DT properties Kevin Cernekee
2014-11-24 23:36 ` Kevin Cernekee
2015-03-01 22:23 ` Peter Hurley
2015-03-01 22:23 ` Peter Hurley
2015-03-28 1:36 ` Grant Likely
2015-03-28 1:36 ` Grant Likely
2015-03-28 17:01 ` Peter Hurley [this message]
2015-03-28 17:01 ` Peter Hurley
2015-03-28 19:28 ` Kevin Cernekee
2015-03-28 19:28 ` Kevin Cernekee
2015-04-02 15:36 ` Peter Hurley
2015-04-02 15:36 ` Peter Hurley
2015-04-08 17:56 ` Peter Hurley
2015-04-08 17:56 ` Peter Hurley
2015-04-02 16:15 ` Peter Hurley
2015-04-02 16:15 ` Peter Hurley
2015-04-02 13:32 ` Grant Likely
2015-04-02 13:32 ` Grant Likely
2015-04-02 15:33 ` Peter Hurley
2015-04-02 15:33 ` Peter Hurley
2015-04-02 13:46 ` Rob Herring
2015-04-02 13:46 ` Rob Herring
2015-04-02 15:35 ` Peter Hurley
2015-04-02 15:35 ` Peter Hurley
2015-04-06 17:36 ` Peter Hurley
2015-04-06 17:36 ` Peter Hurley
2015-04-06 21:07 ` Rob Herring
2015-04-06 21:07 ` Rob Herring
2014-11-24 23:36 ` [PATCH V3 6/7] serial: of_serial: Support big-endian register accesses Kevin Cernekee
2014-11-24 23:36 ` [PATCH V3 7/7] serial: 8250: Add support for big-endian MMIO accesses Kevin Cernekee
2014-11-24 23:55 ` [PATCH V3 0/7] serial: Configure {big,native}-endian MMIO accesses via DT Florian Fainelli
2014-11-25 10:21 ` Arnd Bergmann
2014-11-25 15:10 ` Grant Likely
2014-11-25 17:38 ` Greg KH
2014-11-25 21:11 ` Greg KH
2014-11-26 13:14 ` Grant Likely
2015-02-21 20:53 ` Kevin Cernekee
2015-02-21 20:53 ` Kevin Cernekee
2015-02-21 22:18 ` Rob Herring
2015-02-21 22:18 ` Rob Herring
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=5516DE64.6000104@hurleysoftware.com \
--to=peter@hurleysoftware.com \
--cc=arnd@arndb.de \
--cc=cernekee@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=f.fainelli@gmail.com \
--cc=grant.likely@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=jslaby@suse.cz \
--cc=linux-mips@linux-mips.org \
--cc=linux-serial@vger.kernel.org \
--cc=robh@kernel.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.