All of lore.kernel.org
 help / color / mirror / Atom feed
From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 0/3] ARM: use C pre-processor with dtc
Date: Tue, 25 Sep 2012 13:51:55 -0600	[thread overview]
Message-ID: <50620B5B.5020904@wwwdotorg.org> (raw)
In-Reply-To: <1348601746.5565.18@snotra>

On 09/25/2012 01:35 PM, Scott Wood wrote:
> On 09/25/2012 02:06:35 PM, Stephen Warren wrote:
>> From: Stephen Warren <swarren@nvidia.com>
>>
>> This series adds some build rules to run cpp on *.dts-cpp prior to
>> invoking dtc, and converts Tegra to the new rule as an example. What do
>> people think?
>>
>> I assume that you've applied the dtc patches I sent yesterday. They
>> aren't in this series. See:
>>
>> https://lists.ozlabs.org/pipermail/devicetree-discuss/2012-September/020182.html
>>
>> https://lists.ozlabs.org/pipermail/devicetree-discuss/2012-September/020183.html
>>
>> https://lists.ozlabs.org/pipermail/devicetree-discuss/2012-September/020181.html
>>
>>
>> Note: those patches are against upstream dtc. If you wish to test this
>> series, apply the dtc patches to upstream dtc, build it, and copy the
>> resultant dtc binary over the top of scripts/dtc/dtc.
>>
>> Stephen Warren (3):
>>   kbuild: introduce cmd_dtc_cpp
>>   ARM: use cmd_dtc_cpp for compilation of *.dts-cpp to *.dtb
>>   ARM: tegra: compile all DT files with cpp
> 
> Do you have an example of where you'd actually benefit from this?  I'd
> think most things could either be done reasonably well with what's built
> into DTC (see what we've done in arch/powerpc/boot/dts/fsl), or would
> need math expression support in DTC (or has that been added?).

Yes, support for basic integer math in cell values has indeed been
recently added to upstream dtc. I don't believe this has been ported
into the in-kernel dtc yet though.

The primary motivation here is probably naming constants and associated
readability. For example, instead of:

nvidia,phy-reset-gpio = <&gpio 169 0>; /* gpio PV1 */

You could write:

nvidia,phy-reset-gpio = <&gpio TEGRA_GPIO_PV1 0>;

No more opaque numbers!

Equally, a number of recent bindings have tended towards using strings
rather than integers solely in order to make the DT readable without
having to know 10000 numbers off the top of your head:

pinmux {
...
    state_default: pinmux {
...
        atb {
            nvidia,pins = "atb", "gma", "gme";
            nvidia,function = "sdio4";


could be:

    state_default: pinmux {
...
        atb {
            nvidia,pins = <TEGRA_PIN_ATB, TEGRA_PIN_GMA, TEGRA_PIN_GME>;
            nvidia,function = <TEGRA_FUNCTION_SDIO4>;

This would improve parsing speed (eliminate strcmps), perhaps reduce DT
size (assuming average string length > 4 characters), eliminate the
possibility of typos in strings, and allow .dts and drivers to include
the same header file to define those constants, thus guaranteeing they
be in sync.

Equally, there has been some discussion of using named constants with
the math expression feature e.g.:

interrupts = <0 104 0x03>;

could be:

interrupts = <BANK_FOO INT_GPIO5 (INT_EDGE_RISING | INT_EDGE_FALLING)>;

I believe many many users of this feature would come out of the woodwork
once it's available.

WARNING: multiple messages have this Message-ID (diff)
From: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
To: Scott Wood <scottwood-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Cc: Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [RFC PATCH 0/3] ARM: use C pre-processor with dtc
Date: Tue, 25 Sep 2012 13:51:55 -0600	[thread overview]
Message-ID: <50620B5B.5020904@wwwdotorg.org> (raw)
In-Reply-To: <1348601746.5565.18@snotra>

On 09/25/2012 01:35 PM, Scott Wood wrote:
> On 09/25/2012 02:06:35 PM, Stephen Warren wrote:
>> From: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>>
>> This series adds some build rules to run cpp on *.dts-cpp prior to
>> invoking dtc, and converts Tegra to the new rule as an example. What do
>> people think?
>>
>> I assume that you've applied the dtc patches I sent yesterday. They
>> aren't in this series. See:
>>
>> https://lists.ozlabs.org/pipermail/devicetree-discuss/2012-September/020182.html
>>
>> https://lists.ozlabs.org/pipermail/devicetree-discuss/2012-September/020183.html
>>
>> https://lists.ozlabs.org/pipermail/devicetree-discuss/2012-September/020181.html
>>
>>
>> Note: those patches are against upstream dtc. If you wish to test this
>> series, apply the dtc patches to upstream dtc, build it, and copy the
>> resultant dtc binary over the top of scripts/dtc/dtc.
>>
>> Stephen Warren (3):
>>   kbuild: introduce cmd_dtc_cpp
>>   ARM: use cmd_dtc_cpp for compilation of *.dts-cpp to *.dtb
>>   ARM: tegra: compile all DT files with cpp
> 
> Do you have an example of where you'd actually benefit from this?  I'd
> think most things could either be done reasonably well with what's built
> into DTC (see what we've done in arch/powerpc/boot/dts/fsl), or would
> need math expression support in DTC (or has that been added?).

Yes, support for basic integer math in cell values has indeed been
recently added to upstream dtc. I don't believe this has been ported
into the in-kernel dtc yet though.

The primary motivation here is probably naming constants and associated
readability. For example, instead of:

nvidia,phy-reset-gpio = <&gpio 169 0>; /* gpio PV1 */

You could write:

nvidia,phy-reset-gpio = <&gpio TEGRA_GPIO_PV1 0>;

No more opaque numbers!

Equally, a number of recent bindings have tended towards using strings
rather than integers solely in order to make the DT readable without
having to know 10000 numbers off the top of your head:

pinmux {
...
    state_default: pinmux {
...
        atb {
            nvidia,pins = "atb", "gma", "gme";
            nvidia,function = "sdio4";


could be:

    state_default: pinmux {
...
        atb {
            nvidia,pins = <TEGRA_PIN_ATB, TEGRA_PIN_GMA, TEGRA_PIN_GME>;
            nvidia,function = <TEGRA_FUNCTION_SDIO4>;

This would improve parsing speed (eliminate strcmps), perhaps reduce DT
size (assuming average string length > 4 characters), eliminate the
possibility of typos in strings, and allow .dts and drivers to include
the same header file to define those constants, thus guaranteeing they
be in sync.

Equally, there has been some discussion of using named constants with
the math expression feature e.g.:

interrupts = <0 104 0x03>;

could be:

interrupts = <BANK_FOO INT_GPIO5 (INT_EDGE_RISING | INT_EDGE_FALLING)>;

I believe many many users of this feature would come out of the woodwork
once it's available.

  parent reply	other threads:[~2012-09-25 19:51 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-25 19:06 [RFC PATCH 0/3] ARM: use C pre-processor with dtc Stephen Warren
2012-09-25 19:06 ` Stephen Warren
2012-09-25 19:06 ` [RFC PATCH 1/3] kbuild: introduce cmd_dtc_cpp Stephen Warren
2012-09-25 19:06   ` Stephen Warren
2012-09-27  5:44   ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-27  5:44     ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-27 15:39     ` Stephen Warren
2012-09-27 15:39       ` Stephen Warren
2012-09-27 17:40       ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-27 17:40         ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-25 19:06 ` [RFC PATCH 2/3] ARM: use cmd_dtc_cpp for compilation of *.dts-cpp to *.dtb Stephen Warren
2012-09-25 19:06   ` Stephen Warren
2012-09-27  5:47   ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-27  5:47     ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-27 15:40     ` Stephen Warren
2012-09-27 15:40       ` Stephen Warren
2012-09-25 19:06 ` [RFC PATCH 3/3] ARM: tegra: compile all DT files with cpp Stephen Warren
2012-09-25 19:06   ` Stephen Warren
2012-09-25 19:35 ` [RFC PATCH 0/3] ARM: use C pre-processor with dtc Scott Wood
2012-09-25 19:35   ` Scott Wood
2012-09-25 19:51   ` Mark Brown
2012-09-25 19:51     ` Mark Brown
2012-09-25 19:59     ` Scott Wood
2012-09-25 19:59       ` Scott Wood
2012-09-25 20:05       ` Stephen Warren
2012-09-25 20:05         ` Stephen Warren
2012-09-25 20:05       ` Mark Brown
2012-09-25 20:05         ` Mark Brown
2012-09-25 19:51   ` Stephen Warren [this message]
2012-09-25 19:51     ` Stephen Warren
2012-09-25 23:46     ` Tony Lindgren
2012-09-25 23:46       ` Tony Lindgren
2012-09-27  5:40 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-27  5:40   ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-27 15:38   ` Stephen Warren
2012-09-27 15:38     ` Stephen Warren
2012-09-27 17:27     ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-27 17:27       ` Jean-Christophe PLAGNIOL-VILLARD

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=50620B5B.5020904@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=linux-arm-kernel@lists.infradead.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.