arm64: dts: ls1028a: sl28: get MAC addresses from VPD
authorMichael Walle <mwalle@kernel.org>
Fri, 16 Jun 2023 11:11:22 +0000 (13:11 +0200)
committerShawn Guo <shawnguo@kernel.org>
Tue, 18 Jul 2023 01:58:28 +0000 (09:58 +0800)
Now that it is finally possible to get the MAC addresses from the OTP
memory, use it to set the addresses of the network devices.

There are 8 reserved MAC addresses in total per board. Distribute them
as follows:

+----------+------+------+------+------+------+
|          | var1 | var2 | var3 | var4 | kbox |
+----------+------+------+------+------+------+
| enetc #0 |   +0 |      |      |   +0 |   +0 |
| enetc #1 |      |      |   +0 |   +1 |   +1 |
| enetc #2 |      |   +2 |      |      |   +2 |
| enetc #3 |      |   +3 |      |      |   +3 |
| felix p0 |      |   +0 |      |      |   +4 |
| felix p1 |      |   +1 |      |      |   +5 |
| felix p2 |      |      |      |      |   +6 |
| felix p3 |      |      |      |      |   +7 |
| felix p4 |      |      |      |      |      |
| felix p5 |      |      |      |      |      |
+----------+------+------+------+------+------+

An empty cell means, the port is not available and thus doesn't need an
ethernet address.

Signed-off-by: Michael Walle <mwalle@kernel.org>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-kbox-a-230-ls.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var1.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var2.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var4.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts

index 73eb606..af9194e 100644 (file)
 };
 
 &enetc_port2 {
+       nvmem-cells = <&base_mac_address 2>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
 &enetc_port3 {
+       nvmem-cells = <&base_mac_address 3>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
@@ -80,6 +84,8 @@
        managed = "in-band-status";
        phy-handle = <&qsgmii_phy0>;
        phy-mode = "qsgmii";
+       nvmem-cells = <&base_mac_address 4>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
@@ -88,6 +94,8 @@
        managed = "in-band-status";
        phy-handle = <&qsgmii_phy1>;
        phy-mode = "qsgmii";
+       nvmem-cells = <&base_mac_address 5>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
        managed = "in-band-status";
        phy-handle = <&qsgmii_phy2>;
        phy-mode = "qsgmii";
+       nvmem-cells = <&base_mac_address 6>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
        managed = "in-band-status";
        phy-handle = <&qsgmii_phy3>;
        phy-mode = "qsgmii";
+       nvmem-cells = <&base_mac_address 7>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
index 7cd29ab..1f34c75 100644 (file)
@@ -55,5 +55,7 @@
 &enetc_port1 {
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       nvmem-cells = <&base_mac_address 0>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
index 113b1df..aac4119 100644 (file)
 };
 
 &enetc_port2 {
+       nvmem-cells = <&base_mac_address 2>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
 &enetc_port3 {
+       nvmem-cells = <&base_mac_address 3>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
@@ -52,6 +56,8 @@
        managed = "in-band-status";
        phy-handle = <&phy0>;
        phy-mode = "sgmii";
+       nvmem-cells = <&base_mac_address 0>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
@@ -60,6 +66,8 @@
        managed = "in-band-status";
        phy-handle = <&phy1>;
        phy-mode = "sgmii";
+       nvmem-cells = <&base_mac_address 1>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
index 9b5e92f..a4421db 100644 (file)
@@ -43,5 +43,7 @@
 &enetc_port1 {
        phy-handle = <&phy1>;
        phy-mode = "rgmii-id";
+       nvmem-cells = <&base_mac_address 1>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
index 4ab17b9..8b65af4 100644 (file)
@@ -92,6 +92,8 @@
        phy-handle = <&phy0>;
        phy-mode = "sgmii";
        managed = "in-band-status";
+       nvmem-cells = <&base_mac_address 0>;
+       nvmem-cell-names = "mac-address";
        status = "okay";
 };
 
                                label = "bootloader environment";
                        };
                };
+
+               otp-1 {
+                       compatible = "user-otp";
+
+                       nvmem-layout {
+                               compatible = "kontron,sl28-vpd";
+
+                               serial_number: serial-number {
+                               };
+
+                               base_mac_address: base-mac-address {
+                                       #nvmem-cell-cells = <1>;
+                               };
+                       };
+               };
        };
 };