Message ID | 20201009153031.986-2-nsaenzjulienne@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Raspberry Pi 4 PoE HAT fan support | expand |
On Fri, Oct 09, 2020 at 05:30:28PM +0200, Nicolas Saenz Julienne wrote: > The PWM bus controlling the fan in RPi's official PoE hat can only be > controlled by the board's co-processor. > > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> > --- > .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++++++++++++++++++ > .../pwm/raspberrypi,firmware-pwm.h | 13 ++++++++++++ > 2 files changed, 34 insertions(+) > create mode 100644 include/dt-bindings/pwm/raspberrypi,firmware-pwm.h > > diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > index a2c63c8b1d10..dcaf00e8602e 100644 > --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > @@ -64,6 +64,22 @@ properties: > - compatible > - "#reset-cells" > > + pwm: > + type: object > + > + properties: > + compatible: > + const: raspberrypi,firmware-pwm > + > + "#pwm-cells": > + const: 1 > + description: > > + The argument is the PWM bus number. This is wrong. #pwm-cells specifies the number of "arguments" for phandles pointing to this node. And I would prefer this being 2 to match the stuff described in the generic pwm binding. Best regards Uwe
Hi Uwe, thanks for having a look at this. On Mon, 2020-10-12 at 09:01 +0200, Uwe Kleine-König wrote: > On Fri, Oct 09, 2020 at 05:30:28PM +0200, Nicolas Saenz Julienne wrote: > > The PWM bus controlling the fan in RPi's official PoE hat can only be > > controlled by the board's co-processor. > > > > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> > > --- > > .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++++++++++++++++++ > > .../pwm/raspberrypi,firmware-pwm.h | 13 ++++++++++++ > > 2 files changed, 34 insertions(+) > > create mode 100644 include/dt-bindings/pwm/raspberrypi,firmware-pwm.h > > > > diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > index a2c63c8b1d10..dcaf00e8602e 100644 > > --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > @@ -64,6 +64,22 @@ properties: > > - compatible > > - "#reset-cells" > > > > + pwm: > > + type: object > > + > > + properties: > > + compatible: > > + const: raspberrypi,firmware-pwm > > + > > + "#pwm-cells": > > + const: 1 > > + description: > > > + The argument is the PWM bus number. > > This is wrong. #pwm-cells specifies the number of "arguments" for > phandles pointing to this node. And I would prefer this being 2 to match > the stuff described in the generic pwm binding. I saw buses out there with the same limitation as this one (unable to change frequency) that used a single cell, so I whent with it. That said I'll be happy to change it and drop the custom *_xlate() function in benefit of the default one. Regards, Nicolas
On Tue, Oct 13, 2020 at 12:35:38PM +0200, Nicolas Saenz Julienne wrote: > Hi Uwe, thanks for having a look at this. > > On Mon, 2020-10-12 at 09:01 +0200, Uwe Kleine-König wrote: > > On Fri, Oct 09, 2020 at 05:30:28PM +0200, Nicolas Saenz Julienne wrote: > > > The PWM bus controlling the fan in RPi's official PoE hat can only be > > > controlled by the board's co-processor. > > > > > > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> > > > --- > > > .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++++++++++++++++++ > > > .../pwm/raspberrypi,firmware-pwm.h | 13 ++++++++++++ > > > 2 files changed, 34 insertions(+) > > > create mode 100644 include/dt-bindings/pwm/raspberrypi,firmware-pwm.h > > > > > > diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > > index a2c63c8b1d10..dcaf00e8602e 100644 > > > --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > > +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > > @@ -64,6 +64,22 @@ properties: > > > - compatible > > > - "#reset-cells" > > > > > > + pwm: > > > + type: object > > > + > > > + properties: > > > + compatible: > > > + const: raspberrypi,firmware-pwm > > > + > > > + "#pwm-cells": > > > + const: 1 > > > + description: > > > > + The argument is the PWM bus number. > > > > This is wrong. #pwm-cells specifies the number of "arguments" for > > phandles pointing to this node. And I would prefer this being 2 to match > > the stuff described in the generic pwm binding. > > I saw buses out there with the same limitation as this one (unable to change > frequency) that used a single cell, so I whent with it. That said I'll be happy > to change it and drop the custom *_xlate() function in benefit of the default > one. As the first cell after the phandle is for the period and only the second if for flags, this is a poor argument. So yes, use #pwm-cells = <2> and drop the custom xlate() function please. Best regards Uwe
On Tue, 2020-10-13 at 14:08 +0200, Uwe Kleine-König wrote: > On Tue, Oct 13, 2020 at 12:35:38PM +0200, Nicolas Saenz Julienne wrote: > > Hi Uwe, thanks for having a look at this. > > > > On Mon, 2020-10-12 at 09:01 +0200, Uwe Kleine-König wrote: > > > On Fri, Oct 09, 2020 at 05:30:28PM +0200, Nicolas Saenz Julienne wrote: > > > > The PWM bus controlling the fan in RPi's official PoE hat can only be > > > > controlled by the board's co-processor. > > > > > > > > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> > > > > --- > > > > .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++++++++++++++++++ > > > > .../pwm/raspberrypi,firmware-pwm.h | 13 ++++++++++++ > > > > 2 files changed, 34 insertions(+) > > > > create mode 100644 include/dt-bindings/pwm/raspberrypi,firmware-pwm.h > > > > > > > > diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > > > index a2c63c8b1d10..dcaf00e8602e 100644 > > > > --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > > > +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > > > @@ -64,6 +64,22 @@ properties: > > > > - compatible > > > > - "#reset-cells" > > > > > > > > + pwm: > > > > + type: object > > > > + > > > > + properties: > > > > + compatible: > > > > + const: raspberrypi,firmware-pwm > > > > + > > > > + "#pwm-cells": > > > > + const: 1 > > > > + description: > > > > > + The argument is the PWM bus number. > > > > > > This is wrong. #pwm-cells specifies the number of "arguments" for > > > phandles pointing to this node. And I would prefer this being 2 to match > > > the stuff described in the generic pwm binding. > > > > I saw buses out there with the same limitation as this one (unable to change > > frequency) that used a single cell, so I whent with it. That said I'll be happy > > to change it and drop the custom *_xlate() function in benefit of the default > > one. > > As the first cell after the phandle is for the period and only the > second if for flags, this is a poor argument. In that case aren't these bindings wrong (and associated xlate() functions)? google,cros-ec-pwm.yaml: [...] properties: compatible: const: google,cros-ec-pwm "#pwm-cells": description: The cell specifies the PWM index. const: 1 [...] cirrus,clps711x-pwm.txt: [...] - #pwm-cells: Should be 1. The cell specifies the index of the channel. [...] Note that pxa-pwm.txt behaves as you comment. Ultimately note that in of_pwm_simple_xlate() the second argument is used to assign the pwm period, the first one is passed as an index to pwm_request_from_chip(). > So yes, use #pwm-cells = <2> and drop the custom xlate() function please. I'll still go this way nontheless. Just want to make sure I understand things correctly. Regards, Nicolas
On Tue, Oct 13, 2020 at 02:33:20PM +0200, Nicolas Saenz Julienne wrote: > On Tue, 2020-10-13 at 14:08 +0200, Uwe Kleine-König wrote: > > On Tue, Oct 13, 2020 at 12:35:38PM +0200, Nicolas Saenz Julienne wrote: > > > Hi Uwe, thanks for having a look at this. > > > > > > On Mon, 2020-10-12 at 09:01 +0200, Uwe Kleine-König wrote: > > > > On Fri, Oct 09, 2020 at 05:30:28PM +0200, Nicolas Saenz Julienne wrote: > > > > > The PWM bus controlling the fan in RPi's official PoE hat can only be > > > > > controlled by the board's co-processor. > > > > > > > > > > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> > > > > > --- > > > > > .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++++++++++++++++++ > > > > > .../pwm/raspberrypi,firmware-pwm.h | 13 ++++++++++++ > > > > > 2 files changed, 34 insertions(+) > > > > > create mode 100644 include/dt-bindings/pwm/raspberrypi,firmware-pwm.h > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > > > > index a2c63c8b1d10..dcaf00e8602e 100644 > > > > > --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > > > > +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml > > > > > @@ -64,6 +64,22 @@ properties: > > > > > - compatible > > > > > - "#reset-cells" > > > > > > > > > > + pwm: > > > > > + type: object > > > > > + > > > > > + properties: > > > > > + compatible: > > > > > + const: raspberrypi,firmware-pwm > > > > > + > > > > > + "#pwm-cells": > > > > > + const: 1 > > > > > + description: > > > > > > + The argument is the PWM bus number. > > > > > > > > This is wrong. #pwm-cells specifies the number of "arguments" for > > > > phandles pointing to this node. And I would prefer this being 2 to match > > > > the stuff described in the generic pwm binding. > > > > > > I saw buses out there with the same limitation as this one (unable to change > > > frequency) that used a single cell, so I whent with it. That said I'll be happy > > > to change it and drop the custom *_xlate() function in benefit of the default > > > one. > > > > As the first cell after the phandle is for the period and only the > > second if for flags, this is a poor argument. > > In that case aren't these bindings wrong (and associated xlate() functions)? Ah, got it wrong, I want #pwm-cells = <3> where the first argument is the index, the second the period and the third flags. > google,cros-ec-pwm.yaml: > [...] > properties: > compatible: > const: google,cros-ec-pwm > "#pwm-cells": > description: The cell specifies the PWM index. > const: 1 > [...] > > cirrus,clps711x-pwm.txt: > [...] > - #pwm-cells: Should be 1. The cell specifies the index of the channel. > [...] > > Note that pxa-pwm.txt behaves as you comment. Hmm, this one has a custom .xlate function, too :-\ Best regards Uwe
diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml index a2c63c8b1d10..dcaf00e8602e 100644 --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml @@ -64,6 +64,22 @@ properties: - compatible - "#reset-cells" + pwm: + type: object + + properties: + compatible: + const: raspberrypi,firmware-pwm + + "#pwm-cells": + const: 1 + description: > + The argument is the PWM bus number. + + required: + - compatible + - "#pwm-cells" + additionalProperties: false required: @@ -87,5 +103,10 @@ examples: compatible = "raspberrypi,firmware-reset"; #reset-cells = <1>; }; + + pwm: pwm { + compatible = "raspberrypi,firmware-pwm"; + #pwm-cells = <1>; + }; }; ... diff --git a/include/dt-bindings/pwm/raspberrypi,firmware-pwm.h b/include/dt-bindings/pwm/raspberrypi,firmware-pwm.h new file mode 100644 index 000000000000..27c5ce68847b --- /dev/null +++ b/include/dt-bindings/pwm/raspberrypi,firmware-pwm.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2020 Nicolas Saenz Julienne + * Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> + */ + +#ifndef _DT_BINDINGS_RASPBERRYPI_FIRMWARE_PWM_H +#define _DT_BINDINGS_RASPBERRYPI_FIRMWARE_PWM_H + +#define RASPBERRYPI_FIRMWARE_PWM_POE 0 +#define RASPBERRYPI_FIRMWARE_PWM_NUM 1 + +#endif
The PWM bus controlling the fan in RPi's official PoE hat can only be controlled by the board's co-processor. Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> --- .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++++++++++++++++++ .../pwm/raspberrypi,firmware-pwm.h | 13 ++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 include/dt-bindings/pwm/raspberrypi,firmware-pwm.h