diff mbox series

[v2,1/2] dt-bindings: net: Add bindings for LiteETH

Message ID 20210820074726.2860425-2-joel@jms.id.au
State New
Headers show
Series net: Add LiteETH network driver | expand

Commit Message

Joel Stanley Aug. 20, 2021, 7:47 a.m. UTC
LiteETH is a small footprint and configurable Ethernet core for FPGA
based system on chips.

Signed-off-by: Joel Stanley <joel@jms.id.au>

---
v2:
 - Fix dtschema check warning relating to registers
 - Add names to the registers to make it easier to distinguish which is
   what region
 - Add mdio description
 - Includ ethernet-controller parent description

 .../bindings/net/litex,liteeth.yaml           | 79 +++++++++++++++++++
 1 file changed, 79 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/litex,liteeth.yaml

-- 
2.32.0

Comments

Andrew Lunn Aug. 20, 2021, 5:41 p.m. UTC | #1
On Fri, Aug 20, 2021 at 05:17:25PM +0930, Joel Stanley wrote:
> LiteETH is a small footprint and configurable Ethernet core for FPGA

> based system on chips.


Hi Joel

Just an FYI.

DT is considered ABI. Once released, you should not be making changes
which are not backwards compatible.

All the PHY and MDIO properties you are adding here are unused in the
driver. They all look sensible, and you should be able to make it
work. But when you do come to make that implementation, this
definition is the base of what you have to work with.

	   Andrew
Rob Herring (Arm) Aug. 23, 2021, 6:44 p.m. UTC | #2
On Fri, Aug 20, 2021 at 05:17:25PM +0930, Joel Stanley wrote:
> LiteETH is a small footprint and configurable Ethernet core for FPGA

> based system on chips.

> 

> Signed-off-by: Joel Stanley <joel@jms.id.au>

> ---

> v2:

>  - Fix dtschema check warning relating to registers

>  - Add names to the registers to make it easier to distinguish which is

>    what region

>  - Add mdio description

>  - Includ ethernet-controller parent description

> 

>  .../bindings/net/litex,liteeth.yaml           | 79 +++++++++++++++++++

>  1 file changed, 79 insertions(+)

>  create mode 100644 Documentation/devicetree/bindings/net/litex,liteeth.yaml

> 

> diff --git a/Documentation/devicetree/bindings/net/litex,liteeth.yaml b/Documentation/devicetree/bindings/net/litex,liteeth.yaml

> new file mode 100644

> index 000000000000..30f8f8b0b657

> --- /dev/null

> +++ b/Documentation/devicetree/bindings/net/litex,liteeth.yaml

> @@ -0,0 +1,79 @@

> +# SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause

> +%YAML 1.2

> +---

> +$id: http://devicetree.org/schemas/net/litex,liteeth.yaml#

> +$schema: http://devicetree.org/meta-schemas/core.yaml#

> +

> +title: LiteX LiteETH ethernet device

> +

> +maintainers:

> +  - Joel Stanley <joel@jms.id.au>

> +

> +description: |

> +  LiteETH is a small footprint and configurable Ethernet core for FPGA based

> +  system on chips.

> +

> +  The hardware source is Open Source and can be found on at

> +  https://github.com/enjoy-digital/liteeth/.

> +

> +allOf:

> +  - $ref: ethernet-controller.yaml#

> +

> +properties:

> +  compatible:

> +    const: litex,liteeth

> +

> +  reg:

> +    minItems: 3

> +    items:

> +      - description: MAC registers

> +      - description: MDIO registers

> +      - description: Packet buffer

> +

> +  reg-names:

> +    minItems: 3


Need to define the names here.

> +

> +  interrupts:

> +    maxItems: 1

> +


> +  rx-fifo-depth: true

> +  tx-fifo-depth: true


Needs a vendor prefix, type, description and constraints.

> +  mac-address: true

> +  local-mac-address: true

> +  phy-handle: true

> +

> +  mdio:

> +    $ref: mdio.yaml#

> +

> +required:

> +  - compatible

> +  - reg

> +  - interrupts

> +

> +additionalProperties: false

> +

> +examples:

> +  - |

> +    mac: ethernet@8020000 {

> +        compatible = "litex,liteeth";

> +        reg = <0x8021000 0x100>,

> +              <0x8020800 0x100>,

> +              <0x8030000 0x2000>;

> +        reg-names = "mac", "mdio", "buffer";

> +        rx-fifo-depth = <1024>;

> +        tx-fifo-depth = <1024>;

> +        interrupts = <0x11 0x1>;

> +        phy-handle = <&eth_phy>;

> +

> +        mdio {

> +          #address-cells = <1>;

> +          #size-cells = <0>;

> +

> +          eth_phy: ethernet-phy@0 {

> +            reg = <0>;

> +          };

> +        };

> +    };

> +...

> +

> +#  vim: set ts=2 sw=2 sts=2 tw=80 et cc=80 ft=yaml :

> -- 

> 2.32.0

> 

>
Joel Stanley Aug. 24, 2021, 3:51 a.m. UTC | #3
On Mon, 23 Aug 2021 at 18:44, Rob Herring <robh@kernel.org> wrote:
>

> On Fri, Aug 20, 2021 at 05:17:25PM +0930, Joel Stanley wrote:


> > +

> > +  interrupts:

> > +    maxItems: 1

> > +

>

> > +  rx-fifo-depth: true

> > +  tx-fifo-depth: true

>

> Needs a vendor prefix, type, description and constraints.


These are the standard properties from the ethernet-controller.yaml. I
switched the driver to using those once I discovered they existed (v1
defined these in terms of slots, whereas the ethernet-controller
bindings use bytes).

Cheers,

Joel
Rob Herring (Arm) Aug. 24, 2021, 11:52 a.m. UTC | #4
On Mon, Aug 23, 2021 at 10:52 PM Joel Stanley <joel@jms.id.au> wrote:
>

> On Mon, 23 Aug 2021 at 18:44, Rob Herring <robh@kernel.org> wrote:

> >

> > On Fri, Aug 20, 2021 at 05:17:25PM +0930, Joel Stanley wrote:

>

> > > +

> > > +  interrupts:

> > > +    maxItems: 1

> > > +

> >

> > > +  rx-fifo-depth: true

> > > +  tx-fifo-depth: true

> >

> > Needs a vendor prefix, type, description and constraints.

>

> These are the standard properties from the ethernet-controller.yaml. I

> switched the driver to using those once I discovered they existed (v1

> defined these in terms of slots, whereas the ethernet-controller

> bindings use bytes).


Indeed (grepping the wrong repo didn't work too well :) ).

Still, I'd assume there's some valid range for this h/w you can
define? Or 0 - 2^32 is valid?

Rob
Joel Stanley Aug. 25, 2021, 3 a.m. UTC | #5
On Tue, 24 Aug 2021 at 11:52, Rob Herring <robh@kernel.org> wrote:
>

> On Mon, Aug 23, 2021 at 10:52 PM Joel Stanley <joel@jms.id.au> wrote:

> >

> > On Mon, 23 Aug 2021 at 18:44, Rob Herring <robh@kernel.org> wrote:

> > >

> > > On Fri, Aug 20, 2021 at 05:17:25PM +0930, Joel Stanley wrote:

> >

> > > > +

> > > > +  interrupts:

> > > > +    maxItems: 1

> > > > +

> > >

> > > > +  rx-fifo-depth: true

> > > > +  tx-fifo-depth: true

> > >

> > > Needs a vendor prefix, type, description and constraints.

> >

> > These are the standard properties from the ethernet-controller.yaml. I

> > switched the driver to using those once I discovered they existed (v1

> > defined these in terms of slots, whereas the ethernet-controller

> > bindings use bytes).

>

> Indeed (grepping the wrong repo didn't work too well :) ).

>

> Still, I'd assume there's some valid range for this h/w you can

> define? Or 0 - 2^32 is valid?


0 would be problematic, but there's not really any bound on it.

I'll send a v3 with the reg-names documented. Thanks for the review.

Cheers,

Joel
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/net/litex,liteeth.yaml b/Documentation/devicetree/bindings/net/litex,liteeth.yaml
new file mode 100644
index 000000000000..30f8f8b0b657
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/litex,liteeth.yaml
@@ -0,0 +1,79 @@ 
+# SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/litex,liteeth.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: LiteX LiteETH ethernet device
+
+maintainers:
+  - Joel Stanley <joel@jms.id.au>
+
+description: |
+  LiteETH is a small footprint and configurable Ethernet core for FPGA based
+  system on chips.
+
+  The hardware source is Open Source and can be found on at
+  https://github.com/enjoy-digital/liteeth/.
+
+allOf:
+  - $ref: ethernet-controller.yaml#
+
+properties:
+  compatible:
+    const: litex,liteeth
+
+  reg:
+    minItems: 3
+    items:
+      - description: MAC registers
+      - description: MDIO registers
+      - description: Packet buffer
+
+  reg-names:
+    minItems: 3
+
+  interrupts:
+    maxItems: 1
+
+  rx-fifo-depth: true
+  tx-fifo-depth: true
+  mac-address: true
+  local-mac-address: true
+  phy-handle: true
+
+  mdio:
+    $ref: mdio.yaml#
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    mac: ethernet@8020000 {
+        compatible = "litex,liteeth";
+        reg = <0x8021000 0x100>,
+              <0x8020800 0x100>,
+              <0x8030000 0x2000>;
+        reg-names = "mac", "mdio", "buffer";
+        rx-fifo-depth = <1024>;
+        tx-fifo-depth = <1024>;
+        interrupts = <0x11 0x1>;
+        phy-handle = <&eth_phy>;
+
+        mdio {
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          eth_phy: ethernet-phy@0 {
+            reg = <0>;
+          };
+        };
+    };
+...
+
+#  vim: set ts=2 sw=2 sts=2 tw=80 et cc=80 ft=yaml :