From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: "Baruch Siach" <baruch@tkos.co.il>,
"Rob Herring" <robh@kernel.org>, "Andrew Lunn" <andrew@lunn.ch>,
linux-pwm@vger.kernel.org,
"Gregory Clement" <gregory.clement@bootlin.com>,
"Chris Packham" <chris.packham@alliedtelesis.co.nz>,
"Rob Herring" <robh+dt@kernel.org>,
"Bartosz Golaszewski" <bgolaszewski@baylibre.com>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@vger.kernel.org>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Linux ARM" <linux-arm-kernel@lists.infradead.org>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
"Ralph Sennhauser" <ralph.sennhauser@gmail.com>,
"Lee Jones" <lee.jones@linaro.org>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
"Sebastian Hesselbarth" <sebastian.hesselbarth@gmail.com>
Subject: Re: [PATCH v7 3/3] dt-bindings: ap806: document gpio marvell,pwm-offset property
Date: Tue, 12 Jan 2021 10:36:18 +0000 [thread overview]
Message-ID: <20210112103617.GB1551@shell.armlinux.org.uk> (raw)
In-Reply-To: <CACRpkdZAHpcgzXSJKZyQjBOriALZUoXbw_hBpPa_zxa27=F0hg@mail.gmail.com>
On Tue, Jan 12, 2021 at 09:49:16AM +0100, Linus Walleij wrote:
> Hi Baruch,
>
> this caught my eye:
>
> On Mon, Jan 11, 2021 at 12:47 PM Baruch Siach <baruch@tkos.co.il> wrote:
>
> > Update the example as well. Add the '#pwm-cells' and 'clocks' properties
> > for a complete working example.
> >
> > Reviewed-by: Rob Herring <robh@kernel.org>
> > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>
> (...)
> > +Optional properties:
> > +
> > +- marvell,pwm-offset: offset address of PWM duration control registers inside
> > + the syscon block
> (...)
> > ap_syscon: system-controller@6f4000 {
> > compatible = "syscon", "simple-mfd";
> > @@ -101,6 +106,9 @@ ap_syscon: system-controller@6f4000 {
> > gpio-controller;
> > #gpio-cells = <2>;
> > gpio-ranges = <&ap_pinctrl 0 0 19>;
> > + marvell,pwm-offset = <0x10c0>;
>
> This seems to be one of those cases where we start to encode things related
> to the hardware variant into the device tree.
>
> Is this just documenting ABI that was introduced in the past and we can not
> do anything about now? In that case it is OK I suppose.
>
> For a new binding we would certainly require that the system controller
> provide a specific tertiary compatible string for this, lest we disguise
> the not-so-simple system controller as "simple-mfd" so:
>
> compatible = "syscon", "simple-mfd", "my-silicon-id";
>
> Then detect the PWM offset by using
> if(of_device_is_compatibe(np, "my-silicon-id"))
> in the code rather than parsing any marvell,pwm-offset property.
I think it would be a good idea to describe the hardware more fully.
For the CP110 and AP80x dies on Armada 8040:
CP110 AP80x
Offset Offset
00/40 5040 Data Out
04/44 5044 Data Out Enable
08/48 5048 Blink Enable
0c/4c 504c Data In polarity
10/50 5050 Data In
14/54 5054 IRQ Cause
18/58 5058 IRQ Mask
1c/5c 505c IRQ Level mask
20/60 5060 Blink Counter Select
28/68 5068 Control Set
2c/6c 506c Control Clear
30/70 5070 Data Out Set
34/74 5074 Data Out Clear
f0 50c0 Blink Counter A ON duration
f4 50c4 Blink Counter A OFF duration
f8 50c8 Blink Counter B ON duration
fc 50cc Blink Counter B OFF duration
We identify both of these using a compatible of "marvell,armada-8k-gpio"
which really only describes the first 64 bytes of the register set:
ap_gpio: gpio@1040 {
compatible = "marvell,armada-8k-gpio";
offset = <0x1040>;
...
};
CP11X_LABEL(gpio1): gpio@100 {
compatible = "marvell,armada-8k-gpio";
offset = <0x100>;
...
};
CP11X_LABEL(gpio2): gpio@140 {
compatible = "marvell,armada-8k-gpio";
offset = <0x140>;
...
};
Note that on the CP11x dies, there are two GPIO controllers sharing the
same set of blink counter registers - one at offset 0 the other at
offset 0x40.
However, the pwm-offset is the offset in the regmap of the parent node.
It is possible to use a more specific compatible that would describe
the PWM offset for the CP11x and AP806 (which would need two different
ones) but that starts getting messy when you consider that we already
describe an offset in regmap for the first 64 registers, and encoding
the blink register offset in a compatible would partially end up
encoding the "offset" we already have.
In any case, these offsets are a function of how it was originally
chosen to describe the hardware in DT, rather than anything about the
hardware itself. The choice to use a syscon/regmap is purely an
implementation decision rather than something from the hardware, so
this DT description is already based around describing what is required
for the Linux implementation, rather than purely being a hardware
description.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: "Baruch Siach" <baruch@tkos.co.il>,
linux-pwm@vger.kernel.org,
"Gregory Clement" <gregory.clement@bootlin.com>,
"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Bartosz Golaszewski" <bgolaszewski@baylibre.com>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@vger.kernel.org>,
"Chris Packham" <chris.packham@alliedtelesis.co.nz>,
"Andrew Lunn" <andrew@lunn.ch>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
"Ralph Sennhauser" <ralph.sennhauser@gmail.com>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Lee Jones" <lee.jones@linaro.org>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"Linux ARM" <linux-arm-kernel@lists.infradead.org>,
"Sebastian Hesselbarth" <sebastian.hesselbarth@gmail.com>
Subject: Re: [PATCH v7 3/3] dt-bindings: ap806: document gpio marvell,pwm-offset property
Date: Tue, 12 Jan 2021 10:36:18 +0000 [thread overview]
Message-ID: <20210112103617.GB1551@shell.armlinux.org.uk> (raw)
In-Reply-To: <CACRpkdZAHpcgzXSJKZyQjBOriALZUoXbw_hBpPa_zxa27=F0hg@mail.gmail.com>
On Tue, Jan 12, 2021 at 09:49:16AM +0100, Linus Walleij wrote:
> Hi Baruch,
>
> this caught my eye:
>
> On Mon, Jan 11, 2021 at 12:47 PM Baruch Siach <baruch@tkos.co.il> wrote:
>
> > Update the example as well. Add the '#pwm-cells' and 'clocks' properties
> > for a complete working example.
> >
> > Reviewed-by: Rob Herring <robh@kernel.org>
> > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>
> (...)
> > +Optional properties:
> > +
> > +- marvell,pwm-offset: offset address of PWM duration control registers inside
> > + the syscon block
> (...)
> > ap_syscon: system-controller@6f4000 {
> > compatible = "syscon", "simple-mfd";
> > @@ -101,6 +106,9 @@ ap_syscon: system-controller@6f4000 {
> > gpio-controller;
> > #gpio-cells = <2>;
> > gpio-ranges = <&ap_pinctrl 0 0 19>;
> > + marvell,pwm-offset = <0x10c0>;
>
> This seems to be one of those cases where we start to encode things related
> to the hardware variant into the device tree.
>
> Is this just documenting ABI that was introduced in the past and we can not
> do anything about now? In that case it is OK I suppose.
>
> For a new binding we would certainly require that the system controller
> provide a specific tertiary compatible string for this, lest we disguise
> the not-so-simple system controller as "simple-mfd" so:
>
> compatible = "syscon", "simple-mfd", "my-silicon-id";
>
> Then detect the PWM offset by using
> if(of_device_is_compatibe(np, "my-silicon-id"))
> in the code rather than parsing any marvell,pwm-offset property.
I think it would be a good idea to describe the hardware more fully.
For the CP110 and AP80x dies on Armada 8040:
CP110 AP80x
Offset Offset
00/40 5040 Data Out
04/44 5044 Data Out Enable
08/48 5048 Blink Enable
0c/4c 504c Data In polarity
10/50 5050 Data In
14/54 5054 IRQ Cause
18/58 5058 IRQ Mask
1c/5c 505c IRQ Level mask
20/60 5060 Blink Counter Select
28/68 5068 Control Set
2c/6c 506c Control Clear
30/70 5070 Data Out Set
34/74 5074 Data Out Clear
f0 50c0 Blink Counter A ON duration
f4 50c4 Blink Counter A OFF duration
f8 50c8 Blink Counter B ON duration
fc 50cc Blink Counter B OFF duration
We identify both of these using a compatible of "marvell,armada-8k-gpio"
which really only describes the first 64 bytes of the register set:
ap_gpio: gpio@1040 {
compatible = "marvell,armada-8k-gpio";
offset = <0x1040>;
...
};
CP11X_LABEL(gpio1): gpio@100 {
compatible = "marvell,armada-8k-gpio";
offset = <0x100>;
...
};
CP11X_LABEL(gpio2): gpio@140 {
compatible = "marvell,armada-8k-gpio";
offset = <0x140>;
...
};
Note that on the CP11x dies, there are two GPIO controllers sharing the
same set of blink counter registers - one at offset 0 the other at
offset 0x40.
However, the pwm-offset is the offset in the regmap of the parent node.
It is possible to use a more specific compatible that would describe
the PWM offset for the CP11x and AP806 (which would need two different
ones) but that starts getting messy when you consider that we already
describe an offset in regmap for the first 64 registers, and encoding
the blink register offset in a compatible would partially end up
encoding the "offset" we already have.
In any case, these offsets are a function of how it was originally
chosen to describe the hardware in DT, rather than anything about the
hardware itself. The choice to use a syscon/regmap is purely an
implementation decision rather than something from the hardware, so
this DT description is already based around describing what is required
for the Linux implementation, rather than purely being a hardware
description.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-01-12 10:37 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-11 11:46 [PATCH v7 0/3] gpio: mvebu: Armada 8K/7K PWM support Baruch Siach
2021-01-11 11:46 ` Baruch Siach
2021-01-11 11:46 ` [PATCH v7 1/3] gpio: mvebu: add pwm support for Armada 8K/7K Baruch Siach
2021-01-11 11:46 ` Baruch Siach
2021-01-22 12:58 ` Bartosz Golaszewski
2021-01-22 12:58 ` Bartosz Golaszewski
2021-01-24 6:17 ` Baruch Siach
2021-01-24 6:17 ` Baruch Siach
2021-01-11 11:46 ` [PATCH v7 2/3] arm64: dts: armada: add pwm offsets for ap/cp gpios Baruch Siach
2021-01-11 11:46 ` Baruch Siach
2021-01-25 9:50 ` Bartosz Golaszewski
2021-01-25 9:50 ` Bartosz Golaszewski
2021-01-29 15:56 ` Gregory CLEMENT
2021-02-02 11:27 ` Bartosz Golaszewski
2021-02-02 11:27 ` Bartosz Golaszewski
2021-01-29 15:55 ` Gregory CLEMENT
2021-01-29 15:55 ` Gregory CLEMENT
2021-01-11 11:46 ` [PATCH v7 3/3] dt-bindings: ap806: document gpio marvell,pwm-offset property Baruch Siach
2021-01-11 11:46 ` [PATCH v7 3/3] dt-bindings: ap806: document gpio marvell, pwm-offset property Baruch Siach
2021-01-12 8:49 ` [PATCH v7 3/3] dt-bindings: ap806: document gpio marvell,pwm-offset property Linus Walleij
2021-01-12 8:49 ` Linus Walleij
2021-01-12 10:36 ` Russell King - ARM Linux admin [this message]
2021-01-12 10:36 ` Russell King - ARM Linux admin
2021-01-18 13:37 ` Linus Walleij
2021-01-18 13:37 ` Linus Walleij
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=20210112103617.GB1551@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=andrew@lunn.ch \
--cc=baruch@tkos.co.il \
--cc=bgolaszewski@baylibre.com \
--cc=chris.packham@alliedtelesis.co.nz \
--cc=devicetree@vger.kernel.org \
--cc=gregory.clement@bootlin.com \
--cc=lee.jones@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=ralph.sennhauser@gmail.com \
--cc=robh+dt@kernel.org \
--cc=robh@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=sebastian.hesselbarth@gmail.com \
--cc=thierry.reding@gmail.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=u.kleine-koenig@pengutronix.de \
/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.