mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2] docs: dt-bindings: Specify ordering for properties within groups
@ 2025-03-05  8:45 Dragan Simic
  2025-03-05  9:36 ` Krzysztof Kozlowski
  0 siblings, 1 reply; 6+ messages in thread
From: Dragan Simic @ 2025-03-05  8:45 UTC (permalink / raw)
  To: robh, krzk+dt, conor+dt; +Cc: heiko, dsimic, devicetree, linux-kernel

When it comes to ordering of the individual properties inside each property
group, applying natural sort order to multi-digit numbers [1] found inside
the property names can result in more logical and more usable property lists,
similarly to what's already the case with the alpha-numerical ordering of
the nodes without unit addresses.

Let's have this clearly specified in the DTS coding style.  Also expand the
provided example a bit, to actually show the natural sort order.

Applying strict alpha-numerical ordering can result in property lists that
are suboptimal from the usability standpoint.  For the provided example,
which stems from a real-world DT, [2][3][4] applying strict alpha-numerical
ordering produces the following undesirable result:

  vdd-0v9-supply = <&board_vreg1>;
  vdd-12v-supply = <&board_vreg3>;
  vdd-1v8-supply = <&board_vreg4>;
  vdd-3v3-supply = <&board_vreg2>;

Having the properties sorted in natural order by their associated voltages
is more logical, more usable, and a bit more consistent.

[1] https://en.wikipedia.org/wiki/Natural_sort_order
[2] https://lore.kernel.org/linux-rockchip/b39cfd7490d8194f053bf3971f13a43472d1769e.1740941097.git.dsimic@manjaro.org/
[3] https://lore.kernel.org/linux-rockchip/174104113599.8946.16805724674396090918.b4-ty@sntech.de/
[4] https://lore.kernel.org/linux-rockchip/757afa87255212dfa5abf4c0e31deb08@manjaro.org/

Signed-off-by: Dragan Simic <dsimic@manjaro.org>
---

Notes:
    Changes in v2:
      - Changed the additions to the coding style to specify natural sort
        order, which avoids amibguity, as suggested by Krzysztof [5]
      - Adjusted and expanded the patch description appropriately, together
        with including one more reference for the natural sort order
    
    Link to v1: https://lore.kernel.org/linux-kernel/09d6f2fc111b3d6e58987336944f93ec36b65118.1741071107.git.dsimic@manjaro.org/T/#u
    
    [5] https://lore.kernel.org/linux-kernel/20250305-defiant-serious-newt-b7c5ea@krzk-bin/

 .../devicetree/bindings/dts-coding-style.rst          | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/dts-coding-style.rst b/Documentation/devicetree/bindings/dts-coding-style.rst
index 8a68331075a0..15de3ede2d9c 100644
--- a/Documentation/devicetree/bindings/dts-coding-style.rst
+++ b/Documentation/devicetree/bindings/dts-coding-style.rst
@@ -133,6 +133,12 @@ The above-described ordering follows this approach:
 3. Status is the last information to annotate that device node is or is not
    finished (board resources are needed).
 
+The above-described ordering specifies the preferred ordering of property
+groups, while the individual properties inside each group shall use natural
+sort order by the property name.  More specifically, natural sort order shall
+apply to multi-digit numbers found inside the property names, while alpha-
+numerical ordering shall apply otherwise.
+
 Example::
 
 	/* SoC DTSI */
@@ -158,7 +164,10 @@ Example::
 	/* Board DTS */
 
 	&device_node {
-		vdd-supply = <&board_vreg1>;
+		vdd-0v9-supply = <&board_vreg1>;
+		vdd-1v8-supply = <&board_vreg4>;
+		vdd-3v3-supply = <&board_vreg2>;
+		vdd-12v-supply = <&board_vreg3>;
 		status = "okay";
 	}
 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] docs: dt-bindings: Specify ordering for properties within groups
  2025-03-05  8:45 [PATCH v2] docs: dt-bindings: Specify ordering for properties within groups Dragan Simic
@ 2025-03-05  9:36 ` Krzysztof Kozlowski
  2025-03-05  9:53   ` Dragan Simic
  0 siblings, 1 reply; 6+ messages in thread
From: Krzysztof Kozlowski @ 2025-03-05  9:36 UTC (permalink / raw)
  To: Dragan Simic, robh, krzk+dt, conor+dt; +Cc: heiko, devicetree, linux-kernel

On 05/03/2025 09:45, Dragan Simic wrote:
> 
> diff --git a/Documentation/devicetree/bindings/dts-coding-style.rst b/Documentation/devicetree/bindings/dts-coding-style.rst
> index 8a68331075a0..15de3ede2d9c 100644
> --- a/Documentation/devicetree/bindings/dts-coding-style.rst
> +++ b/Documentation/devicetree/bindings/dts-coding-style.rst
> @@ -133,6 +133,12 @@ The above-described ordering follows this approach:
>  3. Status is the last information to annotate that device node is or is not
>     finished (board resources are needed).
>  
> +The above-described ordering specifies the preferred ordering of property
> +groups, while the individual properties inside each group shall use natural
> +sort order by the property name.  More specifically, natural sort order shall
> +apply to multi-digit numbers found inside the property names, while alpha-
> +numerical ordering shall apply otherwise.


The last sentence was not here and I don't get the point. Natural sort
order should be always preferred over alpha-numerical for properties.
About which other case ("...apply otherwise.") are you thinking?

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] docs: dt-bindings: Specify ordering for properties within groups
  2025-03-05  9:36 ` Krzysztof Kozlowski
@ 2025-03-05  9:53   ` Dragan Simic
  2025-03-06  8:38     ` Krzysztof Kozlowski
  0 siblings, 1 reply; 6+ messages in thread
From: Dragan Simic @ 2025-03-05  9:53 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: robh, krzk+dt, conor+dt, heiko, devicetree, linux-kernel

Hello Krzysztof,

On 2025-03-05 10:36, Krzysztof Kozlowski wrote:
> On 05/03/2025 09:45, Dragan Simic wrote:
>> 
>> diff --git a/Documentation/devicetree/bindings/dts-coding-style.rst 
>> b/Documentation/devicetree/bindings/dts-coding-style.rst
>> index 8a68331075a0..15de3ede2d9c 100644
>> --- a/Documentation/devicetree/bindings/dts-coding-style.rst
>> +++ b/Documentation/devicetree/bindings/dts-coding-style.rst
>> @@ -133,6 +133,12 @@ The above-described ordering follows this 
>> approach:
>>  3. Status is the last information to annotate that device node is or 
>> is not
>>     finished (board resources are needed).
>> 
>> +The above-described ordering specifies the preferred ordering of 
>> property
>> +groups, while the individual properties inside each group shall use 
>> natural
>> +sort order by the property name.  More specifically, natural sort 
>> order shall
>> +apply to multi-digit numbers found inside the property names, while 
>> alpha-
>> +numerical ordering shall apply otherwise.
> 
> The last sentence was not here and I don't get the point. Natural sort
> order should be always preferred over alpha-numerical for properties.
> About which other case ("...apply otherwise.") are you thinking?

Yes, I added that sentence in the v2 to, hopefully, clarify the natural
sort order itself a bit.  I've researched the natural sort order a bit
further, and it technically applies only to the multi-digit numbers 
found
inside the sorted strings.  That's what I wanted to explain, and "shall
apply otherwise" refers to applying the alpha-numerical sort order to 
the
remainders of the sorted strings, i.e. to everything but the multi-digit
numbers found in the property names.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] docs: dt-bindings: Specify ordering for properties within groups
  2025-03-05  9:53   ` Dragan Simic
@ 2025-03-06  8:38     ` Krzysztof Kozlowski
  2025-03-06  8:57       ` Dragan Simic
  0 siblings, 1 reply; 6+ messages in thread
From: Krzysztof Kozlowski @ 2025-03-06  8:38 UTC (permalink / raw)
  To: Dragan Simic; +Cc: robh, krzk+dt, conor+dt, heiko, devicetree, linux-kernel

On Wed, Mar 05, 2025 at 10:53:48AM +0100, Dragan Simic wrote:
> Hello Krzysztof,
> 
> On 2025-03-05 10:36, Krzysztof Kozlowski wrote:
> > On 05/03/2025 09:45, Dragan Simic wrote:
> > > 
> > > diff --git a/Documentation/devicetree/bindings/dts-coding-style.rst
> > > b/Documentation/devicetree/bindings/dts-coding-style.rst
> > > index 8a68331075a0..15de3ede2d9c 100644
> > > --- a/Documentation/devicetree/bindings/dts-coding-style.rst
> > > +++ b/Documentation/devicetree/bindings/dts-coding-style.rst
> > > @@ -133,6 +133,12 @@ The above-described ordering follows this
> > > approach:
> > >  3. Status is the last information to annotate that device node is
> > > or is not
> > >     finished (board resources are needed).
> > > 
> > > +The above-described ordering specifies the preferred ordering of
> > > property
> > > +groups, while the individual properties inside each group shall use
> > > natural
> > > +sort order by the property name.  More specifically, natural sort
> > > order shall
> > > +apply to multi-digit numbers found inside the property names, while
> > > alpha-
> > > +numerical ordering shall apply otherwise.
> > 
> > The last sentence was not here and I don't get the point. Natural sort
> > order should be always preferred over alpha-numerical for properties.
> > About which other case ("...apply otherwise.") are you thinking?
> 
> Yes, I added that sentence in the v2 to, hopefully, clarify the natural
> sort order itself a bit.  I've researched the natural sort order a bit
> further, and it technically applies only to the multi-digit numbers found
> inside the sorted strings.  That's what I wanted to explain, and "shall

Natural sort applies to everywhere. It's just the same as
alpha-numerical sort for single digits.

> apply otherwise" refers to applying the alpha-numerical sort order to the
> remainders of the sorted strings, i.e. to everything but the multi-digit
> numbers found in the property names.

Sorry, still don't get. What would be the difference if for remainders
of properties you would also apply natural sort instead of
alphanumerical sort?

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] docs: dt-bindings: Specify ordering for properties within groups
  2025-03-06  8:38     ` Krzysztof Kozlowski
@ 2025-03-06  8:57       ` Dragan Simic
  2025-03-07  7:14         ` Krzysztof Kozlowski
  0 siblings, 1 reply; 6+ messages in thread
From: Dragan Simic @ 2025-03-06  8:57 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: robh, krzk+dt, conor+dt, heiko, devicetree, linux-kernel

Hello Krzysztof,

On 2025-03-06 09:38, Krzysztof Kozlowski wrote:
> On Wed, Mar 05, 2025 at 10:53:48AM +0100, Dragan Simic wrote:
>> On 2025-03-05 10:36, Krzysztof Kozlowski wrote:
>> > On 05/03/2025 09:45, Dragan Simic wrote:
>> > >
>> > > diff --git a/Documentation/devicetree/bindings/dts-coding-style.rst
>> > > b/Documentation/devicetree/bindings/dts-coding-style.rst
>> > > index 8a68331075a0..15de3ede2d9c 100644
>> > > --- a/Documentation/devicetree/bindings/dts-coding-style.rst
>> > > +++ b/Documentation/devicetree/bindings/dts-coding-style.rst
>> > > @@ -133,6 +133,12 @@ The above-described ordering follows this
>> > > approach:
>> > >  3. Status is the last information to annotate that device node is
>> > > or is not
>> > >     finished (board resources are needed).
>> > >
>> > > +The above-described ordering specifies the preferred ordering of
>> > > property
>> > > +groups, while the individual properties inside each group shall use
>> > > natural
>> > > +sort order by the property name.  More specifically, natural sort
>> > > order shall
>> > > +apply to multi-digit numbers found inside the property names, while
>> > > alpha-
>> > > +numerical ordering shall apply otherwise.
>> >
>> > The last sentence was not here and I don't get the point. Natural sort
>> > order should be always preferred over alpha-numerical for properties.
>> > About which other case ("...apply otherwise.") are you thinking?
>> 
>> Yes, I added that sentence in the v2 to, hopefully, clarify the 
>> natural
>> sort order itself a bit.  I've researched the natural sort order a bit
>> further, and it technically applies only to the multi-digit numbers 
>> found
>> inside the sorted strings.  That's what I wanted to explain, and 
>> "shall
> 
> Natural sort applies to everywhere. It's just the same as
> alpha-numerical sort for single digits.

Technically, it depends on how one describes the natural sort order.
I'll get back to this below.

>> apply otherwise" refers to applying the alpha-numerical sort order to 
>> the
>> remainders of the sorted strings, i.e. to everything but the 
>> multi-digit
>> numbers found in the property names.
> 
> Sorry, still don't get. What would be the difference if for remainders
> of properties you would also apply natural sort instead of
> alphanumerical sort?

Oh, there are no differences in the results of the ordering, it's just
about the formal definition of the natural sort order.  In some places,
the natural sort order is described to apply to the multi-digit numbers
found in the sorted strings only.  Thus, the wording I proposed tries
to explain that further, but I do agree that it's somewhat confusing.

In other words, the way natural sort order is defined in some places,
it applies to the multi-digit parts of the sorted strings only, while
the remainders of the strings are sorted alpha-numerically.  I'll 
consult
some more sources and get back with some better wording in the v3, to
make it less confusing, while still describing the natural sort order
a bit, because the people who will be reading the DTS coding style may
not already be familiar with it.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] docs: dt-bindings: Specify ordering for properties within groups
  2025-03-06  8:57       ` Dragan Simic
@ 2025-03-07  7:14         ` Krzysztof Kozlowski
  0 siblings, 0 replies; 6+ messages in thread
From: Krzysztof Kozlowski @ 2025-03-07  7:14 UTC (permalink / raw)
  To: Dragan Simic; +Cc: robh, krzk+dt, conor+dt, heiko, devicetree, linux-kernel

On 06/03/2025 09:57, Dragan Simic wrote:
> Hello Krzysztof,
> 
> On 2025-03-06 09:38, Krzysztof Kozlowski wrote:
>> On Wed, Mar 05, 2025 at 10:53:48AM +0100, Dragan Simic wrote:
>>> On 2025-03-05 10:36, Krzysztof Kozlowski wrote:
>>>> On 05/03/2025 09:45, Dragan Simic wrote:
>>>>>
>>>>> diff --git a/Documentation/devicetree/bindings/dts-coding-style.rst
>>>>> b/Documentation/devicetree/bindings/dts-coding-style.rst
>>>>> index 8a68331075a0..15de3ede2d9c 100644
>>>>> --- a/Documentation/devicetree/bindings/dts-coding-style.rst
>>>>> +++ b/Documentation/devicetree/bindings/dts-coding-style.rst
>>>>> @@ -133,6 +133,12 @@ The above-described ordering follows this
>>>>> approach:
>>>>>  3. Status is the last information to annotate that device node is
>>>>> or is not
>>>>>     finished (board resources are needed).
>>>>>
>>>>> +The above-described ordering specifies the preferred ordering of
>>>>> property
>>>>> +groups, while the individual properties inside each group shall use
>>>>> natural
>>>>> +sort order by the property name.  More specifically, natural sort
>>>>> order shall
>>>>> +apply to multi-digit numbers found inside the property names, while
>>>>> alpha-
>>>>> +numerical ordering shall apply otherwise.
>>>>
>>>> The last sentence was not here and I don't get the point. Natural sort
>>>> order should be always preferred over alpha-numerical for properties.
>>>> About which other case ("...apply otherwise.") are you thinking?
>>>
>>> Yes, I added that sentence in the v2 to, hopefully, clarify the 
>>> natural
>>> sort order itself a bit.  I've researched the natural sort order a bit
>>> further, and it technically applies only to the multi-digit numbers 
>>> found
>>> inside the sorted strings.  That's what I wanted to explain, and 
>>> "shall
>>
>> Natural sort applies to everywhere. It's just the same as
>> alpha-numerical sort for single digits.
> 
> Technically, it depends on how one describes the natural sort order.
> I'll get back to this below.
> 
>>> apply otherwise" refers to applying the alpha-numerical sort order to 
>>> the
>>> remainders of the sorted strings, i.e. to everything but the 
>>> multi-digit
>>> numbers found in the property names.
>>
>> Sorry, still don't get. What would be the difference if for remainders
>> of properties you would also apply natural sort instead of
>> alphanumerical sort?
> 
> Oh, there are no differences in the results of the ordering, it's just
> about the formal definition of the natural sort order.  In some places,
> the natural sort order is described to apply to the multi-digit numbers


I am no language expert, so I rely on Wikipedia:

https://en.wikipedia.org/wiki/Natural_sort_order
"except that single- and multi-digit numbers are treated atomically,"

and anyway I don't really know how natural sort order would work for
single digits if it was applying to them differently.

> found in the sorted strings only.  Thus, the wording I proposed tries
> to explain that further, but I do agree that it's somewhat confusing.
> 
> In other words, the way natural sort order is defined in some places,
> it applies to the multi-digit parts of the sorted strings only, while
> the remainders of the strings are sorted alpha-numerically.  I'll 
> consult
> some more sources and get back with some better wording in the v3, to
> make it less confusing, while still describing the natural sort order
> a bit, because the people who will be reading the DTS coding style may
> not already be familiar with it.


Please drop the second sentence. The point is to be concise. If text
grows too long, people won't read it (just like they don't read
submitting-patches).


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-03-07  7:15 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-05  8:45 [PATCH v2] docs: dt-bindings: Specify ordering for properties within groups Dragan Simic
2025-03-05  9:36 ` Krzysztof Kozlowski
2025-03-05  9:53   ` Dragan Simic
2025-03-06  8:38     ` Krzysztof Kozlowski
2025-03-06  8:57       ` Dragan Simic
2025-03-07  7:14         ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®