2023-11-17 13:01:01

by Jerome Brunet

[permalink] [raw]
Subject: [PATCH v2 0/6] pwm: meson: dt-bindings fixup

This patchset aims to:
* Fix the incorrect bindings for the s4 type of pwm that was introduced
while converting the documentation from txt to yaml format.
* Introduce a new compatible for the existing PWMs to better describe the
HW in DT, instead of describing settings.
* Make the introduction of a new pwm variant (s4) slightly easier.
* Migrate the supported SoCs to the new compatible.

Usually, I prefer to send to dts patches separately. This time it seemed
important to illustrate the change. I don't mind splitting this out and
re-spinning if this is annoying for the maintainers.

Changes since v1 [1]:
* Fix typo in the new binding compatible documentation
* Disallow clock-names for the new compatibles in the schema documenation

[1]: https://lore.kernel.org/linux-amlogic/[email protected]

Jerome Brunet (6):
dt-bindings: pwm: amlogic: fix s4 bindings
dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type
pwm: meson: prepare addition of new compatible types
pwm: meson: add generic compatible for meson8 to sm1
arm: dts: amlogic: migrate pwms to new meson8 v2 binding
arm64: dts: amlogic: migrate pwms to new meson8 v2 binding

.../devicetree/bindings/pwm/pwm-amlogic.yaml | 103 +++++-
arch/arm/boot/dts/amlogic/meson.dtsi | 4 +-
arch/arm/boot/dts/amlogic/meson8.dtsi | 16 +-
arch/arm/boot/dts/amlogic/meson8b-ec100.dts | 2 -
arch/arm/boot/dts/amlogic/meson8b-mxq.dts | 2 -
.../arm/boot/dts/amlogic/meson8b-odroidc1.dts | 2 -
arch/arm/boot/dts/amlogic/meson8b.dtsi | 16 +-
arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 24 +-
.../boot/dts/amlogic/meson-g12-common.dtsi | 28 +-
.../dts/amlogic/meson-g12a-radxa-zero.dts | 4 -
.../boot/dts/amlogic/meson-g12a-sei510.dts | 4 -
.../boot/dts/amlogic/meson-g12a-u200.dts | 2 -
.../boot/dts/amlogic/meson-g12a-x96-max.dts | 4 -
.../amlogic/meson-g12b-a311d-libretech-cc.dts | 2 -
.../dts/amlogic/meson-g12b-bananapi-cm4.dtsi | 7 -
.../boot/dts/amlogic/meson-g12b-bananapi.dtsi | 4 -
.../dts/amlogic/meson-g12b-khadas-vim3.dtsi | 4 -
.../boot/dts/amlogic/meson-g12b-odroid.dtsi | 4 -
.../dts/amlogic/meson-g12b-radxa-zero2.dts | 8 -
.../boot/dts/amlogic/meson-g12b-w400.dtsi | 6 -
.../dts/amlogic/meson-gx-libretech-pc.dtsi | 6 -
.../boot/dts/amlogic/meson-gx-p23x-q20x.dtsi | 2 -
arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 8 +-
.../boot/dts/amlogic/meson-gxbb-nanopi-k2.dts | 2 -
.../dts/amlogic/meson-gxbb-nexbox-a95x.dts | 2 -
.../boot/dts/amlogic/meson-gxbb-p20x.dtsi | 2 -
.../boot/dts/amlogic/meson-gxbb-vega-s95.dtsi | 2 -
.../boot/dts/amlogic/meson-gxbb-wetek.dtsi | 2 -
arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 26 ++
.../boot/dts/amlogic/meson-gxl-s805x-p241.dts | 2 -
.../meson-gxl-s905w-jethome-jethub-j80.dts | 2 -
.../meson-gxl-s905x-hwacom-amazetv.dts | 2 -
.../amlogic/meson-gxl-s905x-khadas-vim.dts | 2 -
.../amlogic/meson-gxl-s905x-nexbox-a95x.dts | 2 -
.../dts/amlogic/meson-gxl-s905x-p212.dtsi | 2 -
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 26 ++
.../dts/amlogic/meson-gxm-khadas-vim2.dts | 4 -
.../boot/dts/amlogic/meson-gxm-rbox-pro.dts | 2 -
.../amlogic/meson-libretech-cottonwood.dtsi | 6 -
.../boot/dts/amlogic/meson-sm1-ac2xx.dtsi | 6 -
.../dts/amlogic/meson-sm1-khadas-vim3l.dts | 2 -
.../boot/dts/amlogic/meson-sm1-odroid.dtsi | 2 -
.../boot/dts/amlogic/meson-sm1-sei610.dts | 6 -
drivers/pwm/pwm-meson.c | 312 +++++++++++-------
44 files changed, 409 insertions(+), 267 deletions(-)

--
2.42.0


2023-11-17 13:01:33

by Jerome Brunet

[permalink] [raw]
Subject: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type

Add a new compatible for the pwm found in the meson8 to sm1 Amlogic SoCs.

The previous clock bindings for these SoCs described the driver and not the
HW itself. The clock provided was used to set the parent of the input clock
mux among the possible parents hard-coded in the driver.

The new bindings allows to describe the actual clock inputs of the PWM in
DT, like most bindings do, instead of relying of hard-coded data.

The new bindings make the old one deprecated.

There is enough experience on this HW to know that the PWM is exactly the
same all the supported SoCs. There is no need for a per-SoC compatible.

Signed-off-by: Jerome Brunet <[email protected]>
---
.../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/pwm/pwm-amlogic.yaml b/Documentation/devicetree/bindings/pwm/pwm-amlogic.yaml
index 387976ed36d5..48b11b7d5df6 100644
--- a/Documentation/devicetree/bindings/pwm/pwm-amlogic.yaml
+++ b/Documentation/devicetree/bindings/pwm/pwm-amlogic.yaml
@@ -22,6 +22,7 @@ properties:
- amlogic,meson-g12a-ao-pwm-ab
- amlogic,meson-g12a-ao-pwm-cd
- amlogic,meson-s4-pwm
+ - amlogic,meson8-pwm-v2
- items:
- const: amlogic,meson-gx-pwm
- const: amlogic,meson-gxbb-pwm
@@ -37,7 +38,7 @@ properties:

clocks:
minItems: 1
- maxItems: 2
+ maxItems: 4

clock-names:
minItems: 1
@@ -70,11 +71,14 @@ allOf:
- amlogic,meson-gx-pwm
- amlogic,meson-gx-ao-pwm
then:
- # Historic bindings tied to the driver implementation
+ # Obsolete historic bindings tied to the driver implementation
# The clocks provided here are meant to be matched with the input
# known (hard-coded) in the driver and used to select pwm clock
# source. Currently, the linux driver ignores this.
+ deprecated: true
properties:
+ clocks:
+ maxItems: 2
clock-names:
oneOf:
- items:
@@ -83,6 +87,27 @@ allOf:
- const: clkin0
- const: clkin1

+ # Newer binding where clock describe the actual clock inputs of the pwm
+ # block. These are necessary but some inputs may be grounded.
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - amlogic,meson8-pwm-v2
+ then:
+ properties:
+ clocks:
+ minItems: 1
+ items:
+ - description: input clock 0 of the pwm block
+ - description: input clock 1 of the pwm block
+ - description: input clock 2 of the pwm block
+ - description: input clock 3 of the pwm block
+ clock-names: false
+ required:
+ - clocks
+
# Newer IP block take a single input per channel, instead of 4 inputs
# for both channels
- if:
@@ -112,6 +137,13 @@ examples:
clock-names = "clkin0", "clkin1";
#pwm-cells = <3>;
};
+ - |
+ pwm@2000 {
+ compatible = "amlogic,meson8-pwm-v2";
+ reg = <0x1000 0x10>;
+ clocks = <&xtal>, <0>, <&fdiv4>, <&fdiv5>;
+ #pwm-cells = <3>;
+ };
- |
pwm@1000 {
compatible = "amlogic,meson-s4-pwm";
--
2.42.0

2023-11-19 16:05:59

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type


On Fri, 17 Nov 2023 13:59:12 +0100, Jerome Brunet wrote:
> Add a new compatible for the pwm found in the meson8 to sm1 Amlogic SoCs.
>
> The previous clock bindings for these SoCs described the driver and not the
> HW itself. The clock provided was used to set the parent of the input clock
> mux among the possible parents hard-coded in the driver.
>
> The new bindings allows to describe the actual clock inputs of the PWM in
> DT, like most bindings do, instead of relying of hard-coded data.
>
> The new bindings make the old one deprecated.
>
> There is enough experience on this HW to know that the PWM is exactly the
> same all the supported SoCs. There is no need for a per-SoC compatible.
>
> Signed-off-by: Jerome Brunet <[email protected]>
> ---
> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
> 1 file changed, 34 insertions(+), 2 deletions(-)
>

Reviewed-by: Rob Herring <[email protected]>

2023-11-20 08:30:11

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type

Hi Rob,

On 19/11/2023 17:05, Rob Herring wrote:
>
> On Fri, 17 Nov 2023 13:59:12 +0100, Jerome Brunet wrote:
>> Add a new compatible for the pwm found in the meson8 to sm1 Amlogic SoCs.
>>
>> The previous clock bindings for these SoCs described the driver and not the
>> HW itself. The clock provided was used to set the parent of the input clock
>> mux among the possible parents hard-coded in the driver.
>>
>> The new bindings allows to describe the actual clock inputs of the PWM in
>> DT, like most bindings do, instead of relying of hard-coded data.
>>
>> The new bindings make the old one deprecated.
>>
>> There is enough experience on this HW to know that the PWM is exactly the
>> same all the supported SoCs. There is no need for a per-SoC compatible.
>>
>> Signed-off-by: Jerome Brunet <[email protected]>
>> ---
>> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
>> 1 file changed, 34 insertions(+), 2 deletions(-)
>>
>
> Reviewed-by: Rob Herring <[email protected]>
>

I'm puzzled, isn't it recommended to have a per-soc compatible now ?

I thought something like:
- items:
- enum:
- amlogic,gxbb-pwm
- amlogic,axg-pwm
- amlogic,g12a-pwm
- const: amlogic,pwm-v1

should be preferred instead of a single amlogic,meson8-pwm-v2 ?

Neil

2023-11-20 09:42:01

by Jerome Brunet

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type


On Mon 20 Nov 2023 at 09:27, Neil Armstrong <[email protected]> wrote:

> Hi Rob,
>
> On 19/11/2023 17:05, Rob Herring wrote:
>> On Fri, 17 Nov 2023 13:59:12 +0100, Jerome Brunet wrote:
>>> Add a new compatible for the pwm found in the meson8 to sm1 Amlogic SoCs.
>>>
>>> The previous clock bindings for these SoCs described the driver and not the
>>> HW itself. The clock provided was used to set the parent of the input clock
>>> mux among the possible parents hard-coded in the driver.
>>>
>>> The new bindings allows to describe the actual clock inputs of the PWM in
>>> DT, like most bindings do, instead of relying of hard-coded data.
>>>
>>> The new bindings make the old one deprecated.
>>>
>>> There is enough experience on this HW to know that the PWM is exactly the
>>> same all the supported SoCs. There is no need for a per-SoC compatible.
>>>
>>> Signed-off-by: Jerome Brunet <[email protected]>
>>> ---
>>> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
>>> 1 file changed, 34 insertions(+), 2 deletions(-)
>>>
>> Reviewed-by: Rob Herring <[email protected]>
>>
>
> I'm puzzled, isn't it recommended to have a per-soc compatible now ?

I have specifically addressed this matter in the description,
haven't I ? What good would it do in this case ?

Plus the definition of a SoC is very vague. One could argue that
the content of the list bellow are vaguely defined families. Should we
add meson8b, gxl, gxm, sm1 ? ... or even the actual SoC reference ?
This list gets huge for no reason.

We know all existing PWM of this type are the same. We have been using
them for years. It is not a new support we know nothing about.

>
> I thought something like:
> - items:
> - enum:
> - amlogic,gxbb-pwm
> - amlogic,axg-pwm
> - amlogic,g12a-pwm
> - const: amlogic,pwm-v1

I'm not sure I understand what you are suggesting here.
Adding a "amlogic,pwm-v1" for the obsolete compatible ? No amlogic DT
has that and I'm working to remove this type, so I don't get the point.

>
> should be preferred instead of a single amlogic,meson8-pwm-v2 ?

This is named after the first SoC supporting the type.

Naming it amlogic,pwm-v2 would feel weird with the s4 coming after.
Plus the doc specifically advise against this type of names.

>
> Neil

2023-11-20 10:19:38

by Jerome Brunet

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type


On Mon 20 Nov 2023 at 10:55, [email protected] wrote:

> Hi Jerome,
>
> On 20/11/2023 10:18, Jerome Brunet wrote:
>> On Mon 20 Nov 2023 at 09:27, Neil Armstrong <[email protected]>
>> wrote:
>>
>>> Hi Rob,
>>>
>>> On 19/11/2023 17:05, Rob Herring wrote:
>>>> On Fri, 17 Nov 2023 13:59:12 +0100, Jerome Brunet wrote:
>>>>> Add a new compatible for the pwm found in the meson8 to sm1 Amlogic SoCs.
>>>>>
>>>>> The previous clock bindings for these SoCs described the driver and not the
>>>>> HW itself. The clock provided was used to set the parent of the input clock
>>>>> mux among the possible parents hard-coded in the driver.
>>>>>
>>>>> The new bindings allows to describe the actual clock inputs of the PWM in
>>>>> DT, like most bindings do, instead of relying of hard-coded data.
>>>>>
>>>>> The new bindings make the old one deprecated.
>>>>>
>>>>> There is enough experience on this HW to know that the PWM is exactly the
>>>>> same all the supported SoCs. There is no need for a per-SoC compatible.
>>>>>
>>>>> Signed-off-by: Jerome Brunet <[email protected]>
>>>>> ---
>>>>> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
>>>>> 1 file changed, 34 insertions(+), 2 deletions(-)
>>>>>
>>>> Reviewed-by: Rob Herring <[email protected]>
>>>>
>>>
>>> I'm puzzled, isn't it recommended to have a per-soc compatible now ?
>> I have specifically addressed this matter in the description,
>> haven't I ? What good would it do in this case ?
>
> Yes you did but I was asked for the last year+ that all new compatible
> should be soc specific (while imprecise, in our care soc family should be ok),
> with a possible semi-generic callback with an IP version or a first soc
> implementing the IP.
>
>> Plus the definition of a SoC is very vague. One could argue that
>> the content of the list bellow are vaguely defined families. Should we
>> add meson8b, gxl, gxm, sm1 ? ... or even the actual SoC reference ?
>> This list gets huge for no reason.
>
> I think in our case soc family is reasonable since they share same silicon
> design.
>
>> We know all existing PWM of this type are the same. We have been using
>> them for years. It is not a new support we know nothing about.
>>
>>>
>>> I thought something like:
>>> - items:
>>> - enum:
>>> - amlogic,gxbb-pwm
>>> - amlogic,axg-pwm
>>> - amlogic,g12a-pwm
>>> - const: amlogic,pwm-v1
>> I'm not sure I understand what you are suggesting here.
>> Adding a "amlogic,pwm-v1" for the obsolete compatible ? No amlogic DT
>> has that and I'm working to remove this type, so I don't get the point.
>>
>>>
>>> should be preferred instead of a single amlogic,meson8-pwm-v2 ?
>> This is named after the first SoC supporting the type.
>> Naming it amlogic,pwm-v2 would feel weird with the s4 coming after.
>> Plus the doc specifically advise against this type of names.
>
> The -v2 refers to a pure software/dt implementation versioning and not
> an HW version, so I'm puzzled and I requires DT maintainers advice here.
>
> Yes meson8b is the first "known" platform, even if I'm pretty sure meson6 has

This is not my point. I picked this name because I have to pick a
specific device based one. Not because it is actually the first or
not. I don't see a problem with meson6 being compatible with
meson8-pwm-v2, if that ever comes along.

I think the binding here satisfy the rule that it should be specific,
and the intent that goes with it:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n42

> the same pwm architecture, this is why "amlogic,pwm-v1" as fallback seems more
> reasonable and s4 and later pwm could use the "amlogic,pwm-v2"
> fallback.

That is not how understand this:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n82

>
> Neil
>>
>>>
>>> Neil
>>

2023-11-20 10:44:11

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type

Hi Jerome,

On 20/11/2023 10:18, Jerome Brunet wrote:
>
> On Mon 20 Nov 2023 at 09:27, Neil Armstrong <[email protected]> wrote:
>
>> Hi Rob,
>>
>> On 19/11/2023 17:05, Rob Herring wrote:
>>> On Fri, 17 Nov 2023 13:59:12 +0100, Jerome Brunet wrote:
>>>> Add a new compatible for the pwm found in the meson8 to sm1 Amlogic SoCs.
>>>>
>>>> The previous clock bindings for these SoCs described the driver and not the
>>>> HW itself. The clock provided was used to set the parent of the input clock
>>>> mux among the possible parents hard-coded in the driver.
>>>>
>>>> The new bindings allows to describe the actual clock inputs of the PWM in
>>>> DT, like most bindings do, instead of relying of hard-coded data.
>>>>
>>>> The new bindings make the old one deprecated.
>>>>
>>>> There is enough experience on this HW to know that the PWM is exactly the
>>>> same all the supported SoCs. There is no need for a per-SoC compatible.
>>>>
>>>> Signed-off-by: Jerome Brunet <[email protected]>
>>>> ---
>>>> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
>>>> 1 file changed, 34 insertions(+), 2 deletions(-)
>>>>
>>> Reviewed-by: Rob Herring <[email protected]>
>>>
>>
>> I'm puzzled, isn't it recommended to have a per-soc compatible now ?
>
> I have specifically addressed this matter in the description,
> haven't I ? What good would it do in this case ?

Yes you did but I was asked for the last year+ that all new compatible
should be soc specific (while imprecise, in our care soc family should be ok),
with a possible semi-generic callback with an IP version or a first soc
implementing the IP.

>
> Plus the definition of a SoC is very vague. One could argue that
> the content of the list bellow are vaguely defined families. Should we
> add meson8b, gxl, gxm, sm1 ? ... or even the actual SoC reference ?
> This list gets huge for no reason.

I think in our case soc family is reasonable since they share same silicon
design.

>
> We know all existing PWM of this type are the same. We have been using
> them for years. It is not a new support we know nothing about.
>
>>
>> I thought something like:
>> - items:
>> - enum:
>> - amlogic,gxbb-pwm
>> - amlogic,axg-pwm
>> - amlogic,g12a-pwm
>> - const: amlogic,pwm-v1
>
> I'm not sure I understand what you are suggesting here.
> Adding a "amlogic,pwm-v1" for the obsolete compatible ? No amlogic DT
> has that and I'm working to remove this type, so I don't get the point.
>
>>
>> should be preferred instead of a single amlogic,meson8-pwm-v2 ?
>
> This is named after the first SoC supporting the type.
>
> Naming it amlogic,pwm-v2 would feel weird with the s4 coming after.
> Plus the doc specifically advise against this type of names.

The -v2 refers to a pure software/dt implementation versioning and not
an HW version, so I'm puzzled and I requires DT maintainers advice here.

Yes meson8b is the first "known" platform, even if I'm pretty sure meson6 has
the same pwm architecture, this is why "amlogic,pwm-v1" as fallback seems more
reasonable and s4 and later pwm could use the "amlogic,pwm-v2" fallback.

Neil
>
>>
>> Neil
>

2023-11-22 08:39:28

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type

On 20/11/2023 11:04, Jerome Brunet wrote:
>>>>>> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
>>>>>> 1 file changed, 34 insertions(+), 2 deletions(-)
>>>>>>
>>>>> Reviewed-by: Rob Herring <[email protected]>
>>>>>
>>>>
>>>> I'm puzzled, isn't it recommended to have a per-soc compatible now ?

Yes, it is.

>>> I have specifically addressed this matter in the description,
>>> haven't I ? What good would it do in this case ?

There is nothing about compatible naming in commit msg.

>>
>> Yes you did but I was asked for the last year+ that all new compatible
>> should be soc specific (while imprecise, in our care soc family should be ok),
>> with a possible semi-generic callback with an IP version or a first soc
>> implementing the IP.
>>
>>> Plus the definition of a SoC is very vague. One could argue that
>>> the content of the list bellow are vaguely defined families. Should we
>>> add meson8b, gxl, gxm, sm1 ? ... or even the actual SoC reference ?
>>> This list gets huge for no reason.
>>
>> I think in our case soc family is reasonable since they share same silicon
>> design.
>>
>>> We know all existing PWM of this type are the same. We have been using
>>> them for years. It is not a new support we know nothing about.
>>>
>>>>
>>>> I thought something like:
>>>> - items:
>>>> - enum:
>>>> - amlogic,gxbb-pwm
>>>> - amlogic,axg-pwm
>>>> - amlogic,g12a-pwm
>>>> - const: amlogic,pwm-v1
>>> I'm not sure I understand what you are suggesting here.
>>> Adding a "amlogic,pwm-v1" for the obsolete compatible ? No amlogic DT
>>> has that and I'm working to remove this type, so I don't get the point.
>>>
>>>>
>>>> should be preferred instead of a single amlogic,meson8-pwm-v2 ?
>>> This is named after the first SoC supporting the type.
>>> Naming it amlogic,pwm-v2 would feel weird with the s4 coming after.
>>> Plus the doc specifically advise against this type of names.
>>
>> The -v2 refers to a pure software/dt implementation versioning and not
>> an HW version, so I'm puzzled and I requires DT maintainers advice here.
>>
>> Yes meson8b is the first "known" platform, even if I'm pretty sure meson6 has

Yes, this should be SoC-based compatible, unless you have clear
versioning scheme by SoC/IP block vendor. You named it not a HW version,
which kind of answers to the "unless" case - that's not hardware version.

>
> This is not my point. I picked this name because I have to pick a
> specific device based one. Not because it is actually the first or
> not. I don't see a problem with meson6 being compatible with
> meson8-pwm-v2, if that ever comes along.

No, the point is not to use "v2". Use SoC compatibles.

>
> I think the binding here satisfy the rule that it should be specific,
> and the intent that goes with it:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n42
>
>> the same pwm architecture, this is why "amlogic,pwm-v1" as fallback seems more
>> reasonable and s4 and later pwm could use the "amlogic,pwm-v2"
>> fallback.
>
> That is not how understand this:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n82
>

Again, where the "v2" is defined? Where is any document explaining the
mapping between version blocks and SoC parts? Why do you list here only
major version? Blocks almost always have also minor (e.g. v2.0).

Best regards,
Krzysztof

2023-11-22 14:53:22

by Jerome Brunet

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type


On Wed 22 Nov 2023 at 09:37, Krzysztof Kozlowski <[email protected]> wrote:

> On 20/11/2023 11:04, Jerome Brunet wrote:
>>>>>>> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
>>>>>>> 1 file changed, 34 insertions(+), 2 deletions(-)
>>>>>>>
>>>>>> Reviewed-by: Rob Herring <[email protected]>
>>>>>>
>>>>>
>>>>> I'm puzzled, isn't it recommended to have a per-soc compatible now ?
>
> Yes, it is.
>
>>>> I have specifically addressed this matter in the description,
>>>> haven't I ? What good would it do in this case ?
>
> There is nothing about compatible naming in commit msg.

Krzysztof, the whole commit desciption is explanation about why a new
compatible is introduced. I don't understand this comment.

>
>>>
>>> Yes you did but I was asked for the last year+ that all new compatible
>>> should be soc specific (while imprecise, in our care soc family should be ok),
>>> with a possible semi-generic callback with an IP version or a first soc
>>> implementing the IP.
>>>
>>>> Plus the definition of a SoC is very vague. One could argue that
>>>> the content of the list bellow are vaguely defined families. Should we
>>>> add meson8b, gxl, gxm, sm1 ? ... or even the actual SoC reference ?
>>>> This list gets huge for no reason.
>>>
>>> I think in our case soc family is reasonable since they share same silicon
>>> design.
>>>
>>>> We know all existing PWM of this type are the same. We have been using
>>>> them for years. It is not a new support we know nothing about.
>>>>
>>>>>
>>>>> I thought something like:
>>>>> - items:
>>>>> - enum:
>>>>> - amlogic,gxbb-pwm
>>>>> - amlogic,axg-pwm
>>>>> - amlogic,g12a-pwm
>>>>> - const: amlogic,pwm-v1
>>>> I'm not sure I understand what you are suggesting here.
>>>> Adding a "amlogic,pwm-v1" for the obsolete compatible ? No amlogic DT
>>>> has that and I'm working to remove this type, so I don't get the point.
>>>>
>>>>>
>>>>> should be preferred instead of a single amlogic,meson8-pwm-v2 ?
>>>> This is named after the first SoC supporting the type.
>>>> Naming it amlogic,pwm-v2 would feel weird with the s4 coming after.
>>>> Plus the doc specifically advise against this type of names.
>>>
>>> The -v2 refers to a pure software/dt implementation versioning and not
>>> an HW version, so I'm puzzled and I requires DT maintainers advice here.
>>>
>>> Yes meson8b is the first "known" platform, even if I'm pretty sure meson6 has
>
> Yes, this should be SoC-based compatible, unless you have clear
> versioning scheme by SoC/IP block vendor. You named it not a HW version,
> which kind of answers to the "unless" case - that's not hardware version.
>

This is specifically the point of the comment in commit description.
We know all the PWMs compatible are the same HW (version) as one found
in the meson8b.

It is certain that adding more compatible, listing all the SoC, will be
useless. I can do it if you insist.

>>
>> This is not my point. I picked this name because I have to pick a
>> specific device based one. Not because it is actually the first or
>> not. I don't see a problem with meson6 being compatible with
>> meson8-pwm-v2, if that ever comes along.
>
> No, the point is not to use "v2". Use SoC compatibles.

It is a SoC compatible. The second one.

The first one, as explained in the description was describing the driver
more that the HW.

Changing the way clock are passed from DT to the driver would be break
user of the old compatible. So a new compatible is introduced. I believe
this is recommended way to introduce incompatible binding changes.

v2 here denote a new interface version, nothing to do with HW
versioning. I happy to pick something else to denote this.

>
>>
>> I think the binding here satisfy the rule that it should be specific,
>> and the intent that goes with it:
>>
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n42
>>
>>> the same pwm architecture, this is why "amlogic,pwm-v1" as fallback seems more
>>> reasonable and s4 and later pwm could use the "amlogic,pwm-v2"
>>> fallback.
>>
>> That is not how understand this:
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n82
>>
>
> Again, where the "v2" is defined? Where is any document explaining the
> mapping between version blocks and SoC parts? Why do you list here only
> major version? Blocks almost always have also minor (e.g. v2.0).

Again, v2 does has nothing to do with the HW. Never wrote it was.
The HW remains the same.


>
> Best regards,
> Krzysztof

2023-11-22 15:04:44

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type

On 22/11/2023 15:34, Jerome Brunet wrote:
>
> On Wed 22 Nov 2023 at 09:37, Krzysztof Kozlowski <[email protected]> wrote:
>
>> On 20/11/2023 11:04, Jerome Brunet wrote:
>>>>>>>> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
>>>>>>>> 1 file changed, 34 insertions(+), 2 deletions(-)
>>>>>>>>
>>>>>>> Reviewed-by: Rob Herring <[email protected]>
>>>>>>>
>>>>>>
>>>>>> I'm puzzled, isn't it recommended to have a per-soc compatible now ?
>>
>> Yes, it is.
>>
>>>>> I have specifically addressed this matter in the description,
>>>>> haven't I ? What good would it do in this case ?
>>
>> There is nothing about compatible naming in commit msg.
>
> Krzysztof, the whole commit desciption is explanation about why a new
> compatible is introduced. I don't understand this comment.
>
>>
>>>>
>>>> Yes you did but I was asked for the last year+ that all new compatible
>>>> should be soc specific (while imprecise, in our care soc family should be ok),
>>>> with a possible semi-generic callback with an IP version or a first soc
>>>> implementing the IP.
>>>>
>>>>> Plus the definition of a SoC is very vague. One could argue that
>>>>> the content of the list bellow are vaguely defined families. Should we
>>>>> add meson8b, gxl, gxm, sm1 ? ... or even the actual SoC reference ?
>>>>> This list gets huge for no reason.
>>>>
>>>> I think in our case soc family is reasonable since they share same silicon
>>>> design.
>>>>
>>>>> We know all existing PWM of this type are the same. We have been using
>>>>> them for years. It is not a new support we know nothing about.
>>>>>
>>>>>>
>>>>>> I thought something like:
>>>>>> - items:
>>>>>> - enum:
>>>>>> - amlogic,gxbb-pwm
>>>>>> - amlogic,axg-pwm
>>>>>> - amlogic,g12a-pwm
>>>>>> - const: amlogic,pwm-v1
>>>>> I'm not sure I understand what you are suggesting here.
>>>>> Adding a "amlogic,pwm-v1" for the obsolete compatible ? No amlogic DT
>>>>> has that and I'm working to remove this type, so I don't get the point.
>>>>>
>>>>>>
>>>>>> should be preferred instead of a single amlogic,meson8-pwm-v2 ?
>>>>> This is named after the first SoC supporting the type.
>>>>> Naming it amlogic,pwm-v2 would feel weird with the s4 coming after.
>>>>> Plus the doc specifically advise against this type of names.
>>>>
>>>> The -v2 refers to a pure software/dt implementation versioning and not
>>>> an HW version, so I'm puzzled and I requires DT maintainers advice here.
>>>>
>>>> Yes meson8b is the first "known" platform, even if I'm pretty sure meson6 has
>>
>> Yes, this should be SoC-based compatible, unless you have clear
>> versioning scheme by SoC/IP block vendor. You named it not a HW version,
>> which kind of answers to the "unless" case - that's not hardware version.
>>
>
> This is specifically the point of the comment in commit description.
> We know all the PWMs compatible are the same HW (version) as one found
> in the meson8b.
>
> It is certain that adding more compatible, listing all the SoC, will be
> useless. I can do it if you insist.

The docs you references insist on that, so yeah, I insist as well.

>
>>>
>>> This is not my point. I picked this name because I have to pick a
>>> specific device based one. Not because it is actually the first or
>>> not. I don't see a problem with meson6 being compatible with
>>> meson8-pwm-v2, if that ever comes along.
>>
>> No, the point is not to use "v2". Use SoC compatibles.
>
> It is a SoC compatible. The second one.

"v2" is not the soc. I assume meson8 is one specific SoC, right? Because
elinux says it is a *family*:
https://elinux.org/Amlogic/SoCs


>
> The first one, as explained in the description was describing the driver
> more that the HW.
>
> Changing the way clock are passed from DT to the driver would be break
> user of the old compatible. So a new compatible is introduced. I believe
> this is recommended way to introduce incompatible binding changes.

The way is not to introduce incompatible changes. Your way is also not
good as it breaks other users of DTS.

>
> v2 here denote a new interface version, nothing to do with HW
> versioning. I happy to pick something else to denote this.

Sorry, then it is not a SoC-based compatible.

>
>>
>>>
>>> I think the binding here satisfy the rule that it should be specific,
>>> and the intent that goes with it:
>>>
>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n42
>>>
>>>> the same pwm architecture, this is why "amlogic,pwm-v1" as fallback seems more
>>>> reasonable and s4 and later pwm could use the "amlogic,pwm-v2"
>>>> fallback.
>>>
>>> That is not how understand this:
>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n82
>>>
>>
>> Again, where the "v2" is defined? Where is any document explaining the
>> mapping between version blocks and SoC parts? Why do you list here only
>> major version? Blocks almost always have also minor (e.g. v2.0).
>
> Again, v2 does has nothing to do with the HW. Never wrote it was.
> The HW remains the same.

Don't add compatibles which are not related to HW, but represent
software versioning. Software does not matter for the bindings.

That's a clear NAK.

Best regards,
Krzysztof

2023-11-22 15:36:48

by Jerome Brunet

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type


On Wed 22 Nov 2023 at 16:04, Krzysztof Kozlowski <[email protected]> wrote:

> On 22/11/2023 15:34, Jerome Brunet wrote:
>>
>> On Wed 22 Nov 2023 at 09:37, Krzysztof Kozlowski <[email protected]> wrote:
>>
>>> On 20/11/2023 11:04, Jerome Brunet wrote:
>>>>>>>>> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
>>>>>>>>> 1 file changed, 34 insertions(+), 2 deletions(-)
>>>>>>>>>
>>>>>>>> Reviewed-by: Rob Herring <[email protected]>
>>>>>>>>
>>>>>>>
>>>>>>> I'm puzzled, isn't it recommended to have a per-soc compatible now ?
>>>
>>> Yes, it is.
>>>
>>>>>> I have specifically addressed this matter in the description,
>>>>>> haven't I ? What good would it do in this case ?
>>>
>>> There is nothing about compatible naming in commit msg.
>>
>> Krzysztof, the whole commit desciption is explanation about why a new
>> compatible is introduced. I don't understand this comment.
>>
>>>
>>>>>
>>>>> Yes you did but I was asked for the last year+ that all new compatible
>>>>> should be soc specific (while imprecise, in our care soc family should be ok),
>>>>> with a possible semi-generic callback with an IP version or a first soc
>>>>> implementing the IP.
>>>>>
>>>>>> Plus the definition of a SoC is very vague. One could argue that
>>>>>> the content of the list bellow are vaguely defined families. Should we
>>>>>> add meson8b, gxl, gxm, sm1 ? ... or even the actual SoC reference ?
>>>>>> This list gets huge for no reason.
>>>>>
>>>>> I think in our case soc family is reasonable since they share same silicon
>>>>> design.
>>>>>
>>>>>> We know all existing PWM of this type are the same. We have been using
>>>>>> them for years. It is not a new support we know nothing about.
>>>>>>
>>>>>>>
>>>>>>> I thought something like:
>>>>>>> - items:
>>>>>>> - enum:
>>>>>>> - amlogic,gxbb-pwm
>>>>>>> - amlogic,axg-pwm
>>>>>>> - amlogic,g12a-pwm
>>>>>>> - const: amlogic,pwm-v1
>>>>>> I'm not sure I understand what you are suggesting here.
>>>>>> Adding a "amlogic,pwm-v1" for the obsolete compatible ? No amlogic DT
>>>>>> has that and I'm working to remove this type, so I don't get the point.
>>>>>>
>>>>>>>
>>>>>>> should be preferred instead of a single amlogic,meson8-pwm-v2 ?
>>>>>> This is named after the first SoC supporting the type.
>>>>>> Naming it amlogic,pwm-v2 would feel weird with the s4 coming after.
>>>>>> Plus the doc specifically advise against this type of names.
>>>>>
>>>>> The -v2 refers to a pure software/dt implementation versioning and not
>>>>> an HW version, so I'm puzzled and I requires DT maintainers advice here.
>>>>>
>>>>> Yes meson8b is the first "known" platform, even if I'm pretty sure meson6 has
>>>
>>> Yes, this should be SoC-based compatible, unless you have clear
>>> versioning scheme by SoC/IP block vendor. You named it not a HW version,
>>> which kind of answers to the "unless" case - that's not hardware version.
>>>
>>
>> This is specifically the point of the comment in commit description.
>> We know all the PWMs compatible are the same HW (version) as one found
>> in the meson8b.
>>
>> It is certain that adding more compatible, listing all the SoC, will be
>> useless. I can do it if you insist.
>
> The docs you references insist on that, so yeah, I insist as well.
>
>>
>>>>
>>>> This is not my point. I picked this name because I have to pick a
>>>> specific device based one. Not because it is actually the first or
>>>> not. I don't see a problem with meson6 being compatible with
>>>> meson8-pwm-v2, if that ever comes along.
>>>
>>> No, the point is not to use "v2". Use SoC compatibles.
>>
>> It is a SoC compatible. The second one.
>
> "v2" is not the soc. I assume meson8 is one specific SoC, right? Because
> elinux says it is a *family*:
> https://elinux.org/Amlogic/SoCs
>

It is a family. yes

>
>>
>> The first one, as explained in the description was describing the driver
>> more that the HW.
>>
>> Changing the way clock are passed from DT to the driver would be break
>> user of the old compatible. So a new compatible is introduced. I believe
>> this is recommended way to introduce incompatible binding changes.
>
> The way is not to introduce incompatible changes. Your way is also not
> good as it breaks other users of DTS.
>
>>
>> v2 here denote a new interface version, nothing to do with HW
>> versioning. I happy to pick something else to denote this.
>
> Sorry, then it is not a SoC-based compatible.
>
>>
>>>
>>>>
>>>> I think the binding here satisfy the rule that it should be specific,
>>>> and the intent that goes with it:
>>>>
>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n42
>>>>
>>>>> the same pwm architecture, this is why "amlogic,pwm-v1" as fallback seems more
>>>>> reasonable and s4 and later pwm could use the "amlogic,pwm-v2"
>>>>> fallback.
>>>>
>>>> That is not how understand this:
>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n82
>>>>
>>>
>>> Again, where the "v2" is defined? Where is any document explaining the
>>> mapping between version blocks and SoC parts? Why do you list here only
>>> major version? Blocks almost always have also minor (e.g. v2.0).
>>
>> Again, v2 does has nothing to do with the HW. Never wrote it was.
>> The HW remains the same.
>
> Don't add compatibles which are not related to HW, but represent
> software versioning. Software does not matter for the bindings.

What I did I explicitly what is recommended in Grant's presentation from
2013. 10y old, but I assume slide 10 "Making an incompatible update" is
still valid.

https://elinux.org/images/1/1e/DT_Binding_Process_glikely_ksummit_2013_10_28.pdf

Breaking the ABI of the old compatible would break all boards which use
u-boot DT and pass it to the kernel, because the meaning of the clock
property would change.

Doing things has suggested in this slide, and this patch, allows every
device to continue to work properly, whether the DT given is the one
shipped with u-boot (using the old compatible for now) or the kernel.

>
> That's a clear NAK.
>
> Best regards,
> Krzysztof

2023-11-22 15:52:32

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type

On 22/11/2023 16:23, Jerome Brunet wrote:
>
> On Wed 22 Nov 2023 at 16:04, Krzysztof Kozlowski <[email protected]> wrote:
>
>> On 22/11/2023 15:34, Jerome Brunet wrote:
>>>
>>> On Wed 22 Nov 2023 at 09:37, Krzysztof Kozlowski <[email protected]> wrote:
>>>
>>>> On 20/11/2023 11:04, Jerome Brunet wrote:
>>>>>>>>>> .../devicetree/bindings/pwm/pwm-amlogic.yaml | 36 +++++++++++++++++--
>>>>>>>>>> 1 file changed, 34 insertions(+), 2 deletions(-)
>>>>>>>>>>
>>>>>>>>> Reviewed-by: Rob Herring <[email protected]>
>>>>>>>>>
>>>>>>>>
>>>>>>>> I'm puzzled, isn't it recommended to have a per-soc compatible now ?
>>>>
>>>> Yes, it is.
>>>>
>>>>>>> I have specifically addressed this matter in the description,
>>>>>>> haven't I ? What good would it do in this case ?
>>>>
>>>> There is nothing about compatible naming in commit msg.
>>>
>>> Krzysztof, the whole commit desciption is explanation about why a new
>>> compatible is introduced. I don't understand this comment.
>>>
>>>>
>>>>>>
>>>>>> Yes you did but I was asked for the last year+ that all new compatible
>>>>>> should be soc specific (while imprecise, in our care soc family should be ok),
>>>>>> with a possible semi-generic callback with an IP version or a first soc
>>>>>> implementing the IP.
>>>>>>
>>>>>>> Plus the definition of a SoC is very vague. One could argue that
>>>>>>> the content of the list bellow are vaguely defined families. Should we
>>>>>>> add meson8b, gxl, gxm, sm1 ? ... or even the actual SoC reference ?
>>>>>>> This list gets huge for no reason.
>>>>>>
>>>>>> I think in our case soc family is reasonable since they share same silicon
>>>>>> design.
>>>>>>
>>>>>>> We know all existing PWM of this type are the same. We have been using
>>>>>>> them for years. It is not a new support we know nothing about.
>>>>>>>
>>>>>>>>
>>>>>>>> I thought something like:
>>>>>>>> - items:
>>>>>>>> - enum:
>>>>>>>> - amlogic,gxbb-pwm
>>>>>>>> - amlogic,axg-pwm
>>>>>>>> - amlogic,g12a-pwm
>>>>>>>> - const: amlogic,pwm-v1
>>>>>>> I'm not sure I understand what you are suggesting here.
>>>>>>> Adding a "amlogic,pwm-v1" for the obsolete compatible ? No amlogic DT
>>>>>>> has that and I'm working to remove this type, so I don't get the point.
>>>>>>>
>>>>>>>>
>>>>>>>> should be preferred instead of a single amlogic,meson8-pwm-v2 ?
>>>>>>> This is named after the first SoC supporting the type.
>>>>>>> Naming it amlogic,pwm-v2 would feel weird with the s4 coming after.
>>>>>>> Plus the doc specifically advise against this type of names.
>>>>>>
>>>>>> The -v2 refers to a pure software/dt implementation versioning and not
>>>>>> an HW version, so I'm puzzled and I requires DT maintainers advice here.
>>>>>>
>>>>>> Yes meson8b is the first "known" platform, even if I'm pretty sure meson6 has
>>>>
>>>> Yes, this should be SoC-based compatible, unless you have clear
>>>> versioning scheme by SoC/IP block vendor. You named it not a HW version,
>>>> which kind of answers to the "unless" case - that's not hardware version.
>>>>
>>>
>>> This is specifically the point of the comment in commit description.
>>> We know all the PWMs compatible are the same HW (version) as one found
>>> in the meson8b.
>>>
>>> It is certain that adding more compatible, listing all the SoC, will be
>>> useless. I can do it if you insist.
>>
>> The docs you references insist on that, so yeah, I insist as well.
>>
>>>
>>>>>
>>>>> This is not my point. I picked this name because I have to pick a
>>>>> specific device based one. Not because it is actually the first or
>>>>> not. I don't see a problem with meson6 being compatible with
>>>>> meson8-pwm-v2, if that ever comes along.
>>>>
>>>> No, the point is not to use "v2". Use SoC compatibles.
>>>
>>> It is a SoC compatible. The second one.
>>
>> "v2" is not the soc. I assume meson8 is one specific SoC, right? Because
>> elinux says it is a *family*:
>> https://elinux.org/Amlogic/SoCs
>>
>
> It is a family. yes
>
>>
>>>
>>> The first one, as explained in the description was describing the driver
>>> more that the HW.
>>>
>>> Changing the way clock are passed from DT to the driver would be break
>>> user of the old compatible. So a new compatible is introduced. I believe
>>> this is recommended way to introduce incompatible binding changes.
>>
>> The way is not to introduce incompatible changes. Your way is also not
>> good as it breaks other users of DTS.
>>
>>>
>>> v2 here denote a new interface version, nothing to do with HW
>>> versioning. I happy to pick something else to denote this.
>>
>> Sorry, then it is not a SoC-based compatible.
>>
>>>
>>>>
>>>>>
>>>>> I think the binding here satisfy the rule that it should be specific,
>>>>> and the intent that goes with it:
>>>>>
>>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n42
>>>>>
>>>>>> the same pwm architecture, this is why "amlogic,pwm-v1" as fallback seems more
>>>>>> reasonable and s4 and later pwm could use the "amlogic,pwm-v2"
>>>>>> fallback.
>>>>>
>>>>> That is not how understand this:
>>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst?h=v6.7-rc2#n82
>>>>>
>>>>
>>>> Again, where the "v2" is defined? Where is any document explaining the
>>>> mapping between version blocks and SoC parts? Why do you list here only
>>>> major version? Blocks almost always have also minor (e.g. v2.0).
>>>
>>> Again, v2 does has nothing to do with the HW. Never wrote it was.
>>> The HW remains the same.
>>
>> Don't add compatibles which are not related to HW, but represent
>> software versioning. Software does not matter for the bindings.
>
> What I did I explicitly what is recommended in Grant's presentation from
> 2013. 10y old, but I assume slide 10 "Making an incompatible update" is
> still valid.
>
> https://elinux.org/images/1/1e/DT_Binding_Process_glikely_ksummit_2013_10_28.pdf
>
> Breaking the ABI of the old compatible would break all boards which use
> u-boot DT and pass it to the kernel, because the meaning of the clock
> property would change.

You broke U-Boot now as well - it will get your new DTS from the kernel
and stop working.

>
> Doing things has suggested in this slide, and this patch, allows every
> device to continue to work properly, whether the DT given is the one
> shipped with u-boot (using the old compatible for now) or the kernel.

OK, that explains the reasons. I read your commit msg and nothing like
this was mentioned there. What's more, you did not deprecate the old
binding, thus the confusion - it looked like you add entirely new
hardware (although you put "deprecated" but in some unrelated place, not
next to the compatibles).

Anyway, the main point of Neil was that you started using generic
compatible for all SoCs, which is wrong as well. I guess this was the
original discussion.

Best regards,
Krzysztof

2023-11-22 17:18:37

by Jerome Brunet

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type


On Wed 22 Nov 2023 at 16:46, Krzysztof Kozlowski <[email protected]> wrote:


>>>>>
>>>>> Again, where the "v2" is defined? Where is any document explaining the
>>>>> mapping between version blocks and SoC parts? Why do you list here only
>>>>> major version? Blocks almost always have also minor (e.g. v2.0).
>>>>
>>>> Again, v2 does has nothing to do with the HW. Never wrote it was.
>>>> The HW remains the same.
>>>
>>> Don't add compatibles which are not related to HW, but represent
>>> software versioning. Software does not matter for the bindings.
>>
>> What I did I explicitly what is recommended in Grant's presentation from
>> 2013. 10y old, but I assume slide 10 "Making an incompatible update" is
>> still valid.
>>
>> https://elinux.org/images/1/1e/DT_Binding_Process_glikely_ksummit_2013_10_28.pdf
>>
>> Breaking the ABI of the old compatible would break all boards which use
>> u-boot DT and pass it to the kernel, because the meaning of the clock
>> property would change.
>
> You broke U-Boot now as well - it will get your new DTS from the kernel
> and stop working.

U-boot will continue to match the old compatible and work properly.
When the dts using the new compatible lands in u-boot, it won't
match until proper driver support is added. It is a lot better than
breaking the ABI, which would have silently broke u-boot.

I don't really see a way around that.

If you have better way to fix a bad interface, feel free to share it.

>
>>
>> Doing things has suggested in this slide, and this patch, allows every
>> device to continue to work properly, whether the DT given is the one
>> shipped with u-boot (using the old compatible for now) or the kernel.
>
> OK, that explains the reasons. I read your commit msg and nothing like
> this was mentioned there. What's more, you did not deprecate the old
> binding, thus the confusion - it looked like you add entirely new
> hardware (although you put "deprecated" but in some unrelated place, not
> next to the compatibles).

The old interface being obsoleted by the new one is mentionned in the
commit description, the comments in the bindings and the bindings itself.
Thanks a lot for pointing out the placement mistake. I'll fix it.

The commit description says:
* What the patch does
* Why it does it:
* Why the old bindings is bad/broken
* How the new ones fixes the problem
* Why a single compatible properly describes, IMO, all the related HW.

This describes the entirety of what the change does.
That seemed clear enough for Rob. If that is not enough for you and you
would like it reworded, could please provide a few suggestions ?

>
> Anyway, the main point of Neil was that you started using generic
> compatible for all SoCs, which is wrong as well. I guess this was the
> original discussion.

The whole reason for this change is to properly describe the HW, which
is the 100% same on all the SoCs, or SoC families, concerned. The only
reason there was a lot of old compatibles is because it was used to match
data in the driver (this is clearly wrong). This data would now be
passed through DT.

I have been clear about this in the change description.

So why is it wrong to have single compatible for a type of device that
is 100% the same HW ?

It is lot a easier to apply a rule correctly when the intent is clear.

>
> Best regards,
> Krzysztof

2023-11-22 18:09:24

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] dt-bindings: pwm: amlogic: add new compatible for meson8 pwm type

On 22/11/2023 17:14, Jerome Brunet wrote:
>
> On Wed 22 Nov 2023 at 16:46, Krzysztof Kozlowski <[email protected]> wrote:
>
>
>>>>>>
>>>>>> Again, where the "v2" is defined? Where is any document explaining the
>>>>>> mapping between version blocks and SoC parts? Why do you list here only
>>>>>> major version? Blocks almost always have also minor (e.g. v2.0).
>>>>>
>>>>> Again, v2 does has nothing to do with the HW. Never wrote it was.
>>>>> The HW remains the same.
>>>>
>>>> Don't add compatibles which are not related to HW, but represent
>>>> software versioning. Software does not matter for the bindings.
>>>
>>> What I did I explicitly what is recommended in Grant's presentation from
>>> 2013. 10y old, but I assume slide 10 "Making an incompatible update" is
>>> still valid.
>>>
>>> https://elinux.org/images/1/1e/DT_Binding_Process_glikely_ksummit_2013_10_28.pdf
>>>
>>> Breaking the ABI of the old compatible would break all boards which use
>>> u-boot DT and pass it to the kernel, because the meaning of the clock
>>> property would change.
>>
>> You broke U-Boot now as well - it will get your new DTS from the kernel
>> and stop working.
>
> U-boot will continue to match the old compatible and work properly.
> When the dts using the new compatible lands in u-boot, it won't
> match until proper driver support is added. It is a lot better than
> breaking the ABI, which would have silently broke u-boot.
>
> I don't really see a way around that.
>
> If you have better way to fix a bad interface, feel free to share it.
>
>>
>>>
>>> Doing things has suggested in this slide, and this patch, allows every
>>> device to continue to work properly, whether the DT given is the one
>>> shipped with u-boot (using the old compatible for now) or the kernel.
>>
>> OK, that explains the reasons. I read your commit msg and nothing like
>> this was mentioned there. What's more, you did not deprecate the old
>> binding, thus the confusion - it looked like you add entirely new
>> hardware (although you put "deprecated" but in some unrelated place, not
>> next to the compatibles).
>
> The old interface being obsoleted by the new one is mentionned in the
> commit description, the comments in the bindings and the bindings itself.
> Thanks a lot for pointing out the placement mistake. I'll fix it.
>
> The commit description says:
> * What the patch does
> * Why it does it:
> * Why the old bindings is bad/broken
> * How the new ones fixes the problem
> * Why a single compatible properly describes, IMO, all the related HW.
>
> This describes the entirety of what the change does.
> That seemed clear enough for Rob. If that is not enough for you and you
> would like it reworded, could please provide a few suggestions ?

You did not deprecate the compatibles, so this has to be fixed. You put
the compatible in some other place, not really relevant.

>
>>
>> Anyway, the main point of Neil was that you started using generic
>> compatible for all SoCs, which is wrong as well. I guess this was the
>> original discussion.
>
> The whole reason for this change is to properly describe the HW, which
> is the 100% same on all the SoCs, or SoC families, concerned. The only

You still need specific compatibles, because the hardware is not 100%
the same. Programming model can, but hardware differs. Many times
engineers thought that devices are 100% compatible and then turned out
they are not. I am bored to repeat all this again and again.

> reason there was a lot of old compatibles is because it was used to match
> data in the driver (this is clearly wrong). This data would now be
> passed through DT.
>
> I have been clear about this in the change description.
>
> So why is it wrong to have single compatible for a type of device that
> is 100% the same HW ?

Because it is generic, not specific (you match "foo" against "bar" SoC).
The chapter from writing-bindings you referenced earlier mentioned this.
You need ability to add quirks and customize for these minor hardware
differences, even if programming model is the same.

>
> It is lot a easier to apply a rule correctly when the intent is clear.
>
>>
>> Best regards,
>> Krzysztof
>

Best regards,
Krzysztof