treewide: convert mtd-mac-address-increment* to generic implementation

Rework patch 681-NET-add-mtd-mac-address-support to implement
only the function to read the mac-address from mtd.
Generalize mtd-mac-address-increment function so it can be applied
to any source of of_get_mac_address.
Rename any mtd-mac-address-increment to mac-address-increment.
Rename any mtd-mac-address-increment-byte to mac-address-increment-byte.

This should make simplify the conversion of target to nvmem implementation.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
This commit is contained in:
Ansuel Smith 2021-07-12 21:42:41 +02:00 committed by Petr Štetiar
parent 985954ccbd
commit d284e6ef0f
158 changed files with 507 additions and 242 deletions

View File

@ -104,7 +104,7 @@
ath9k0: wifi@0,11 { /* 2.4 GHz */ ath9k0: wifi@0,11 { /* 2.4 GHz */
compatible = "pci168c,0029"; compatible = "pci168c,0029";
mtd-mac-address = <&hwinfo 0x1c>; mtd-mac-address = <&hwinfo 0x1c>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
reg = <0x8800 0 0 0 0>; reg = <0x8800 0 0 0 0>;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;
@ -113,7 +113,7 @@
ath9k1: wifi@0,12 { /* 5 GHz */ ath9k1: wifi@0,12 { /* 5 GHz */
compatible = "pci168c,0029"; compatible = "pci168c,0029";
mtd-mac-address = <&hwinfo 0x1c>; mtd-mac-address = <&hwinfo 0x1c>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
reg = <0x9000 0 0 0 0>; reg = <0x9000 0 0 0 0>;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;

View File

@ -259,7 +259,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&art 0x520c>; mtd-mac-address = <&art 0x520c>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
phy-handle = <&phy4>; phy-handle = <&phy4>;
}; };

View File

@ -82,7 +82,7 @@
reg = <0x8800 0 0 0 0>; reg = <0x8800 0 0 0 0>;
qca,no-eeprom; qca,no-eeprom;
mtd-mac-address = <&config 0x66>; mtd-mac-address = <&config 0x66>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;
}; };
@ -92,7 +92,7 @@
reg = <0x9000 0 0 0 0>; reg = <0x9000 0 0 0 0>;
qca,no-eeprom; qca,no-eeprom;
mtd-mac-address = <&config 0x66>; mtd-mac-address = <&config 0x66>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;
}; };

View File

@ -160,7 +160,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&art 0x120c>; mtd-mac-address = <&art 0x120c>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&pcie { &pcie {

View File

@ -190,7 +190,7 @@
compatible = "pci168c,002b"; compatible = "pci168c,002b";
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
qca,no-eeprom; qca,no-eeprom;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;

View File

@ -123,7 +123,7 @@
compatible = "pci168c,002b"; compatible = "pci168c,002b";
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
qca,no-eeprom; qca,no-eeprom;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;

View File

@ -31,12 +31,12 @@
&eth0 { &eth0 {
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&eth1 { &eth1 {
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&ath9k { &ath9k {

View File

@ -195,7 +195,7 @@
compatible = "pci168c,002e"; compatible = "pci168c,002e";
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
qca,no-eeprom; qca,no-eeprom;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;

View File

@ -171,7 +171,7 @@
compatible = "pci168c,002e"; compatible = "pci168c,002e";
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
qca,no-eeprom; qca,no-eeprom;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;

View File

@ -97,10 +97,10 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&eth1 { &eth1 {
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };

View File

@ -143,10 +143,10 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&eth1 { &eth1 {
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };

View File

@ -78,7 +78,7 @@
compatible = "pci168c,002a"; compatible = "pci168c,002a";
reg = <0x0 0 0 0 0>; reg = <0x0 0 0 0 0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
qca,no-eeprom; qca,no-eeprom;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;

View File

@ -78,7 +78,7 @@
compatible = "pci168c,002a"; compatible = "pci168c,002a";
reg = <0x0 0 0 0 0>; reg = <0x0 0 0 0 0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
qca,no-eeprom; qca,no-eeprom;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;

View File

@ -82,7 +82,7 @@
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
qca,no-eeprom; qca,no-eeprom;
mtd-mac-address = <&config 0x66>; mtd-mac-address = <&config 0x66>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
}; };

View File

@ -94,8 +94,8 @@
status = "okay"; status = "okay";
mtd-mac-address = <&art 0x1002>; mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment-byte = <3>; mac-address-increment-byte = <3>;
mtd-mac-address-increment = <0x40>; mac-address-increment = <0x40>;
}; };
&mdio1 { &mdio1 {

View File

@ -25,7 +25,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
gmac-config { gmac-config {
device = <&gmac>; device = <&gmac>;
@ -39,7 +39,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&pinmux { &pinmux {

View File

@ -61,7 +61,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&usb { &usb {

View File

@ -122,7 +122,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
gmac-config { gmac-config {
device = <&gmac>; device = <&gmac>;
@ -136,7 +136,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&wmac { &wmac {

View File

@ -134,7 +134,7 @@
phy-handle = <&swphy0>; phy-handle = <&swphy0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -82,7 +82,7 @@
phy-handle = <&swphy0>; phy-handle = <&swphy0>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&eth1 { &eth1 {

View File

@ -107,7 +107,7 @@
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&hw_info 0x0>; mtd-mac-address = <&hw_info 0x0>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
}; };
}; };
@ -161,7 +161,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&hw_info 0x0>; mtd-mac-address = <&hw_info 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&nand { &nand {

View File

@ -131,7 +131,7 @@
pll-data = <0x02000000 0x00000101 0x00001616>; pll-data = <0x02000000 0x00000101 0x00001616>;
mtd-mac-address = <&art 0x1002>; mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
phy-mode = "rgmii"; phy-mode = "rgmii";
phy-handle = <&phy0>; phy-handle = <&phy0>;

View File

@ -30,7 +30,7 @@
&eth0 { &eth0 {
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
}; };
&pcie { &pcie {
@ -41,5 +41,5 @@
&wmac { &wmac {
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };

View File

@ -30,11 +30,11 @@
&pcie { &pcie {
wifi@0,0,0 { wifi@0,0,0 {
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
}; };
}; };
&wmac { &wmac {
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };

View File

@ -114,7 +114,7 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&pcie { &pcie {
@ -125,6 +125,6 @@
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
qca,no-eeprom; qca,no-eeprom;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <8>; mac-address-increment = <8>;
}; };
}; };

View File

@ -119,7 +119,7 @@
compatible = "168c,0030"; compatible = "168c,0030";
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
mtd-cal-data = <&art 0x5000>; mtd-cal-data = <&art 0x5000>;
qca,no-eeprom; qca,no-eeprom;
qca,disable-5ghz; qca,disable-5ghz;
@ -134,7 +134,7 @@
qca,disable-2ghz; qca,disable-2ghz;
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&mdio0 { &mdio0 {

View File

@ -25,7 +25,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&pridata 0x400>; mtd-mac-address = <&pridata 0x400>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -25,7 +25,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&pridata 0x400>; mtd-mac-address = <&pridata 0x400>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -67,7 +67,7 @@
phy-handle = <&swphy0>; phy-handle = <&swphy0>;
mtd-mac-address = <&art 0x1002>; mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
gmac-config { gmac-config {
device = <&gmac>; device = <&gmac>;

View File

@ -165,7 +165,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&config 0x0>; mtd-mac-address = <&config 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -164,7 +164,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&config 0x0>; mtd-mac-address = <&config 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -148,7 +148,7 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&config 0x0>; mtd-mac-address = <&config 0x0>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
}; };
&pinmux { &pinmux {

View File

@ -58,7 +58,7 @@
&ath9k { &ath9k {
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&wmac { &wmac {
@ -69,7 +69,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
gmac-config { gmac-config {
device = <&gmac>; device = <&gmac>;
@ -84,5 +84,5 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
}; };

View File

@ -85,7 +85,7 @@
&wmac { &wmac {
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&mdio0 { &mdio0 {

View File

@ -142,7 +142,7 @@
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
qca,no-eeprom; qca,no-eeprom;
mtd-mac-address = <&addr 0x0>; mtd-mac-address = <&addr 0x0>;
mtd-mac-address-increment = <0x10>; mac-address-increment = <0x10>;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;
}; };
@ -198,7 +198,7 @@
pll-data = <0xe000000 0x04000101 0x04001313>; pll-data = <0xe000000 0x04000101 0x04001313>;
mtd-mac-address = <&addr 0x0>; mtd-mac-address = <&addr 0x0>;
mtd-mac-address-increment = <0x21>; mac-address-increment = <0x21>;
phy-mode = "rgmii-rxid"; phy-mode = "rgmii-rxid";
phy-handle = <&phy4>; phy-handle = <&phy4>;

View File

@ -107,12 +107,12 @@
&eth0 { &eth0 {
mtd-mac-address = <&art 0x1002>; mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
}; };
&eth1 { &eth1 {
mtd-mac-address = <&art 0x1002>; mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&pcie0 { &pcie0 {

View File

@ -46,7 +46,7 @@
&eth0 { &eth0 {
mtd-mac-address = <&art 0x1002>; mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&eth1 { &eth1 {

View File

@ -51,7 +51,7 @@
&eth0 { &eth0 {
mtd-mac-address = <&art 0x1002>; mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
}; };
&eth1 { &eth1 {
@ -60,7 +60,7 @@
compatible = "qca,qca9530-eth", "syscon", "simple-mfd"; compatible = "qca,qca9530-eth", "syscon", "simple-mfd";
mtd-mac-address = <&art 0x1002>; mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&gpio_export { &gpio_export {

View File

@ -151,7 +151,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {
@ -163,5 +163,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <10>; mac-address-increment = <10>;
}; };

View File

@ -110,7 +110,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {
@ -122,5 +122,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <3>; mac-address-increment = <3>;
}; };

View File

@ -122,5 +122,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <10>; mac-address-increment = <10>;
}; };

View File

@ -151,7 +151,7 @@
&eth1 { &eth1 {
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&wmac { &wmac {

View File

@ -134,7 +134,7 @@
&eth1 { &eth1 {
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&wmac { &wmac {

View File

@ -123,7 +123,7 @@
&eth1 { &eth1 {
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&wmac { &wmac {

View File

@ -96,7 +96,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&pridata 0x400>; mtd-mac-address = <&pridata 0x400>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -147,7 +147,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&romfile 0xf100>; mtd-mac-address = <&romfile 0xf100>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -172,7 +172,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -129,12 +129,12 @@
phy-handle = <&swphy0>; phy-handle = <&swphy0>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };
&wmac { &wmac {

View File

@ -148,7 +148,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&info 0x8>; mtd-mac-address = <&info 0x8>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -149,5 +149,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
}; };

View File

@ -124,7 +124,7 @@
compatible = "qca,qca9530-eth", "syscon", "simple-mfd"; compatible = "qca,qca9530-eth", "syscon", "simple-mfd";
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&wmac { &wmac {
@ -132,5 +132,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
}; };

View File

@ -74,7 +74,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -109,7 +109,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -149,7 +149,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -91,7 +91,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -90,5 +90,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };

View File

@ -100,7 +100,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
phy-handle = <&phy2>; phy-handle = <&phy2>;

View File

@ -90,5 +90,6 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
qca-no-eeprom;
}; };

View File

@ -199,7 +199,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
pll-data = <0x03000101 0x00000101 0x00001616>; pll-data = <0x03000101 0x00000101 0x00001616>;
fixed-link { fixed-link {

View File

@ -59,7 +59,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&art 0x00>; mtd-mac-address = <&art 0x00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
phy-handle = <&phy1>; phy-handle = <&phy1>;
pll-data = <0x03000101 0x00000101 0x00001313>; pll-data = <0x03000101 0x00000101 0x00001313>;

View File

@ -94,7 +94,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&art 0x00>; mtd-mac-address = <&art 0x00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
phy-handle = <&phy1>; phy-handle = <&phy1>;
pll-data = <0x03000101 0x00000101 0x00001313>; pll-data = <0x03000101 0x00000101 0x00001313>;

View File

@ -114,5 +114,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x00>; mtd-mac-address = <&art 0x00>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
}; };

View File

@ -157,7 +157,7 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&pcie0 { &pcie0 {

View File

@ -20,6 +20,6 @@
compatible = "pci168c,0033"; compatible = "pci168c,0033";
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <16>; mac-address-increment = <16>;
}; };
}; };

View File

@ -20,6 +20,6 @@
compatible = "pci168c,0033"; compatible = "pci168c,0033";
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <16>; mac-address-increment = <16>;
}; };
}; };

View File

@ -128,7 +128,7 @@
phy-handle = <&phy0>; phy-handle = <&phy0>;
mtd-mac-address = <&pridata 0x400>; mtd-mac-address = <&pridata 0x400>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -150,7 +150,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
phy-handle = <&phy0>; phy-handle = <&phy0>;
pll-data = <0x56000000 0x00000101 0x00001616>; pll-data = <0x56000000 0x00000101 0x00001616>;

View File

@ -71,7 +71,7 @@
&eth0 { &eth0 {
mtd-mac-address = <&romfs 0xf100>; mtd-mac-address = <&romfs 0xf100>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -65,7 +65,7 @@
&eth0 { &eth0 {
mtd-mac-address = <&romfs 0xf100>; mtd-mac-address = <&romfs 0xf100>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -166,5 +166,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&info 0x8>; mtd-mac-address = <&info 0x8>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };

View File

@ -97,7 +97,7 @@
compatible = "pci168c,0033"; compatible = "pci168c,0033";
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
qca,no-eeprom; qca,no-eeprom;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;
@ -191,7 +191,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
phy-handle = <&phy0>; phy-handle = <&phy0>;
pll-data = <0x56000000 0x00000101 0x00001616>; pll-data = <0x56000000 0x00000101 0x00001616>;
@ -218,5 +218,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };

View File

@ -146,7 +146,7 @@
pll-data = <0x56000000 0x00000101 0x00001616>; pll-data = <0x56000000 0x00000101 0x00001616>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
phy-handle = <&phy0>; phy-handle = <&phy0>;
}; };

View File

@ -179,7 +179,7 @@
status = "okay"; status = "okay";
mtd-mac-address = <&info 0x8>; mtd-mac-address = <&info 0x8>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&wmac { &wmac {

View File

@ -127,7 +127,7 @@
phy-handle = <&swphy0>; phy-handle = <&swphy0>;
mtd-mac-address = <&info 0x8>; mtd-mac-address = <&info 0x8>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
gmac-config { gmac-config {
device = <&gmac>; device = <&gmac>;

View File

@ -73,7 +73,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&info 0x8>; mtd-mac-address = <&info 0x8>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -134,5 +134,5 @@
mtd-cal-data = <&art 0x1000>; mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>; mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };

View File

@ -106,7 +106,7 @@
pll-data = <0x03000101 0x00000101 0x00001919>; pll-data = <0x03000101 0x00000101 0x00001919>;
mtd-mac-address = <&art 0x1002>; mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
phy-mode = "sgmii"; phy-mode = "sgmii";
phy-handle = <&phy0>; phy-handle = <&phy0>;
}; };

View File

@ -64,5 +64,5 @@
&eth1 { &eth1 {
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>; mac-address-increment = <(-1)>;
}; };

View File

@ -51,7 +51,7 @@
phy-handle = <&swphy4>; phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>; mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&eth1 { &eth1 {

View File

@ -1,5 +1,7 @@
From: John Crispin <blogic@openwrt.org> From 6f8e5369ae054ec6c9265581d5a7e39738a5cd84 Mon Sep 17 00:00:00 2001
Subject: NET: add mtd-mac-address support to of_get_mac_address() From: Ansuel Smith <ansuelsmth@gmail.com>
Date: Tue, 30 Mar 2021 13:16:38 +0200
Subject: [PATCH 1/2] NET: add mtd-mac-address support to of_get_mac_address()
Many embedded devices have information such as mac addresses stored inside mtd Many embedded devices have information such as mac addresses stored inside mtd
devices. This patch allows us to add a property inside a node describing a devices. This patch allows us to add a property inside a node describing a
@ -8,11 +10,13 @@ where the mac address can be found.
Signed-off-by: John Crispin <blogic@openwrt.org> Signed-off-by: John Crispin <blogic@openwrt.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
--- ---
drivers/of/of_net.c | 37 +++++++++++++++++++++++++++++++++++++ drivers/of/of_net.c | 75 ++++++++++++++++++++++++++++++++++++++++++++-
include/linux/of_net.h | 1 + 1 file changed, 74 insertions(+), 1 deletion(-)
2 files changed, 38 insertions(+)
diff --git a/drivers/of/of_net.c b/drivers/of/of_net.c
index 6e411821583e..f072e2509cc9 100644
--- a/drivers/of/of_net.c --- a/drivers/of/of_net.c
+++ b/drivers/of/of_net.c +++ b/drivers/of/of_net.c
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
@ -23,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/** /**
* of_get_phy_mode - Get phy mode for given device_node * of_get_phy_mode - Get phy mode for given device_node
@@ -45,7 +46,7 @@ int of_get_phy_mode(struct device_node * @@ -45,7 +46,7 @@ int of_get_phy_mode(struct device_node *np, phy_interface_t *interface)
} }
EXPORT_SYMBOL_GPL(of_get_phy_mode); EXPORT_SYMBOL_GPL(of_get_phy_mode);
@ -32,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
{ {
struct property *pp = of_find_property(np, name, NULL); struct property *pp = of_find_property(np, name, NULL);
@@ -78,6 +79,79 @@ static const void *of_get_mac_addr_nvmem @@ -78,6 +79,70 @@ static const void *of_get_mac_addr_nvmem(struct device_node *np)
return mac; return mac;
} }
@ -47,10 +51,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ const char *part; + const char *part;
+ const __be32 *list; + const __be32 *list;
+ phandle phandle; + phandle phandle;
+ u32 mac_inc = 0;
+ u8 mac[ETH_ALEN]; + u8 mac[ETH_ALEN];
+ void *addr; + void *addr;
+ u32 inc_idx;
+ +
+ list = of_get_property(np, "mtd-mac-address", &size); + list = of_get_property(np, "mtd-mac-address", &size);
+ if (!list || (size != (2 * sizeof(*list)))) + if (!list || (size != (2 * sizeof(*list))))
@ -74,14 +76,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ ret = mtd_read(mtd, be32_to_cpup(list), 6, &retlen, mac); + ret = mtd_read(mtd, be32_to_cpup(list), 6, &retlen, mac);
+ put_mtd_device(mtd); + put_mtd_device(mtd);
+ +
+ if (of_property_read_u32(np, "mtd-mac-address-increment-byte", &inc_idx))
+ inc_idx = 5;
+ if (inc_idx > 5)
+ return NULL;
+
+ if (!of_property_read_u32(np, "mtd-mac-address-increment", &mac_inc))
+ mac[inc_idx] += mac_inc;
+
+ if (!is_valid_ether_addr(mac)) + if (!is_valid_ether_addr(mac))
+ return NULL; + return NULL;
+ +
@ -108,11 +102,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+#endif +#endif
+ return NULL; + return NULL;
+} +}
+
+ +
/** /**
* Search the device tree for the best MAC address to use. 'mac-address' is * Search the device tree for the best MAC address to use. 'mac-address' is
* checked first, because that is supposed to contain to "most recent" MAC * checked first, because that is supposed to contain to "most recent" MAC
@@ -98,12 +172,20 @@ static const void *of_get_mac_addr_nvmem @@ -98,6 +163,10 @@ static const void *of_get_mac_addr_nvmem(struct device_node *np)
* this case, the real MAC is in 'local-mac-address', and 'mac-address' exists * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
* but is all zeros. * but is all zeros.
* *
@ -123,13 +118,17 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
* Return: Will be a valid pointer on success and ERR_PTR in case of error. * Return: Will be a valid pointer on success and ERR_PTR in case of error.
*/ */
const void *of_get_mac_address(struct device_node *np) const void *of_get_mac_address(struct device_node *np)
{ @@ -116,6 +185,10 @@ const void *of_get_mac_address(struct device_node *np)
const void *addr; if (addr)
return addr;
+ addr = of_get_mac_address_mtd(np); + addr = of_get_mac_address_mtd(np);
+ if (addr) + if (addr)
+ return addr; + return addr;
+ +
addr = of_get_mac_addr(np, "mac-address"); return of_get_mac_addr_nvmem(np);
if (addr) }
return addr; EXPORT_SYMBOL(of_get_mac_address);
--
2.30.2

View File

@ -0,0 +1,133 @@
From 639dba857aa554f2a78572adc4cf3c32de9ec2e2 Mon Sep 17 00:00:00 2001
From: Ansuel Smith <ansuelsmth@gmail.com>
Date: Tue, 30 Mar 2021 18:21:14 +0200
Subject: [PATCH 2/2] of_net: add mac-address-increment support
Lots of embedded devices use the mac-address of other interface
extracted from nvmem cells and increments it by one or two. Add two
bindings to integrate this and directly use the right mac-address for
the interface. Some example are some routers that use the gmac
mac-address stored in the art partition and increments it by one for the
wifi. mac-address-increment-byte bindings is used to tell what byte of
the mac-address has to be increased (if not defined the last byte is
increased) and mac-address-increment tells how much the byte decided
early has to be increased.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
drivers/of/of_net.c | 59 ++++++++++++++++++++++++++++++++++-----------
1 file changed, 45 insertions(+), 14 deletions(-)
diff --git a/drivers/of/of_net.c b/drivers/of/of_net.c
index f072e2509cc9..0dbd1f7ef396 100644
--- a/drivers/of/of_net.c
+++ b/drivers/of/of_net.c
@@ -55,31 +55,36 @@ static void *of_get_mac_addr(struct device_node *np, const char *name)
return NULL;
}
-static const void *of_get_mac_addr_nvmem(struct device_node *np)
+static void *of_get_mac_addr_nvmem(struct device_node *np, int *err)
{
int ret;
- const void *mac;
+ void *mac;
u8 nvmem_mac[ETH_ALEN];
struct platform_device *pdev = of_find_device_by_node(np);
- if (!pdev)
- return ERR_PTR(-ENODEV);
+ if (!pdev) {
+ *err = -ENODEV;
+ return NULL;
+ }
ret = nvmem_get_mac_address(&pdev->dev, &nvmem_mac);
if (ret) {
put_device(&pdev->dev);
- return ERR_PTR(ret);
+ *err = ret;
+ return NULL;
}
mac = devm_kmemdup(&pdev->dev, nvmem_mac, ETH_ALEN, GFP_KERNEL);
put_device(&pdev->dev);
- if (!mac)
- return ERR_PTR(-ENOMEM);
+ if (!mac) {
+ *err = -ENOMEM;
+ return NULL;
+ }
return mac;
}
-static const void *of_get_mac_address_mtd(struct device_node *np)
+static void *of_get_mac_address_mtd(struct device_node *np)
{
#ifdef CONFIG_MTD
struct device_node *mtd_np = NULL;
@@ -167,28 +172,54 @@ static const void *of_get_mac_address_mtd(struct device_node *np)
* If a mtd-mac-address property exists, try to fetch the MAC address from the
* specified mtd device, and store it as a 'mac-address' property
*
+ * DT can tell the system to increment the mac-address after is extracted by
+ * using:
+ * - mac-address-increment-byte to decide what byte to increase
+ * (if not defined is increased the last byte)
+ * - mac-address-increment to decide how much to increase. The value will
+ * not overflow to other bytes if the increment is over 255.
+ * (example 00:01:02:03:04:ff + 1 == 00:01:02:03:04:00)
+ *
* Return: Will be a valid pointer on success and ERR_PTR in case of error.
*/
const void *of_get_mac_address(struct device_node *np)
{
- const void *addr;
+ u32 inc_idx, mac_inc;
+ int ret = 0;
+ u8 *addr;
+
+ /* Check first if the increment byte is present and valid.
+ * If not set assume to increment the last byte if found.
+ */
+ if (of_property_read_u32(np, "mac-address-increment-byte", &inc_idx))
+ inc_idx = 5;
+ if (inc_idx < 3 || inc_idx > 5)
+ return ERR_PTR(-EINVAL);
addr = of_get_mac_addr(np, "mac-address");
if (addr)
- return addr;
+ goto found;
addr = of_get_mac_addr(np, "local-mac-address");
if (addr)
- return addr;
+ goto found;
addr = of_get_mac_addr(np, "address");
if (addr)
- return addr;
+ goto found;
addr = of_get_mac_address_mtd(np);
if (addr)
- return addr;
+ goto found;
+
+ addr = of_get_mac_addr_nvmem(np, &ret);
+ if (ret)
+ return ERR_PTR(ret);
+
+found:
+ if (!of_property_read_u32(np, "mac-address-increment", &mac_inc))
+ addr[inc_idx] += mac_inc;
- return of_get_mac_addr_nvmem(np);
+ return addr;
}
EXPORT_SYMBOL(of_get_mac_address);
--
2.30.2

View File

@ -1,5 +1,7 @@
From: John Crispin <blogic@openwrt.org> From 6f8e5369ae054ec6c9265581d5a7e39738a5cd84 Mon Sep 17 00:00:00 2001
Subject: NET: add mtd-mac-address support to of_get_mac_address() From: Ansuel Smith <ansuelsmth@gmail.com>
Date: Tue, 30 Mar 2021 13:16:38 +0200
Subject: [PATCH 1/2] NET: add mtd-mac-address support to of_get_mac_address()
Many embedded devices have information such as mac addresses stored inside mtd Many embedded devices have information such as mac addresses stored inside mtd
devices. This patch allows us to add a property inside a node describing a devices. This patch allows us to add a property inside a node describing a
@ -8,11 +10,13 @@ where the mac address can be found.
Signed-off-by: John Crispin <blogic@openwrt.org> Signed-off-by: John Crispin <blogic@openwrt.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
--- ---
drivers/of/of_net.c | 37 +++++++++++++++++++++++++++++++++++++ drivers/of/of_net.c | 75 ++++++++++++++++++++++++++++++++++++++++++++-
include/linux/of_net.h | 1 + 1 file changed, 74 insertions(+), 1 deletion(-)
2 files changed, 38 insertions(+)
diff --git a/drivers/of/of_net.c b/drivers/of/of_net.c
index 6e411821583e..f072e2509cc9 100644
--- a/drivers/of/of_net.c --- a/drivers/of/of_net.c
+++ b/drivers/of/of_net.c +++ b/drivers/of/of_net.c
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
@ -23,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/** /**
* of_get_phy_mode - Get phy mode for given device_node * of_get_phy_mode - Get phy mode for given device_node
@@ -39,7 +40,7 @@ int of_get_phy_mode(struct device_node * @@ -45,7 +46,7 @@ int of_get_phy_mode(struct device_node *np, phy_interface_t *interface)
} }
EXPORT_SYMBOL_GPL(of_get_phy_mode); EXPORT_SYMBOL_GPL(of_get_phy_mode);
@ -32,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
{ {
struct property *pp = of_find_property(np, name, NULL); struct property *pp = of_find_property(np, name, NULL);
@@ -72,6 +73,79 @@ static const void *of_get_mac_addr_nvmem @@ -78,6 +79,70 @@ static const void *of_get_mac_addr_nvmem(struct device_node *np)
return mac; return mac;
} }
@ -47,10 +51,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ const char *part; + const char *part;
+ const __be32 *list; + const __be32 *list;
+ phandle phandle; + phandle phandle;
+ u32 mac_inc = 0;
+ u8 mac[ETH_ALEN]; + u8 mac[ETH_ALEN];
+ void *addr; + void *addr;
+ u32 inc_idx;
+ +
+ list = of_get_property(np, "mtd-mac-address", &size); + list = of_get_property(np, "mtd-mac-address", &size);
+ if (!list || (size != (2 * sizeof(*list)))) + if (!list || (size != (2 * sizeof(*list))))
@ -74,14 +76,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ ret = mtd_read(mtd, be32_to_cpup(list), 6, &retlen, mac); + ret = mtd_read(mtd, be32_to_cpup(list), 6, &retlen, mac);
+ put_mtd_device(mtd); + put_mtd_device(mtd);
+ +
+ if (of_property_read_u32(np, "mtd-mac-address-increment-byte", &inc_idx))
+ inc_idx = 5;
+ if (inc_idx > 5)
+ return NULL;
+
+ if (!of_property_read_u32(np, "mtd-mac-address-increment", &mac_inc))
+ mac[inc_idx] += mac_inc;
+
+ if (!is_valid_ether_addr(mac)) + if (!is_valid_ether_addr(mac))
+ return NULL; + return NULL;
+ +
@ -108,11 +102,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+#endif +#endif
+ return NULL; + return NULL;
+} +}
+
+ +
/** /**
* Search the device tree for the best MAC address to use. 'mac-address' is * Search the device tree for the best MAC address to use. 'mac-address' is
* checked first, because that is supposed to contain to "most recent" MAC * checked first, because that is supposed to contain to "most recent" MAC
@@ -92,12 +166,20 @@ static const void *of_get_mac_addr_nvmem @@ -98,6 +163,10 @@ static const void *of_get_mac_addr_nvmem(struct device_node *np)
* this case, the real MAC is in 'local-mac-address', and 'mac-address' exists * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
* but is all zeros. * but is all zeros.
* *
@ -123,13 +118,17 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
* Return: Will be a valid pointer on success and ERR_PTR in case of error. * Return: Will be a valid pointer on success and ERR_PTR in case of error.
*/ */
const void *of_get_mac_address(struct device_node *np) const void *of_get_mac_address(struct device_node *np)
{ @@ -116,6 +185,10 @@ const void *of_get_mac_address(struct device_node *np)
const void *addr; if (addr)
return addr;
+ addr = of_get_mac_address_mtd(np); + addr = of_get_mac_address_mtd(np);
+ if (addr) + if (addr)
+ return addr; + return addr;
+ +
addr = of_get_mac_addr(np, "mac-address"); return of_get_mac_addr_nvmem(np);
if (addr) }
return addr; EXPORT_SYMBOL(of_get_mac_address);
--
2.30.2

View File

@ -0,0 +1,133 @@
From 639dba857aa554f2a78572adc4cf3c32de9ec2e2 Mon Sep 17 00:00:00 2001
From: Ansuel Smith <ansuelsmth@gmail.com>
Date: Tue, 30 Mar 2021 18:21:14 +0200
Subject: [PATCH 2/2] of_net: add mac-address-increment support
Lots of embedded devices use the mac-address of other interface
extracted from nvmem cells and increments it by one or two. Add two
bindings to integrate this and directly use the right mac-address for
the interface. Some example are some routers that use the gmac
mac-address stored in the art partition and increments it by one for the
wifi. mac-address-increment-byte bindings is used to tell what byte of
the mac-address has to be increased (if not defined the last byte is
increased) and mac-address-increment tells how much the byte decided
early has to be increased.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
drivers/of/of_net.c | 59 ++++++++++++++++++++++++++++++++++-----------
1 file changed, 45 insertions(+), 14 deletions(-)
diff --git a/drivers/of/of_net.c b/drivers/of/of_net.c
index f072e2509cc9..0dbd1f7ef396 100644
--- a/drivers/of/of_net.c
+++ b/drivers/of/of_net.c
@@ -55,31 +55,36 @@ static void *of_get_mac_addr(struct device_node *np, const char *name)
return NULL;
}
-static const void *of_get_mac_addr_nvmem(struct device_node *np)
+static void *of_get_mac_addr_nvmem(struct device_node *np, int *err)
{
int ret;
- const void *mac;
+ void *mac;
u8 nvmem_mac[ETH_ALEN];
struct platform_device *pdev = of_find_device_by_node(np);
- if (!pdev)
- return ERR_PTR(-ENODEV);
+ if (!pdev) {
+ *err = -ENODEV;
+ return NULL;
+ }
ret = nvmem_get_mac_address(&pdev->dev, &nvmem_mac);
if (ret) {
put_device(&pdev->dev);
- return ERR_PTR(ret);
+ *err = ret;
+ return NULL;
}
mac = devm_kmemdup(&pdev->dev, nvmem_mac, ETH_ALEN, GFP_KERNEL);
put_device(&pdev->dev);
- if (!mac)
- return ERR_PTR(-ENOMEM);
+ if (!mac) {
+ *err = -ENOMEM;
+ return NULL;
+ }
return mac;
}
-static const void *of_get_mac_address_mtd(struct device_node *np)
+static void *of_get_mac_address_mtd(struct device_node *np)
{
#ifdef CONFIG_MTD
struct device_node *mtd_np = NULL;
@@ -167,28 +172,54 @@ static const void *of_get_mac_address_mtd(struct device_node *np)
* If a mtd-mac-address property exists, try to fetch the MAC address from the
* specified mtd device, and store it as a 'mac-address' property
*
+ * DT can tell the system to increment the mac-address after is extracted by
+ * using:
+ * - mac-address-increment-byte to decide what byte to increase
+ * (if not defined is increased the last byte)
+ * - mac-address-increment to decide how much to increase. The value will
+ * not overflow to other bytes if the increment is over 255.
+ * (example 00:01:02:03:04:ff + 1 == 00:01:02:03:04:00)
+ *
* Return: Will be a valid pointer on success and ERR_PTR in case of error.
*/
const void *of_get_mac_address(struct device_node *np)
{
- const void *addr;
+ u32 inc_idx, mac_inc;
+ int ret = 0;
+ u8 *addr;
+
+ /* Check first if the increment byte is present and valid.
+ * If not set assume to increment the last byte if found.
+ */
+ if (of_property_read_u32(np, "mac-address-increment-byte", &inc_idx))
+ inc_idx = 5;
+ if (inc_idx < 3 || inc_idx > 5)
+ return ERR_PTR(-EINVAL);
addr = of_get_mac_addr(np, "mac-address");
if (addr)
- return addr;
+ goto found;
addr = of_get_mac_addr(np, "local-mac-address");
if (addr)
- return addr;
+ goto found;
addr = of_get_mac_addr(np, "address");
if (addr)
- return addr;
+ goto found;
addr = of_get_mac_address_mtd(np);
if (addr)
- return addr;
+ goto found;
+
+ addr = of_get_mac_addr_nvmem(np, &ret);
+ if (ret)
+ return ERR_PTR(ret);
+
+found:
+ if (!of_property_read_u32(np, "mac-address-increment", &mac_inc))
+ addr[inc_idx] += mac_inc;
- return of_get_mac_addr_nvmem(np);
+ return addr;
}
EXPORT_SYMBOL(of_get_mac_address);
--
2.30.2

View File

@ -289,7 +289,7 @@
pinctrl-names = "default"; pinctrl-names = "default";
mtd-mac-address = <&defaultmac 0x8>; mtd-mac-address = <&defaultmac 0x8>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
fixed-link { fixed-link {
speed = <1000>; speed = <1000>;

View File

@ -324,7 +324,7 @@
pinctrl-names = "default"; pinctrl-names = "default";
mtd-mac-address = <&defaultmac 0>; mtd-mac-address = <&defaultmac 0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
fixed-link { fixed-link {
speed = <1000>; speed = <1000>;

View File

@ -426,7 +426,7 @@
reg = <0x00010000 0 0 0 0>; reg = <0x00010000 0 0 0 0>;
mtd-mac-address = <&art 6>; mtd-mac-address = <&art 6>;
mtd-mac-address-increment = <(1)>; mac-address-increment = <(1)>;
}; };
}; };
}; };
@ -446,7 +446,7 @@
reg = <0x00010000 0 0 0 0>; reg = <0x00010000 0 0 0 0>;
mtd-mac-address = <&art 6>; mtd-mac-address = <&art 6>;
mtd-mac-address-increment = <(2)>; mac-address-increment = <(2)>;
}; };
}; };
}; };

View File

@ -97,7 +97,7 @@
phy-mode = "rmii"; phy-mode = "rmii";
phy-handle = <&phy0>; phy-handle = <&phy0>;
mtd-mac-address = <&ath9k_cal 0xa91>; mtd-mac-address = <&ath9k_cal 0xa91>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
mdio-bus { mdio-bus {
#address-cells = <1>; #address-cells = <1>;

View File

@ -98,7 +98,7 @@
&gsw { &gsw {
phy-mode = "mii"; phy-mode = "mii";
mtd-mac-address = <&ath9k_cal 0xa91>; mtd-mac-address = <&ath9k_cal 0xa91>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
}; };
&gpio { &gpio {

View File

@ -155,6 +155,6 @@
ralink,mtd-eeprom = <&boardconfig 0x410>; ralink,mtd-eeprom = <&boardconfig 0x410>;
ralink,mtd-eeprom-swap; ralink,mtd-eeprom-swap;
mtd-mac-address = <&boardconfig 0x16>; mtd-mac-address = <&boardconfig 0x16>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
}; };

View File

@ -213,7 +213,7 @@
reg = <0x7000 0 0 0 0>; reg = <0x7000 0 0 0 0>;
qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */ qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */
mtd-mac-address = <&boardconfig 0x16>; mtd-mac-address = <&boardconfig 0x16>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
}; };

View File

@ -160,7 +160,7 @@
reg = <0x7000 0 0 0 0>; reg = <0x7000 0 0 0 0>;
qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */ qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */
mtd-mac-address = <&art 0x16>; mtd-mac-address = <&art 0x16>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
}; };

View File

@ -220,7 +220,7 @@
ralink,mtd-eeprom = <&boardconfig 0x410>; ralink,mtd-eeprom = <&boardconfig 0x410>;
ralink,mtd-eeprom-swap; ralink,mtd-eeprom-swap;
mtd-mac-address = <&boardconfig 0x16>; mtd-mac-address = <&boardconfig 0x16>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
}; };

View File

@ -128,7 +128,7 @@
&eth0 { &eth0 {
mtd-mac-address = <&boardconfig 0x16>; mtd-mac-address = <&boardconfig 0x16>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
&gphy0 { &gphy0 {
@ -239,7 +239,7 @@
ralink,mtd-eeprom = <&boardconfig 0x410>; ralink,mtd-eeprom = <&boardconfig 0x410>;
ralink,mtd-eeprom-swap; ralink,mtd-eeprom-swap;
mtd-mac-address = <&boardconfig 0x16>; mtd-mac-address = <&boardconfig 0x16>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
}; };

View File

@ -82,7 +82,7 @@
&eth0 { &eth0 {
mtd-mac-address = <&urlader 0xa91>; mtd-mac-address = <&urlader 0xa91>;
mtd-mac-address-increment = <(-2)>; mac-address-increment = <(-2)>;
}; };
&gphy0 { &gphy0 {

View File

@ -204,7 +204,7 @@
qca,no-eeprom; qca,no-eeprom;
qca,disable-5ghz; qca,disable-5ghz;
mtd-mac-address = <&ath9k_cal 0xf100>; mtd-mac-address = <&ath9k_cal 0xf100>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
}; };
}; };
}; };

View File

@ -192,7 +192,7 @@
big-endian; big-endian;
ieee80211-freq-limit = <5000000 6000000>; ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&romfile 0xf100>; mtd-mac-address = <&romfile 0xf100>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
}; };
}; };
}; };

View File

@ -177,7 +177,7 @@
phy-handle = <&phy1>; phy-handle = <&phy1>;
phy-connection-type = "rgmii-id"; phy-connection-type = "rgmii-id";
mtd-mac-address = <&hwinfo 0>; mtd-mac-address = <&hwinfo 0>;
mtd-mac-address-increment = <1>; mac-address-increment = <1>;
}; };
gpio0: gpio-controller@fc00 { gpio0: gpio-controller@fc00 {

View File

@ -181,7 +181,7 @@
phy-mode = "sgmii"; phy-mode = "sgmii";
phy-handle = <&phy5>; phy-handle = <&phy5>;
mtd-mac-address = <&eeprom 0>; mtd-mac-address = <&eeprom 0>;
mtd-mac-address-increment = <(1)>; mac-address-increment = <(1)>;
}; };
ethernet@2 { ethernet@2 {
@ -190,7 +190,7 @@
phy-mode = "sgmii"; phy-mode = "sgmii";
phy-handle = <&phy6>; phy-handle = <&phy6>;
mtd-mac-address = <&eeprom 0>; mtd-mac-address = <&eeprom 0>;
mtd-mac-address-increment = <(2)>; mac-address-increment = <(2)>;
}; };
ethernet@3 { ethernet@3 {
@ -199,7 +199,7 @@
phy-mode = "sgmii"; phy-mode = "sgmii";
phy-handle = <&phy7>; phy-handle = <&phy7>;
mtd-mac-address = <&eeprom 0>; mtd-mac-address = <&eeprom 0>;
mtd-mac-address-increment = <(3)>; mac-address-increment = <(3)>;
}; };
}; };
}; };

View File

@ -154,6 +154,6 @@
mediatek,mtd-eeprom = <&factory 0x8000>; mediatek,mtd-eeprom = <&factory 0x8000>;
ieee80211-freq-limit = <5000000 6000000>; ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&factory 0x28>; mtd-mac-address = <&factory 0x28>;
mtd-mac-address-increment = <2>; mac-address-increment = <2>;
}; };
}; };

View File

@ -115,7 +115,7 @@
mt76x0e@0,0 { mt76x0e@0,0 {
reg = <0x0000 0 0 0 0>; reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&config 0xe490>; mtd-mac-address = <&config 0xe490>;
mtd-mac-address-increment = <(2)>; mac-address-increment = <(2)>;
mediatek,mtd-eeprom = <&config 0xe05d>; mediatek,mtd-eeprom = <&config 0xe05d>;
}; };
}; };

Some files were not shown because too many files have changed in this diff Show More