From: Nick Hawkins <nick.hawkins@hpe.com>
Provide access to the register regions and interrupt for Universal
MAC(UMAC). The driver under the hpe,gxp-umac binding will provide an
interface for sending and receiving networking data from both of the
UMACs on the system.
Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
---
.../devicetree/bindings/net/hpe,gxp-umac.yaml | 111 ++++++++++++++++++
1 file changed, 111 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/hpe,gxp-umac.yaml
diff --git a/Documentation/devicetree/bindings/net/hpe,gxp-umac.yaml b/Documentation/devicetree/bindings/net/hpe,gxp-umac.yaml
new file mode 100644
index 000000000000..c3b68c4ba7f2
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/hpe,gxp-umac.yaml
@@ -0,0 +1,111 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/hpe,gxp-umac.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: HPE GXP Unified MAC Controller
+
+maintainers:
+ - Nick Hawkins <nick.hawkins@hpe.com>
+
+description: |
+ HPE GXP 802.3 10/100/1000T Ethernet Unifed MAC controller.
+ Device node of the controller has following properties.
+
+properties:
+ compatible:
+ const: hpe,gxp-umac
+
+ use-ncsi:
+ type: boolean
+ description: |
+ Indicates if the device should use NCSI (Network Controlled
+ Sideband Interface).
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ mac-address: true
+
+ ethernet-ports:
+ type: object
+ additionalProperties: false
+ description: Ethernet ports to PHY
+
+ properties:
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+ patternProperties:
+ "^port@[0-1]$":
+ type: object
+ additionalProperties: false
+ description: Port to PHY
+
+ properties:
+ reg:
+ minimum: 0
+ maximum: 1
+
+ phy-handle:
+ maxItems: 1
+
+ required:
+ - reg
+ - phy-handle
+
+ mdio:
+ $ref: mdio.yaml#
+ unevaluatedProperties: false
+
+additionalProperties: false
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - ethernet-ports
+
+examples:
+ - |
+ ethernet@4000 {
+ compatible = "hpe,gxp-umac";
+ reg = <0x4000 0x80>;
+ interrupts = <22>;
+ mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */
+ ethernet-ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ phy-handle = <ð_phy0>;
+ };
+
+ port@1 {
+ reg = <1>;
+ phy-handle = <ð_phy1>;
+ };
+ };
+
+ mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ eth_phy0: ethernet-phy@0 {
+ reg = <0>;
+ };
+
+ eth_phy1: ethernet-phy@1 {
+ reg = <1>;
+ };
+ };
+ };
+...
--
2.17.1
On Fri, Jul 21, 2023 at 04:20:42PM -0500, nick.hawkins@hpe.com wrote:
> From: Nick Hawkins <nick.hawkins@hpe.com>
>
> Provide access to the register regions and interrupt for Universal
> MAC(UMAC). The driver under the hpe,gxp-umac binding will provide an
> interface for sending and receiving networking data from both of the
> UMACs on the system.
>
> Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
> ---
> .../devicetree/bindings/net/hpe,gxp-umac.yaml | 111 ++++++++++++++++++
> 1 file changed, 111 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/net/hpe,gxp-umac.yaml
>
> diff --git a/Documentation/devicetree/bindings/net/hpe,gxp-umac.yaml b/Documentation/devicetree/bindings/net/hpe,gxp-umac.yaml
> new file mode 100644
> index 000000000000..c3b68c4ba7f2
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/hpe,gxp-umac.yaml
> @@ -0,0 +1,111 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/net/hpe,gxp-umac.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: HPE GXP Unified MAC Controller
> +
> +maintainers:
> + - Nick Hawkins <nick.hawkins@hpe.com>
> +
> +description: |
Don't need '|' if no formatting to maintain. Here and elsewhere.
> + HPE GXP 802.3 10/100/1000T Ethernet Unifed MAC controller.
> + Device node of the controller has following properties.
> +
> +properties:
> + compatible:
> + const: hpe,gxp-umac
> +
> + use-ncsi:
> + type: boolean
> + description: |
> + Indicates if the device should use NCSI (Network Controlled
> + Sideband Interface).
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + mac-address: true
> +
> + ethernet-ports:
> + type: object
> + additionalProperties: false
> + description: Ethernet ports to PHY
> +
> + properties:
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 0
> +
> + patternProperties:
> + "^port@[0-1]$":
> + type: object
> + additionalProperties: false
> + description: Port to PHY
> +
> + properties:
> + reg:
> + minimum: 0
> + maximum: 1
> +
> + phy-handle:
> + maxItems: 1
> +
> + required:
> + - reg
> + - phy-handle
> +
> + mdio:
> + $ref: mdio.yaml#
> + unevaluatedProperties: false
> +
> +additionalProperties: false
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - ethernet-ports
> +
> +examples:
> + - |
> + ethernet@4000 {
> + compatible = "hpe,gxp-umac";
> + reg = <0x4000 0x80>;
> + interrupts = <22>;
> + mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */
> + ethernet-ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> + phy-handle = <ð_phy0>;
> + };
> +
> + port@1 {
> + reg = <1>;
> + phy-handle = <ð_phy1>;
> + };
> + };
> +
> + mdio {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + eth_phy0: ethernet-phy@0 {
> + reg = <0>;
> + };
> +
> + eth_phy1: ethernet-phy@1 {
> + reg = <1>;
> + };
> + };
> + };
> +...
> --
> 2.17.1
>
> +examples:
> + - |
> + ethernet@4000 {
> + compatible = "hpe,gxp-umac";
> + reg = <0x4000 0x80>;
> + interrupts = <22>;
> + mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */
Do both ports get the sane MAC address?
> + ethernet-ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> + phy-handle = <ð_phy0>;
> + };
> +
> + port@1 {
> + reg = <1>;
> + phy-handle = <ð_phy1>;
> + };
> + };
> +
> + mdio {
This seems to be wrong. You have a standalone MDIO bus driver, not
part of the MAC address space?
Andrew
Hi Andrew,
Thank you for the feedback.
> > +examples:
> > + - |
> > + ethernet@4000 {
> > + compatible = "hpe,gxp-umac";
> > + reg = <0x4000 0x80>;
> > + interrupts = <22>;
> > + mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */
> Do both ports get the sane MAC address?
No they do not. The first one will get the MAC address, the second
will be an external phy we are managing via the MDIO path.
> > + ethernet-ports {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + port@0 {
> > + reg = <0>;
> > + phy-handle = <ð_phy0>;
> > + };
> > +
> > + port@1 {
> > + reg = <1>;
> > + phy-handle = <ð_phy1>;
> > + };
> > + };
> > +
> > + mdio {
> This seems to be wrong. You have a standalone MDIO bus driver, not
> part of the MAC address space?
I based this from other yaml examples I found. Is there a better way to
represent it?
Here is what I plan on having the dts/dtsi
look like:
mdio0: mdio@4080 {
compatible = "hpe,gxp-umac-mdio";
reg = <0x4080 0x10>;
#address-cells = <1>;
#size-cells = <0>;
ext_phy0: ethernt-phy@0 {
compatible = "marvell,88e1415","ethernet-phy-ieee802.3-c22";
phy-mode = "sgmii";
reg = <0>;
};
};
mdio1: mdio@5080 {
compatible = "hpe,gxp-umac-mdio";
reg = <0x5080 0x10>;
#address-cells = <1>;
#size-cells = <0>;
int_phy0: ethernt-phy@0 {
compatible = "ethernet-phy-ieee802.3-c22";
phy-mode = "gmii";
reg = <0>;
};
int_phy1: ethernt-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
phy-mode = "gmii";
reg = <1>;
};
};
umac0: ethernet@4000 {
compatible = "hpe,gxp-umac";
reg = <0x4000 0x80>;
interrupts = <10>;
interrupt-parent = <&vic0>;
mac-address = [00 00 00 00 00 00];
ethernet-ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
phy-handle = <&int_phy0>;
};
port@1 {
reg = <1>;
phy-handle = <&ext_phy0>;
};
};
};
Thank you for the help and assistance.
-Nick Hawkins
On Tue, Jul 25, 2023 at 01:44:30PM +0000, Hawkins, Nick wrote:
> Hi Andrew,
>
> Thank you for the feedback.
>
> > > +examples:
> > > + - |
> > > + ethernet@4000 {
> > > + compatible = "hpe,gxp-umac";
> > > + reg = <0x4000 0x80>;
> > > + interrupts = <22>;
> > > + mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */
>
> > Do both ports get the sane MAC address?
>
> No they do not. The first one will get the MAC address, the second
> will be an external phy we are managing via the MDIO path.
Then please put the mac-address property in the correct place, inside
port@0.
> > > + ethernet-ports {
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + port@0 {
> > > + reg = <0>;
> > > + phy-handle = <ð_phy0>;
> > > + };
> > > + mdio {
>
> > This seems to be wrong. You have a standalone MDIO bus driver, not
> > part of the MAC address space?
>
> I based this from other yaml examples I found. Is there a better way to
> represent it?
The validator when given examples does not validate phy-handle
actually points to a known node. So you can just leave the mdio bus
out all together.
> mdio0: mdio@4080 {
> compatible = "hpe,gxp-umac-mdio";
> reg = <0x4080 0x10>;
> #address-cells = <1>;
> #size-cells = <0>;
> ext_phy0: ethernt-phy@0 {
> compatible = "marvell,88e1415","ethernet-phy-ieee802.3-c22";
which is wrong. Please read the binding document for PHYs.
Andrew
© 2016 - 2026 Red Hat, Inc.