From: "Pali Rohár" <pali.rohar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
"Rob Herring"
<robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
"Russell King" <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
"Will Deacon" <will.deacon-5wv7dgnIgG8@public.gmane.org>,
"Ivaylo Dimitrov"
<ivo.g.dimitrov.75-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
"Sebastian Reichel" <sre-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>,
"Pavel Machek" <pavel-+ZI9xUNit7I@public.gmane.org>,
"Tony Lindgren" <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
"Andreas Färber" <afaerber-l3A5Bk7waGM@public.gmane.org>,
linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [RESEND] [PATCH v2 1/2] arm: devtree: Set system_rev from DT revision
Date: Wed, 6 May 2015 13:44:17 +0200 [thread overview]
Message-ID: <20150506114417.GI30910@pali> (raw)
In-Reply-To: <3529567.PeFp1NNa1q@wuerfel>
On Wednesday 06 May 2015 13:04:01 Arnd Bergmann wrote:
> On Wednesday 06 May 2015 12:37:52 Pali Rohár wrote:
> > On Wednesday 06 May 2015 11:31:15 Arnd Bergmann wrote:
> > > On Wednesday 06 May 2015 10:49:01 Pali Rohár wrote:
> > > > With this patch "revision" DT string entry is used to set global system_rev
> > > > variable. DT "revision" is expected to be string with one hexadecimal number.
> > > > So "Revision" line in /proc/cpuinfo will be same as "revision" DT value.
> > > >
> > > > Signed-off-by: Pali Rohár <pali.rohar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> > > > Acked-by: Pavel Machek <pavel-+ZI9xUNit7I@public.gmane.org>
> > >
> > > +devicetree mailing list
> > >
> > > The property needs to be specified in a binding somewhere.
> > >
> > > > @@ -246,5 +247,14 @@ const struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
> > > > /* Change machine number to match the mdesc we're using */
> > > > __machine_arch_type = mdesc->nr;
> > > >
> > > > + /* Set system revision from DT */
> > > > + prop = of_get_flat_dt_prop(dt_root, "revision", &size);
> > > > + if (prop && size > 0) {
> > > > + char revision[11];
> > > > + strlcpy(revision, prop, min(size, (int)sizeof(revision)));
> > > > + if (kstrtouint(revision, 16, &system_rev) != 0)
> > > > + system_rev = 0;
> > > > + }
> > > > +
> > > > return mdesc;
> > > > }
> > > >
> > >
> > > What is the reason for doing it this early? I think it would be nicer to do
> > > it after unflattening the DT.
> > >
> >
> > It needs to be done in this code, so "system_rev" variable is set
> > properly...
>
> What I mean is which code accesses this variable that early?
>
ATAG code is doing it at same early stage, so I added it to same early
stage...
> > > Also, it seems strange to have a string property and then use kstrtouint
> > > to convert it into a number. I think it should either be specified in a DT
> > > binding to be a string and then have the kernel not assume that it is a number,
> > > or we should define it to be binary.
> > >
> > > Arnd
> >
> > Variable "system_rev" is number and it always was. So chaning type will
> > break more parts.
> >
> > And it is string DT property to be human readable. Some other developers
> > suggested for v2 to change it to string (from number).
>
> Both of them would be human readable, you just use something else to
> read them ;-)
>
> If we have a string here, we should just change all uses of system_rev
> in the kernel accordingly, there are only a few of them:
>
> $ git grep -w system_rev
> arch/arm/include/asm/system_info.h:extern unsigned int system_rev;
> arch/arm/kernel/atags_parse.c: system_rev = tag->u.revision.rev;
> arch/arm/kernel/setup.c:unsigned int system_rev;
> arch/arm/kernel/setup.c:EXPORT_SYMBOL(system_rev);
> arch/arm/kernel/setup.c: seq_printf(m, "Revision\t: %04x\n", system_rev);
> arch/arm/mach-clps711x/devices.c: system_rev = SYSFLG1_VERID(readl(base + SYSFLG1));
> arch/arm/mach-clps711x/devices.c: soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%u", system_rev);
> arch/arm/mach-davinci/board-da850-evm.c: switch (system_rev & 0xF) {
> arch/arm/mach-imx/mach-imx27_visstrim_m10.c: system_rev = 0x27000;
> arch/arm/mach-imx/mach-imx27_visstrim_m10.c: system_rev |= (mo_version << MOTHERBOARD_SHIFT);
> arch/arm/mach-imx/mach-imx27_visstrim_m10.c: system_rev |= (exp_version << EXPBOARD_SHIFT);
> arch/arm/mach-imx/mach-imx27_visstrim_m10.c: mo_version = (system_rev >> MOTHERBOARD_SHIFT) & VERSION_MASK;
> arch/arm/mach-ixp4xx/goramo_mlr.c: system_rev = __raw_readl(flash + CFG_REV);
> arch/arm/mach-omap2/board-rx51-peripherals.c: if ((system_rev >= SYSTEM_REV_S_USES_VAUX3 && system_rev < 0x100) ||
> arch/arm/mach-omap2/board-rx51-peripherals.c: system_rev >= SYSTEM_REV_B_USES_VAUX3) {
> arch/arm/mach-orion5x/dns323-setup.c: if (machine_is_dns323() && system_rev == DNS323_REV_A1)
> arch/arm/mach-orion5x/dns323-setup.c: system_rev = dns323_identify_rev();
> arch/arm/mach-orion5x/dns323-setup.c: pr_info("DNS-323: Identified HW revision %c1\n", 'A' + system_rev);
> arch/arm/mach-orion5x/dns323-setup.c: switch(system_rev) {
> arch/arm/mach-orion5x/dns323-setup.c: switch(system_rev) {
> arch/arm/mach-orion5x/dns323-setup.c: switch(system_rev) {
> arch/arm/mach-pxa/cm-x300.c: if (system_rev < 130)
> arch/arm/mach-pxa/cm-x300.c: if (system_rev < 130) {
> arch/arm/mach-pxa/cm-x300.c: if (system_rev < 130)
> arch/arm/mach-pxa/magician.c: if (system_rev < 3)
> arch/arm/mach-pxa/magician.c: if (system_rev < 3)
> arch/arm/mach-pxa/magician.c: system_rev = board_id & 0x7;
> arch/arm/mach-pxa/magician.c: if (lcd_select && (system_rev < 3))
> arch/arm/mach-pxa/raumfeld.c: if ((system_rev & 0xff) == 2) {
> arch/arm/mach-pxa/raumfeld.c: if ((system_rev & 0xff) > 1) {
> arch/arm/mach-pxa/viper.c: system_rev = (VIPER_BOARD_VERSION(version) << 8) |
> arch/arm/mach-pxa/zeus.c: system_rev = __raw_readw(ZEUS_CPLD_VERSION);
> arch/arm/mach-pxa/zeus.c: pr_info("Zeus CPLD V%dI%d\n", (system_rev & 0xf0) >> 4, (system_rev & 0x0f));
> arch/arm/mach-zynq/common.c: system_rev = zynq_get_revision();
> arch/arm/mach-zynq/common.c: soc_dev_attr->revision = kasprintf(GFP_KERNEL, "0x%x", system_rev);
>
> In fact, half the uses of this actually assign the revision number themselves.
> code outside of arch/arm/mach-* and /proc/cpuinfo currently uses the variable.
>
> Arnd
--
Pali Rohár
pali.rohar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
--
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-05-06 11:44 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1430902142-17035-1-git-send-email-pali.rohar@gmail.com>
[not found] ` <1430902142-17035-2-git-send-email-pali.rohar@gmail.com>
2015-05-06 9:31 ` [RESEND] [PATCH v2 1/2] arm: devtree: Set system_rev from DT revision Arnd Bergmann
2015-05-06 10:37 ` Pali Rohár
2015-05-06 11:04 ` Arnd Bergmann
2015-05-06 11:44 ` Pali Rohár [this message]
2015-06-25 5:01 ` Tony Lindgren
2015-06-25 7:18 ` Pali Rohár
2015-06-25 7:22 ` Tony Lindgren
2015-06-25 7:27 ` Pali Rohár
2015-06-25 7:41 ` Tony Lindgren
[not found] ` <20150625050138.GL4156-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2015-07-06 12:23 ` Pali Rohár
2015-07-06 12:31 ` Tony Lindgren
[not found] ` <20150706123126.GG10705-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2015-07-06 13:12 ` Pali Rohár
2015-07-06 13:55 ` Tony Lindgren
2015-07-06 15:22 ` Rob Herring
[not found] ` <CAL_Jsq+ysDqxTgfW1JvG5czHa4UkZQDv1BN63iK4jvV9kDXM8w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-06 16:20 ` Pali Rohár
2015-07-06 16:36 ` Pali Rohár
2015-07-06 17:30 ` Rob Herring
2015-07-06 15:20 ` Rob Herring
2015-07-06 15:24 ` Tony Lindgren
2015-06-25 10:03 ` Russell King - ARM Linux
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=20150506114417.GI30910@pali \
--to=pali.rohar-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=afaerber-l3A5Bk7waGM@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ivo.g.dimitrov.75-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
--cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=pavel-+ZI9xUNit7I@public.gmane.org \
--cc=robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=sre-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org \
--cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@public.gmane.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 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).