diff mbox series

[01/16] dt-bindings: net: dwmac: Add DW GMAC GPIOs properties

Message ID 20210208140820.10410-2-Sergey.Semin@baikalelectronics.ru
State Changes Requested, archived
Headers show
Series net: stmmac: Add DW MAC GPIOs and Baikal-T1 GMAC support | expand

Checks

Context Check Description
robh/checkpatch success
robh/dt-meta-schema success
robh/dtbs-check fail build log

Commit Message

Serge Semin Feb. 8, 2021, 2:08 p.m. UTC
Synopsys DesignWare Ethernet controllers can be synthesized with
General-Purpose IOs support. GPIOs can work either as inputs or as outputs
thus belong to the gpi_i and gpo_o ports respectively. The ports width
(number of possible inputs/outputs) and the configuration registers layout
depend on the IP-core version. For instance, DW GMAC can have from 0 to 4
GPIs and from 0 to 4 GPOs, while DW xGMAC have a wider ports width up to
16 pins of each one.

So the DW MAC DT-node can be equipped with "ngpios" property, which can't
have a value greater than 32, standard GPIO-related properties like
"gpio-controller" and "#gpio-cells", and, if GPIs are supposed to be
detected, IRQ-controller related properties.

Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
---
 .../devicetree/bindings/net/snps,dwmac.yaml     | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Rob Herring (Arm) Feb. 9, 2021, 11:13 p.m. UTC | #1
On Mon, Feb 08, 2021 at 05:08:05PM +0300, Serge Semin wrote:
> Synopsys DesignWare Ethernet controllers can be synthesized with
> General-Purpose IOs support. GPIOs can work either as inputs or as outputs
> thus belong to the gpi_i and gpo_o ports respectively. The ports width
> (number of possible inputs/outputs) and the configuration registers layout
> depend on the IP-core version. For instance, DW GMAC can have from 0 to 4
> GPIs and from 0 to 4 GPOs, while DW xGMAC have a wider ports width up to
> 16 pins of each one.
> 
> So the DW MAC DT-node can be equipped with "ngpios" property, which can't
> have a value greater than 32, standard GPIO-related properties like
> "gpio-controller" and "#gpio-cells", and, if GPIs are supposed to be
> detected, IRQ-controller related properties.
> 
> Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
> ---
>  .../devicetree/bindings/net/snps,dwmac.yaml     | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> index bdc437b14878..fcca23d3727e 100644
> --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> @@ -110,6 +110,23 @@ properties:
>    reset-names:
>      const: stmmaceth
>  
> +  ngpios:
> +    description:
> +      Total number of GPIOs the MAC supports. The property shall include both
> +      the GPI and GPO ports width.
> +    minimum: 1
> +    maximum: 32

Does the driver actually need this? I'd omit it if just to validate 
consumers are in range.

Are GPI and GPO counts independent? If so, this isn't really sufficient.

Rob
Serge Semin Feb. 10, 2021, 10:28 p.m. UTC | #2
On Tue, Feb 09, 2021 at 05:13:52PM -0600, Rob Herring wrote:
> On Mon, Feb 08, 2021 at 05:08:05PM +0300, Serge Semin wrote:
> > Synopsys DesignWare Ethernet controllers can be synthesized with
> > General-Purpose IOs support. GPIOs can work either as inputs or as outputs
> > thus belong to the gpi_i and gpo_o ports respectively. The ports width
> > (number of possible inputs/outputs) and the configuration registers layout
> > depend on the IP-core version. For instance, DW GMAC can have from 0 to 4
> > GPIs and from 0 to 4 GPOs, while DW xGMAC have a wider ports width up to
> > 16 pins of each one.
> > 
> > So the DW MAC DT-node can be equipped with "ngpios" property, which can't
> > have a value greater than 32, standard GPIO-related properties like
> > "gpio-controller" and "#gpio-cells", and, if GPIs are supposed to be
> > detected, IRQ-controller related properties.
> > 
> > Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
> > ---
> >  .../devicetree/bindings/net/snps,dwmac.yaml     | 17 +++++++++++++++++
> >  1 file changed, 17 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> > index bdc437b14878..fcca23d3727e 100644
> > --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> > +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> > @@ -110,6 +110,23 @@ properties:
> >    reset-names:
> >      const: stmmaceth
> >  
> > +  ngpios:
> > +    description:
> > +      Total number of GPIOs the MAC supports. The property shall include both
> > +      the GPI and GPO ports width.
> > +    minimum: 1
> > +    maximum: 32
> 

> Does the driver actually need this? I'd omit it if just to validate 
> consumers are in range.

I can't say for all possible DW MAC IP-cores (I've got manuals for
GMAC and xGMAC only), but at least DW GMAC can't have more than four
GPIs and four GPOs, while XGMACs can be synthesized with up to 16
each. That's why I've set the upper boundary here as 32. But the
driver uses the ngpios property do determine the total number GPIOs
the core has been synthesized. Th number of GPIs and GPOs will be
auto-detected then (by writing-reading to-from the GPI type field of
the GPIO control register).

> 
> Are GPI and GPO counts independent? If so, this isn't really sufficient.

Yeap, they are independent. What do you suggest then? Define some
vendor-specific properties like snps,ngpis and snps,ngpos? If so then
they seem more generic than vendor-specific, because the separated
GPI and GPO space isn't an unique feature of the DW MAC GPIOs. Do we
need to create a generic version of such properties then? (That much
more changes then introduced here. We'd need to fix the dt-schema tool
too then.)

-Sergey

> 
> Rob
Serge Semin Feb. 18, 2021, 3:52 p.m. UTC | #3
On Thu, Feb 11, 2021 at 01:28:06AM +0300, Serge Semin wrote:
> On Tue, Feb 09, 2021 at 05:13:52PM -0600, Rob Herring wrote:
> > On Mon, Feb 08, 2021 at 05:08:05PM +0300, Serge Semin wrote:
> > > Synopsys DesignWare Ethernet controllers can be synthesized with
> > > General-Purpose IOs support. GPIOs can work either as inputs or as outputs
> > > thus belong to the gpi_i and gpo_o ports respectively. The ports width
> > > (number of possible inputs/outputs) and the configuration registers layout
> > > depend on the IP-core version. For instance, DW GMAC can have from 0 to 4
> > > GPIs and from 0 to 4 GPOs, while DW xGMAC have a wider ports width up to
> > > 16 pins of each one.
> > > 
> > > So the DW MAC DT-node can be equipped with "ngpios" property, which can't
> > > have a value greater than 32, standard GPIO-related properties like
> > > "gpio-controller" and "#gpio-cells", and, if GPIs are supposed to be
> > > detected, IRQ-controller related properties.
> > > 
> > > Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
> > > ---
> > >  .../devicetree/bindings/net/snps,dwmac.yaml     | 17 +++++++++++++++++
> > >  1 file changed, 17 insertions(+)
> > > 
> > > diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> > > index bdc437b14878..fcca23d3727e 100644
> > > --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> > > +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> > > @@ -110,6 +110,23 @@ properties:
> > >    reset-names:
> > >      const: stmmaceth
> > >  
> > > +  ngpios:
> > > +    description:
> > > +      Total number of GPIOs the MAC supports. The property shall include both
> > > +      the GPI and GPO ports width.
> > > +    minimum: 1
> > > +    maximum: 32
> > 
> 

> > Does the driver actually need this? I'd omit it if just to validate 
> > consumers are in range.
> 
> I can't say for all possible DW MAC IP-cores (I've got manuals for
> GMAC and xGMAC only), but at least DW GMAC can't have more than four
> GPIs and four GPOs, while XGMACs can be synthesized with up to 16
> each. That's why I've set the upper boundary here as 32. But the
> driver uses the ngpios property do determine the total number GPIOs
> the core has been synthesized. Th number of GPIs and GPOs will be
> auto-detected then (by writing-reading to-from the GPI type field of
> the GPIO control register).
> 
> > 
> > Are GPI and GPO counts independent? If so, this isn't really sufficient.
> 
> Yeap, they are independent. What do you suggest then? Define some
> vendor-specific properties like snps,ngpis and snps,ngpos? If so then
> they seem more generic than vendor-specific, because the separated
> GPI and GPO space isn't an unique feature of the DW MAC GPIOs. Do we
> need to create a generic version of such properties then? (That much
> more changes then introduced here. We'd need to fix the dt-schema tool
> too then.)
> 
> -Sergey

Rob, any comment on my questions above? As the kernel is in
merge-window now, I just hope this part won't get pushed back in the
emails log out of your sight.

-Sergey

> 
> > 
> > Rob
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
index bdc437b14878..fcca23d3727e 100644
--- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml
+++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
@@ -110,6 +110,23 @@  properties:
   reset-names:
     const: stmmaceth
 
+  ngpios:
+    description:
+      Total number of GPIOs the MAC supports. The property shall include both
+      the GPI and GPO ports width.
+    minimum: 1
+    maximum: 32
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 2
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 2
+
   mac-mode:
     $ref: ethernet-controller.yaml#/properties/phy-connection-type
     description: