From: Christian Marangi <ansuelsmth@gmail.com>
To: Lee Jones <lee@kernel.org>
Cc: "Lorenzo Bianconi" <lorenzo@kernel.org>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Sean Wang" <sean.wang@kernel.org>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Uwe Kleine-König" <ukleinek@kernel.org>,
linux-mediatek@lists.infradead.org, linux-gpio@vger.kernel.org,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
upstream@airoha.com, benjamin.larsson@genexis.eu,
linux-pwm@vger.kernel.org
Subject: Re: [PATCH v3 2/5] dt-bindings: mfd: Add support for Airoha EN7581 GPIO System Controller
Date: Tue, 3 Sep 2024 16:00:12 +0200 [thread overview]
Message-ID: <66d72ea9.df0a0220.21f5f.029f@mx.google.com> (raw)
In-Reply-To: <20240903153353.GZ6858@google.com>
On Tue, Sep 03, 2024 at 04:33:53PM +0100, Lee Jones wrote:
> On Sat, 31 Aug 2024, Lorenzo Bianconi wrote:
>
> > From: Christian Marangi <ansuelsmth@gmail.com>
> >
> > Add support for Airoha EN7581 GPIO System Controller which provide a
> > register map for controlling the GPIO, pinctrl and PWM of the SoC.
> >
> > Schema define cells for both gpio/interrupt controller and PWM.
> > Moreover it provides a dedicated pinctrl node for pins and config
> > definitions.
> >
> > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> > Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org>
> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> > ---
> > .../bindings/mfd/airoha,en7581-gpio-sysctl.yaml | 433 +++++++++++++++++++++
> > 1 file changed, 433 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/mfd/airoha,en7581-gpio-sysctl.yaml b/Documentation/devicetree/bindings/mfd/airoha,en7581-gpio-sysctl.yaml
> > new file mode 100644
> > index 000000000000..a9080c7f50f9
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/mfd/airoha,en7581-gpio-sysctl.yaml
> > @@ -0,0 +1,433 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/mfd/airoha,en7581-gpio-sysctl.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Airoha EN7581 GPIO System Controller
> > +
> > +maintainers:
> > + - Christian Marangi <ansuelsmth@gmail.com>
> > + - Lorenzo Bianconi <lorenzo@kernel.org>
> > +
> > +description:
> > + Airoha EN7581 SoC GPIO system controller which provided a register map
> > + for controlling the GPIO, pins and PWM of the SoC.
>
> This whole thing is just about pins.
>
> The MFD portion of this submission doesn't do anything.
>
Hi Lee,
thanks for the review. I think you missed the other series as it was
requested to use MFD implementation due to shared register map.
> Please rework this to omit the MFD driver.
I'm a bit confused by this you mean in the schema? Putting PWM property
in a pinctrl schema looks wrong to me :(
>
> After just a glance, it looks like simple-mfd _might_ work.
Simple-mfd works if register map are well defined and you can have
something like
- parent define the whole register
- child can user reg property to register offset and subsection of the
parent register
Here it's all mixed and scrambled and also it was requested to have a
very simple node that include both pwm and pinctrl property (cause that
is how the HW register block is designed and schema must reflect HW)
Hope you can understand these reasons.
>
> > +properties:
> > + compatible:
> > + const: airoha,en7581-gpio-sysctl
> > +
> > + reg:
> > + maxItems: 1
> > +
> > + interrupts:
> > + maxItems: 1
> > +
> > + gpio-controller: true
> > +
> > + '#gpio-cells':
> > + const: 2
> > +
> > + interrupt-controller: true
> > +
> > + '#interrupt-cells':
> > + const: 2
> > +
> > + "#pwm-cells":
> > + const: 3
> > +
> > + pinctrl:
> > + type: object
> > +
> > + $ref: /schemas/pinctrl/pinctrl.yaml
> > +
> > + patternProperties:
> > + '-pins$':
> > + type: object
> > +
> > + patternProperties:
> > + '^.*mux.*$':
> > + type: object
> > +
> > + description:
> > + pinmux configuration nodes.
> > +
> > + $ref: /schemas/pinctrl/pinmux-node.yaml
> > +
> > + properties:
> > + function:
> > + description:
> > + A string containing the name of the function to mux to the group.
> > + enum: [pon, tod_1pps, sipo, mdio, uart, i2c, jtag, pcm, spi,
> > + pcm_spi, i2s, emmc, pnand, pcie_reset, pwm, phy1_led0,
> > + phy2_led0, phy3_led0, phy4_led0, phy1_led1, phy2_led1,
> > + phy3_led1, phy4_led1]
> > +
> > + groups:
> > + description:
> > + An array of strings. Each string contains the name of a group.
> > +
> > + required:
> > + - function
> > + - groups
> > +
> > + allOf:
> > + - if:
> > + properties:
> > + function:
> > + const: pon
> > + then:
> > + properties:
> > + groups:
> > + enum: [pon]
> > + - if:
> > + properties:
> > + function:
> > + const: tod_1pps
> > + then:
> > + properties:
> > + groups:
> > + enum: [pon_tod_1pps, gsw_tod_1pps]
> > + - if:
> > + properties:
> > + function:
> > + const: sipo
> > + then:
> > + properties:
> > + groups:
> > + enum: [sipo, sipo_rclk]
> > + - if:
> > + properties:
> > + function:
> > + const: mdio
> > + then:
> > + properties:
> > + groups:
> > + enum: [mdio]
> > + - if:
> > + properties:
> > + function:
> > + const: uart
> > + then:
> > + properties:
> > + groups:
> > + items:
> > + enum: [uart2, uart2_cts_rts, hsuart, hsuart_cts_rts, uart4,
> > + uart5]
> > + maxItems: 2
> > + - if:
> > + properties:
> > + function:
> > + const: i2c
> > + then:
> > + properties:
> > + groups:
> > + enum: [i2c1]
> > + - if:
> > + properties:
> > + function:
> > + const: jtag
> > + then:
> > + properties:
> > + groups:
> > + enum: [jtag_udi, jtag_dfd]
> > + - if:
> > + properties:
> > + function:
> > + const: pcm
> > + then:
> > + properties:
> > + groups:
> > + enum: [pcm1, pcm2]
> > + - if:
> > + properties:
> > + function:
> > + const: spi
> > + then:
> > + properties:
> > + groups:
> > + items:
> > + enum: [spi_quad, spi_cs1]
> > + maxItems: 2
> > + - if:
> > + properties:
> > + function:
> > + const: pcm_spi
> > + then:
> > + properties:
> > + groups:
> > + items:
> > + enum: [pcm_spi, pcm_spi_int, pcm_spi_rst, pcm_spi_cs1,
> > + pcm_spi_cs2_p156, pcm_spi_cs2_p128, pcm_spi_cs3,
> > + pcm_spi_cs4]
> > + maxItems: 7
> > + - if:
> > + properties:
> > + function:
> > + const: i2c
> > + then:
> > + properties:
> > + groups:
> > + enum: [i2s]
> > + - if:
> > + properties:
> > + function:
> > + const: emmc
> > + then:
> > + properties:
> > + groups:
> > + enum: [emmc]
> > + - if:
> > + properties:
> > + function:
> > + const: pnand
> > + then:
> > + properties:
> > + groups:
> > + enum: [pnand]
> > + - if:
> > + properties:
> > + function:
> > + const: pcie_reset
> > + then:
> > + properties:
> > + groups:
> > + enum: [pcie_reset0, pcie_reset1, pcie_reset2]
> > + - if:
> > + properties:
> > + function:
> > + const: pwm
> > + then:
> > + properties:
> > + groups:
> > + enum: [gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6,
> > + gpio7, gpio8, gpio9, gpio10, gpio11, gpio12, gpio13,
> > + gpio14, gpio15, gpio16, gpio17, gpio18, gpio19,
> > + gpio20, gpio21, gpio22, gpio23, gpio24, gpio25,
> > + gpio26, gpio27, gpio28, gpio29, gpio30, gpio31,
> > + gpio36, gpio37, gpio38, gpio39, gpio40, gpio41,
> > + gpio42, gpio43, gpio44, gpio45, gpio46, gpio47]
> > + - if:
> > + properties:
> > + function:
> > + const: phy1_led0
> > + then:
> > + properties:
> > + groups:
> > + enum: [gpio33, gpio34, gpio35, gpio42]
> > + - if:
> > + properties:
> > + function:
> > + const: phy2_led0
> > + then:
> > + properties:
> > + groups:
> > + enum: [gpio33, gpio34, gpio35, gpio42]
> > + - if:
> > + properties:
> > + function:
> > + const: phy3_led0
> > + then:
> > + properties:
> > + groups:
> > + enum: [gpio33, gpio34, gpio35, gpio42]
> > + - if:
> > + properties:
> > + function:
> > + const: phy4_led0
> > + then:
> > + properties:
> > + groups:
> > + enum: [gpio33, gpio34, gpio35, gpio42]
> > + - if:
> > + properties:
> > + function:
> > + const: phy1_led1
> > + then:
> > + properties:
> > + groups:
> > + enum: [gpio43, gpio44, gpio45, gpio46]
> > + - if:
> > + properties:
> > + function:
> > + const: phy2_led1
> > + then:
> > + properties:
> > + groups:
> > + enum: [gpio43, gpio44, gpio45, gpio46]
> > + - if:
> > + properties:
> > + function:
> > + const: phy3_led1
> > + then:
> > + properties:
> > + groups:
> > + enum: [gpio43, gpio44, gpio45, gpio46]
> > + - if:
> > + properties:
> > + function:
> > + const: phy4_led1
> > + then:
> > + properties:
> > + groups:
> > + enum: [gpio43, gpio44, gpio45, gpio46]
> > +
> > + additionalProperties: false
> > +
> > + '^.*conf.*$':
> > + type: object
> > +
> > + description:
> > + pinconf configuration nodes.
> > +
> > + $ref: /schemas/pinctrl/pincfg-node.yaml
> > +
> > + properties:
> > + pins:
> > + description:
> > + An array of strings. Each string contains the name of a pin.
> > + items:
> > + enum: [uart1_txd, uart1_rxd, i2c_scl, i2c_sda, spi_cs0, spi_clk,
> > + spi_mosi, spi_miso, gpio0, gpio1, gpio2, gpio3, gpio4,
> > + gpio5, gpio6, gpio7, gpio8, gpio9, gpio10, gpio11, gpio12,
> > + gpio13, gpio14, gpio15, gpio16, gpio17, gpio18, gpio19,
> > + gpio20, gpio21, gpio22, gpio23, gpio24, gpio25, gpio26,
> > + gpio27, gpio28, gpio29, gpio30, gpio31, gpio32, gpio33,
> > + gpio34, gpio35, gpio36, gpio37, gpio38, gpio39, gpio40,
> > + gpio41, gpio42, gpio43, gpio44, gpio45, gpio46,
> > + pcie_reset0, pcie_reset1, pcie_reset2]
> > + minItems: 1
> > + maxItems: 58
> > +
> > + bias-disable: true
> > +
> > + bias-pull-up: true
> > +
> > + bias-pull-down: true
> > +
> > + input-enable: true
> > +
> > + output-enable: true
> > +
> > + output-low: true
> > +
> > + output-high: true
> > +
> > + drive-open-drain: true
> > +
> > + drive-strength:
> > + description:
> > + Selects the drive strength for MIO pins, in mA.
> > + enum: [2, 4, 6, 8]
> > +
> > + required:
> > + - pins
> > +
> > + additionalProperties: false
> > +
> > + additionalProperties: false
> > +
> > + additionalProperties: false
> > +
> > +required:
> > + - compatible
> > + - reg
> > + - interrupts
> > + - gpio-controller
> > + - "#gpio-cells"
> > + - "#pwm-cells"
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
> > + #include <dt-bindings/interrupt-controller/arm-gic.h>
> > +
> > + mfd@1fbf0200 {
> > + compatible = "airoha,en7581-gpio-sysctl";
> > + reg = <0x1fbf0200 0xc0>;
> > +
> > + interrupt-parent = <&gic>;
> > + interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
> > +
> > + gpio-controller;
> > + #gpio-cells = <2>;
> > +
> > + interrupt-controller;
> > + #interrupt-cells = <2>;
> > +
> > + #pwm-cells = <3>;
> > +
> > + pinctrl {
> > + pcie1-rst-pins {
> > + conf {
> > + pins = "pcie_reset1";
> > + drive-open-drain = <1>;
> > + };
> > + };
> > +
> > + pwm-pins {
> > + mux {
> > + function = "pwm";
> > + groups = "gpio18";
> > + };
> > + };
> > +
> > + spi-pins {
> > + mux {
> > + function = "spi";
> > + groups = "spi_quad", "spi_cs1";
> > + };
> > + };
> > +
> > + uart2-pins {
> > + mux {
> > + function = "uart";
> > + groups = "uart2", "uart2_cts_rts";
> > + };
> > + };
> > +
> > + uar5-pins {
> > + mux {
> > + function = "uart";
> > + groups = "uart5";
> > + };
> > + };
> > +
> > + mmc-pins {
> > + mux {
> > + function = "emmc";
> > + groups = "emmc";
> > + };
> > + };
> > +
> > + mdio-pins {
> > + mux {
> > + function = "mdio";
> > + groups = "mdio";
> > + };
> > +
> > + conf {
> > + pins = "gpio2";
> > + output-enable;
> > + };
> > + };
> > +
> > + gswp1-led0-pins {
> > + mux {
> > + function = "phy1_led0";
> > + groups = "gpio33";
> > + };
> > + };
> > +
> > + gswp2-led1-pins {
> > + mux {
> > + function = "phy2_led1";
> > + groups = "gpio44";
> > + };
> > + };
> > + };
> > + };
> > +
> > +...
> >
> > --
> > 2.46.0
> >
>
> --
> Lee Jones [李琼斯]
--
Ansuel
next prev parent reply other threads:[~2024-09-03 15:43 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-31 14:27 [PATCH v3 0/5] Add mfd, pinctrl and pwm support to EN7581 SoC Lorenzo Bianconi
2024-08-31 14:27 ` [PATCH v3 1/5] dt-bindings: arm: airoha: Add the chip-scu node for " Lorenzo Bianconi
2024-09-03 15:05 ` Rob Herring (Arm)
2024-08-31 14:27 ` [PATCH v3 2/5] dt-bindings: mfd: Add support for Airoha EN7581 GPIO System Controller Lorenzo Bianconi
2024-09-03 15:09 ` Rob Herring
2024-09-03 15:33 ` Lee Jones
2024-09-03 14:00 ` Christian Marangi [this message]
2024-09-03 16:42 ` Lee Jones
2024-09-04 11:06 ` Christian Marangi
2024-08-31 14:27 ` [PATCH v3 3/5] mfd: airoha: Add support for Airoha EN7581 MFD Lorenzo Bianconi
2024-08-31 14:27 ` [PATCH v3 4/5] pinctrl: airoha: Add support for EN7581 SoC Lorenzo Bianconi
2024-08-31 17:35 ` kernel test robot
2024-09-01 12:46 ` kernel test robot
2024-09-01 13:28 ` kernel test robot
2024-08-31 14:27 ` [PATCH v3 5/5] pwm: " Lorenzo Bianconi
2024-09-03 10:46 ` Uwe Kleine-König
2024-09-03 11:58 ` Benjamin Larsson
2024-09-03 15:47 ` Uwe Kleine-König
2024-09-04 23:09 ` Benjamin Larsson
2024-09-05 9:30 ` Uwe Kleine-König
2024-09-05 12:18 ` Benjamin Larsson
2024-09-05 15:39 ` Uwe Kleine-König
2024-09-05 18:35 ` Benjamin Larsson
2024-09-06 8:01 ` Uwe Kleine-König
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=66d72ea9.df0a0220.21f5f.029f@mx.google.com \
--to=ansuelsmth@gmail.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=benjamin.larsson@genexis.eu \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=lee@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-pwm@vger.kernel.org \
--cc=lorenzo@kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=robh@kernel.org \
--cc=sean.wang@kernel.org \
--cc=ukleinek@kernel.org \
--cc=upstream@airoha.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox