ath9k0: wifi@0,11 { /* 2.4 GHz */
compatible = "pci168c,0029";
mtd-mac-address = <&hwinfo 0x1c>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
reg = <0x8800 0 0 0 0>;
#gpio-cells = <2>;
gpio-controller;
ath9k1: wifi@0,12 { /* 5 GHz */
compatible = "pci168c,0029";
mtd-mac-address = <&hwinfo 0x1c>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
reg = <0x9000 0 0 0 0>;
#gpio-cells = <2>;
gpio-controller;
status = "okay";
mtd-mac-address = <&art 0x520c>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
phy-handle = <&phy4>;
};
reg = <0x8800 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&config 0x66>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
#gpio-cells = <2>;
gpio-controller;
};
reg = <0x9000 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&config 0x66>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
#gpio-cells = <2>;
gpio-controller;
};
status = "okay";
mtd-mac-address = <&art 0x120c>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&pcie {
compatible = "pci168c,002b";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
compatible = "pci168c,002b";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
ð0 {
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
ð1 {
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&ath9k {
compatible = "pci168c,002e";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
compatible = "pci168c,002e";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
ð1 {
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
ð1 {
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
compatible = "pci168c,002a";
reg = <0x0 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
compatible = "pci168c,002a";
reg = <0x0 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
reg = <0x0000 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&config 0x66>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
status = "okay";
mtd-mac-address = <&art 0x1002>;
- mtd-mac-address-increment-byte = <3>;
- mtd-mac-address-increment = <0x40>;
+ mac-address-increment-byte = <3>;
+ mac-address-increment = <0x40>;
};
&mdio1 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
gmac-config {
device = <&gmac>;
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&pinmux {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&usb {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
gmac-config {
device = <&gmac>;
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&wmac {
phy-handle = <&swphy0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy0>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
ð1 {
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&hw_info 0x0>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
status = "okay";
mtd-mac-address = <&hw_info 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&nand {
pll-data = <0x02000000 0x00000101 0x00001616>;
mtd-mac-address = <&art 0x1002>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
phy-mode = "rgmii";
phy-handle = <&phy0>;
ð0 {
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
&pcie {
&wmac {
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&pcie {
wifi@0,0,0 {
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
};
&wmac {
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&pcie {
reg = <0x0000 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <8>;
+ mac-address-increment = <8>;
};
};
compatible = "168c,0030";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
mtd-cal-data = <&art 0x5000>;
qca,no-eeprom;
qca,disable-5ghz;
qca,disable-2ghz;
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&mdio0 {
phy-handle = <&swphy4>;
mtd-mac-address = <&pridata 0x400>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy4>;
mtd-mac-address = <&pridata 0x400>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy0>;
mtd-mac-address = <&art 0x1002>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
gmac-config {
device = <&gmac>;
phy-handle = <&swphy4>;
mtd-mac-address = <&config 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy4>;
mtd-mac-address = <&config 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&config 0x0>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
&pinmux {
&ath9k {
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&wmac {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
gmac-config {
device = <&gmac>;
phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
&wmac {
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&mdio0 {
reg = <0x0000 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&addr 0x0>;
- mtd-mac-address-increment = <0x10>;
+ mac-address-increment = <0x10>;
#gpio-cells = <2>;
gpio-controller;
};
pll-data = <0xe000000 0x04000101 0x04001313>;
mtd-mac-address = <&addr 0x0>;
- mtd-mac-address-increment = <0x21>;
+ mac-address-increment = <0x21>;
phy-mode = "rgmii-rxid";
phy-handle = <&phy4>;
ð0 {
mtd-mac-address = <&art 0x1002>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
ð1 {
mtd-mac-address = <&art 0x1002>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&pcie0 {
ð0 {
mtd-mac-address = <&art 0x1002>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
ð1 {
ð0 {
mtd-mac-address = <&art 0x1002>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
ð1 {
compatible = "qca,qca9530-eth", "syscon", "simple-mfd";
mtd-mac-address = <&art 0x1002>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&gpio_export {
phy-handle = <&swphy4>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <10>;
+ mac-address-increment = <10>;
};
phy-handle = <&swphy4>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <3>;
+ mac-address-increment = <3>;
};
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <10>;
+ mac-address-increment = <10>;
};
ð1 {
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&wmac {
ð1 {
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&wmac {
ð1 {
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&wmac {
phy-handle = <&swphy4>;
mtd-mac-address = <&pridata 0x400>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy4>;
mtd-mac-address = <&romfile 0xf100>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy0>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&wmac {
phy-handle = <&swphy4>;
mtd-mac-address = <&info 0x8>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
compatible = "qca,qca9530-eth", "syscon", "simple-mfd";
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&wmac {
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
status = "okay";
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
phy-handle = <&phy2>;
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
+ qca-no-eeprom;
};
status = "okay";
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
pll-data = <0x03000101 0x00000101 0x00001616>;
fixed-link {
status = "okay";
mtd-mac-address = <&art 0x00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
phy-handle = <&phy1>;
pll-data = <0x03000101 0x00000101 0x00001313>;
status = "okay";
mtd-mac-address = <&art 0x00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
phy-handle = <&phy1>;
pll-data = <0x03000101 0x00000101 0x00001313>;
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x00>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&pcie0 {
compatible = "pci168c,0033";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <16>;
+ mac-address-increment = <16>;
};
};
compatible = "pci168c,0033";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <16>;
+ mac-address-increment = <16>;
};
};
phy-handle = <&phy0>;
mtd-mac-address = <&pridata 0x400>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
phy-handle = <&phy0>;
pll-data = <0x56000000 0x00000101 0x00001616>;
ð0 {
mtd-mac-address = <&romfs 0xf100>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
ð0 {
mtd-mac-address = <&romfs 0xf100>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&info 0x8>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
compatible = "pci168c,0033";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
phy-handle = <&phy0>;
pll-data = <0x56000000 0x00000101 0x00001616>;
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
pll-data = <0x56000000 0x00000101 0x00001616>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
phy-handle = <&phy0>;
};
status = "okay";
mtd-mac-address = <&info 0x8>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&wmac {
phy-handle = <&swphy0>;
mtd-mac-address = <&info 0x8>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
gmac-config {
device = <&gmac>;
phy-handle = <&swphy4>;
mtd-mac-address = <&info 0x8>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
pll-data = <0x03000101 0x00000101 0x00001919>;
mtd-mac-address = <&art 0x1002>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
phy-mode = "sgmii";
phy-handle = <&phy0>;
};
ð1 {
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
phy-handle = <&swphy4>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ð1 {
--- /dev/null
+From 6f8e5369ae054ec6c9265581d5a7e39738a5cd84 Mon Sep 17 00:00:00 2001
+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
+devices. This patch allows us to add a property inside a node describing a
+network interface. The new property points at a mtd partition with an offset
+where the mac address can be found.
+
+Signed-off-by: John Crispin <blogic@openwrt.org>
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
+---
+ drivers/of/of_net.c | 75 ++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 74 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/of/of_net.c b/drivers/of/of_net.c
+index 6e411821583e..f072e2509cc9 100644
+--- a/drivers/of/of_net.c
++++ b/drivers/of/of_net.c
+@@ -11,6 +11,7 @@
+ #include <linux/phy.h>
+ #include <linux/export.h>
+ #include <linux/device.h>
++#include <linux/mtd/mtd.h>
+
+ /**
+ * of_get_phy_mode - Get phy mode for given 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);
+
+-static const void *of_get_mac_addr(struct device_node *np, const char *name)
++static void *of_get_mac_addr(struct device_node *np, const char *name)
+ {
+ struct property *pp = of_find_property(np, name, NULL);
+
+@@ -78,6 +79,70 @@ static const void *of_get_mac_addr_nvmem(struct device_node *np)
+ return mac;
+ }
+
++static const void *of_get_mac_address_mtd(struct device_node *np)
++{
++#ifdef CONFIG_MTD
++ struct device_node *mtd_np = NULL;
++ struct property *prop;
++ size_t retlen;
++ int size, ret;
++ struct mtd_info *mtd;
++ const char *part;
++ const __be32 *list;
++ phandle phandle;
++ u8 mac[ETH_ALEN];
++ void *addr;
++
++ list = of_get_property(np, "mtd-mac-address", &size);
++ if (!list || (size != (2 * sizeof(*list))))
++ return NULL;
++
++ phandle = be32_to_cpup(list++);
++ if (phandle)
++ mtd_np = of_find_node_by_phandle(phandle);
++
++ if (!mtd_np)
++ return NULL;
++
++ part = of_get_property(mtd_np, "label", NULL);
++ if (!part)
++ part = mtd_np->name;
++
++ mtd = get_mtd_device_nm(part);
++ if (IS_ERR(mtd))
++ return NULL;
++
++ ret = mtd_read(mtd, be32_to_cpup(list), 6, &retlen, mac);
++ put_mtd_device(mtd);
++
++ if (!is_valid_ether_addr(mac))
++ return NULL;
++
++ addr = of_get_mac_addr(np, "mac-address");
++ if (addr) {
++ memcpy(addr, mac, ETH_ALEN);
++ return addr;
++ }
++
++ prop = kzalloc(sizeof(*prop), GFP_KERNEL);
++ if (!prop)
++ return NULL;
++
++ prop->name = "mac-address";
++ prop->length = ETH_ALEN;
++ prop->value = kmemdup(mac, ETH_ALEN, GFP_KERNEL);
++ if (!prop->value || of_add_property(np, prop))
++ goto free;
++
++ return prop->value;
++free:
++ kfree(prop->value);
++ kfree(prop);
++#endif
++ return NULL;
++}
++
++
+ /**
+ * 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
+@@ -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
+ * but is all zeros.
+ *
++ *
++ * 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
++ *
+ * 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)
+@@ -116,6 +185,10 @@ const void *of_get_mac_address(struct device_node *np)
+ if (addr)
+ return addr;
+
++ addr = of_get_mac_address_mtd(np);
++ if (addr)
++ return addr;
++
+ return of_get_mac_addr_nvmem(np);
+ }
+ EXPORT_SYMBOL(of_get_mac_address);
+--
+2.30.2
+
+++ /dev/null
-From: John Crispin <blogic@openwrt.org>
-Subject: NET: add mtd-mac-address support to of_get_mac_address()
-
-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
-network interface. The new property points at a mtd partition with an offset
-where the mac address can be found.
-
-Signed-off-by: John Crispin <blogic@openwrt.org>
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
- drivers/of/of_net.c | 37 +++++++++++++++++++++++++++++++++++++
- include/linux/of_net.h | 1 +
- 2 files changed, 38 insertions(+)
-
---- a/drivers/of/of_net.c
-+++ b/drivers/of/of_net.c
-@@ -11,6 +11,7 @@
- #include <linux/phy.h>
- #include <linux/export.h>
- #include <linux/device.h>
-+#include <linux/mtd/mtd.h>
-
- /**
- * of_get_phy_mode - Get phy mode for given device_node
-@@ -45,7 +46,7 @@ int of_get_phy_mode(struct device_node *
- }
- EXPORT_SYMBOL_GPL(of_get_phy_mode);
-
--static const void *of_get_mac_addr(struct device_node *np, const char *name)
-+static void *of_get_mac_addr(struct device_node *np, const char *name)
- {
- struct property *pp = of_find_property(np, name, NULL);
-
-@@ -78,6 +79,79 @@ static const void *of_get_mac_addr_nvmem
- return mac;
- }
-
-+static const void *of_get_mac_address_mtd(struct device_node *np)
-+{
-+#ifdef CONFIG_MTD
-+ struct device_node *mtd_np = NULL;
-+ struct property *prop;
-+ size_t retlen;
-+ int size, ret;
-+ struct mtd_info *mtd;
-+ const char *part;
-+ const __be32 *list;
-+ phandle phandle;
-+ u32 mac_inc = 0;
-+ u8 mac[ETH_ALEN];
-+ void *addr;
-+ u32 inc_idx;
-+
-+ list = of_get_property(np, "mtd-mac-address", &size);
-+ if (!list || (size != (2 * sizeof(*list))))
-+ return NULL;
-+
-+ phandle = be32_to_cpup(list++);
-+ if (phandle)
-+ mtd_np = of_find_node_by_phandle(phandle);
-+
-+ if (!mtd_np)
-+ return NULL;
-+
-+ part = of_get_property(mtd_np, "label", NULL);
-+ if (!part)
-+ part = mtd_np->name;
-+
-+ mtd = get_mtd_device_nm(part);
-+ if (IS_ERR(mtd))
-+ return NULL;
-+
-+ ret = mtd_read(mtd, be32_to_cpup(list), 6, &retlen, mac);
-+ 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))
-+ return NULL;
-+
-+ addr = of_get_mac_addr(np, "mac-address");
-+ if (addr) {
-+ memcpy(addr, mac, ETH_ALEN);
-+ return addr;
-+ }
-+
-+ prop = kzalloc(sizeof(*prop), GFP_KERNEL);
-+ if (!prop)
-+ return NULL;
-+
-+ prop->name = "mac-address";
-+ prop->length = ETH_ALEN;
-+ prop->value = kmemdup(mac, ETH_ALEN, GFP_KERNEL);
-+ if (!prop->value || of_add_property(np, prop))
-+ goto free;
-+
-+ return prop->value;
-+free:
-+ kfree(prop->value);
-+ kfree(prop);
-+#endif
-+ return NULL;
-+}
-+
- /**
- * 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
-@@ -98,12 +172,20 @@ static const void *of_get_mac_addr_nvmem
- * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
- * but is all zeros.
- *
-+ *
-+ * 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
-+ *
- * 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;
-
-+ addr = of_get_mac_address_mtd(np);
-+ if (addr)
-+ return addr;
-+
- addr = of_get_mac_addr(np, "mac-address");
- if (addr)
- return addr;
--- /dev/null
+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
+
--- /dev/null
+From 6f8e5369ae054ec6c9265581d5a7e39738a5cd84 Mon Sep 17 00:00:00 2001
+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
+devices. This patch allows us to add a property inside a node describing a
+network interface. The new property points at a mtd partition with an offset
+where the mac address can be found.
+
+Signed-off-by: John Crispin <blogic@openwrt.org>
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
+---
+ drivers/of/of_net.c | 75 ++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 74 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/of/of_net.c b/drivers/of/of_net.c
+index 6e411821583e..f072e2509cc9 100644
+--- a/drivers/of/of_net.c
++++ b/drivers/of/of_net.c
+@@ -11,6 +11,7 @@
+ #include <linux/phy.h>
+ #include <linux/export.h>
+ #include <linux/device.h>
++#include <linux/mtd/mtd.h>
+
+ /**
+ * of_get_phy_mode - Get phy mode for given 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);
+
+-static const void *of_get_mac_addr(struct device_node *np, const char *name)
++static void *of_get_mac_addr(struct device_node *np, const char *name)
+ {
+ struct property *pp = of_find_property(np, name, NULL);
+
+@@ -78,6 +79,70 @@ static const void *of_get_mac_addr_nvmem(struct device_node *np)
+ return mac;
+ }
+
++static const void *of_get_mac_address_mtd(struct device_node *np)
++{
++#ifdef CONFIG_MTD
++ struct device_node *mtd_np = NULL;
++ struct property *prop;
++ size_t retlen;
++ int size, ret;
++ struct mtd_info *mtd;
++ const char *part;
++ const __be32 *list;
++ phandle phandle;
++ u8 mac[ETH_ALEN];
++ void *addr;
++
++ list = of_get_property(np, "mtd-mac-address", &size);
++ if (!list || (size != (2 * sizeof(*list))))
++ return NULL;
++
++ phandle = be32_to_cpup(list++);
++ if (phandle)
++ mtd_np = of_find_node_by_phandle(phandle);
++
++ if (!mtd_np)
++ return NULL;
++
++ part = of_get_property(mtd_np, "label", NULL);
++ if (!part)
++ part = mtd_np->name;
++
++ mtd = get_mtd_device_nm(part);
++ if (IS_ERR(mtd))
++ return NULL;
++
++ ret = mtd_read(mtd, be32_to_cpup(list), 6, &retlen, mac);
++ put_mtd_device(mtd);
++
++ if (!is_valid_ether_addr(mac))
++ return NULL;
++
++ addr = of_get_mac_addr(np, "mac-address");
++ if (addr) {
++ memcpy(addr, mac, ETH_ALEN);
++ return addr;
++ }
++
++ prop = kzalloc(sizeof(*prop), GFP_KERNEL);
++ if (!prop)
++ return NULL;
++
++ prop->name = "mac-address";
++ prop->length = ETH_ALEN;
++ prop->value = kmemdup(mac, ETH_ALEN, GFP_KERNEL);
++ if (!prop->value || of_add_property(np, prop))
++ goto free;
++
++ return prop->value;
++free:
++ kfree(prop->value);
++ kfree(prop);
++#endif
++ return NULL;
++}
++
++
+ /**
+ * 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
+@@ -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
+ * but is all zeros.
+ *
++ *
++ * 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
++ *
+ * 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)
+@@ -116,6 +185,10 @@ const void *of_get_mac_address(struct device_node *np)
+ if (addr)
+ return addr;
+
++ addr = of_get_mac_address_mtd(np);
++ if (addr)
++ return addr;
++
+ return of_get_mac_addr_nvmem(np);
+ }
+ EXPORT_SYMBOL(of_get_mac_address);
+--
+2.30.2
+
+++ /dev/null
-From: John Crispin <blogic@openwrt.org>
-Subject: NET: add mtd-mac-address support to of_get_mac_address()
-
-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
-network interface. The new property points at a mtd partition with an offset
-where the mac address can be found.
-
-Signed-off-by: John Crispin <blogic@openwrt.org>
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
- drivers/of/of_net.c | 37 +++++++++++++++++++++++++++++++++++++
- include/linux/of_net.h | 1 +
- 2 files changed, 38 insertions(+)
-
---- a/drivers/of/of_net.c
-+++ b/drivers/of/of_net.c
-@@ -11,6 +11,7 @@
- #include <linux/phy.h>
- #include <linux/export.h>
- #include <linux/device.h>
-+#include <linux/mtd/mtd.h>
-
- /**
- * of_get_phy_mode - Get phy mode for given device_node
-@@ -39,7 +40,7 @@ int of_get_phy_mode(struct device_node *
- }
- EXPORT_SYMBOL_GPL(of_get_phy_mode);
-
--static const void *of_get_mac_addr(struct device_node *np, const char *name)
-+static void *of_get_mac_addr(struct device_node *np, const char *name)
- {
- struct property *pp = of_find_property(np, name, NULL);
-
-@@ -72,6 +73,79 @@ static const void *of_get_mac_addr_nvmem
- return mac;
- }
-
-+static const void *of_get_mac_address_mtd(struct device_node *np)
-+{
-+#ifdef CONFIG_MTD
-+ struct device_node *mtd_np = NULL;
-+ struct property *prop;
-+ size_t retlen;
-+ int size, ret;
-+ struct mtd_info *mtd;
-+ const char *part;
-+ const __be32 *list;
-+ phandle phandle;
-+ u32 mac_inc = 0;
-+ u8 mac[ETH_ALEN];
-+ void *addr;
-+ u32 inc_idx;
-+
-+ list = of_get_property(np, "mtd-mac-address", &size);
-+ if (!list || (size != (2 * sizeof(*list))))
-+ return NULL;
-+
-+ phandle = be32_to_cpup(list++);
-+ if (phandle)
-+ mtd_np = of_find_node_by_phandle(phandle);
-+
-+ if (!mtd_np)
-+ return NULL;
-+
-+ part = of_get_property(mtd_np, "label", NULL);
-+ if (!part)
-+ part = mtd_np->name;
-+
-+ mtd = get_mtd_device_nm(part);
-+ if (IS_ERR(mtd))
-+ return NULL;
-+
-+ ret = mtd_read(mtd, be32_to_cpup(list), 6, &retlen, mac);
-+ 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))
-+ return NULL;
-+
-+ addr = of_get_mac_addr(np, "mac-address");
-+ if (addr) {
-+ memcpy(addr, mac, ETH_ALEN);
-+ return addr;
-+ }
-+
-+ prop = kzalloc(sizeof(*prop), GFP_KERNEL);
-+ if (!prop)
-+ return NULL;
-+
-+ prop->name = "mac-address";
-+ prop->length = ETH_ALEN;
-+ prop->value = kmemdup(mac, ETH_ALEN, GFP_KERNEL);
-+ if (!prop->value || of_add_property(np, prop))
-+ goto free;
-+
-+ return prop->value;
-+free:
-+ kfree(prop->value);
-+ kfree(prop);
-+#endif
-+ return NULL;
-+}
-+
- /**
- * 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
-@@ -92,12 +166,20 @@ static const void *of_get_mac_addr_nvmem
- * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
- * but is all zeros.
- *
-+ *
-+ * 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
-+ *
- * 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;
-
-+ addr = of_get_mac_address_mtd(np);
-+ if (addr)
-+ return addr;
-+
- addr = of_get_mac_addr(np, "mac-address");
- if (addr)
- return addr;
--- /dev/null
+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
+
pinctrl-names = "default";
mtd-mac-address = <&defaultmac 0x8>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
fixed-link {
speed = <1000>;
pinctrl-names = "default";
mtd-mac-address = <&defaultmac 0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
fixed-link {
speed = <1000>;
reg = <0x00010000 0 0 0 0>;
mtd-mac-address = <&art 6>;
- mtd-mac-address-increment = <(1)>;
+ mac-address-increment = <(1)>;
};
};
};
reg = <0x00010000 0 0 0 0>;
mtd-mac-address = <&art 6>;
- mtd-mac-address-increment = <(2)>;
+ mac-address-increment = <(2)>;
};
};
};
phy-mode = "rmii";
phy-handle = <&phy0>;
mtd-mac-address = <&ath9k_cal 0xa91>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
mdio-bus {
#address-cells = <1>;
&gsw {
phy-mode = "mii";
mtd-mac-address = <&ath9k_cal 0xa91>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
&gpio {
ralink,mtd-eeprom = <&boardconfig 0x410>;
ralink,mtd-eeprom-swap;
mtd-mac-address = <&boardconfig 0x16>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
reg = <0x7000 0 0 0 0>;
qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */
mtd-mac-address = <&boardconfig 0x16>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
reg = <0x7000 0 0 0 0>;
qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */
mtd-mac-address = <&art 0x16>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
ralink,mtd-eeprom = <&boardconfig 0x410>;
ralink,mtd-eeprom-swap;
mtd-mac-address = <&boardconfig 0x16>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
ð0 {
mtd-mac-address = <&boardconfig 0x16>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&gphy0 {
ralink,mtd-eeprom = <&boardconfig 0x410>;
ralink,mtd-eeprom-swap;
mtd-mac-address = <&boardconfig 0x16>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
ð0 {
mtd-mac-address = <&urlader 0xa91>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
&gphy0 {
qca,no-eeprom;
qca,disable-5ghz;
mtd-mac-address = <&ath9k_cal 0xf100>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
};
big-endian;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&romfile 0xf100>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
};
phy-handle = <&phy1>;
phy-connection-type = "rgmii-id";
mtd-mac-address = <&hwinfo 0>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
gpio0: gpio-controller@fc00 {
phy-mode = "sgmii";
phy-handle = <&phy5>;
mtd-mac-address = <&eeprom 0>;
- mtd-mac-address-increment = <(1)>;
+ mac-address-increment = <(1)>;
};
ethernet@2 {
phy-mode = "sgmii";
phy-handle = <&phy6>;
mtd-mac-address = <&eeprom 0>;
- mtd-mac-address-increment = <(2)>;
+ mac-address-increment = <(2)>;
};
ethernet@3 {
phy-mode = "sgmii";
phy-handle = <&phy7>;
mtd-mac-address = <&eeprom 0>;
- mtd-mac-address-increment = <(3)>;
+ mac-address-increment = <(3)>;
};
};
};
mediatek,mtd-eeprom = <&factory 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&factory 0x28>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
mt76x0e@0,0 {
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&config 0xe490>;
- mtd-mac-address-increment = <(2)>;
+ mac-address-increment = <(2)>;
mediatek,mtd-eeprom = <&config 0xe05d>;
};
};
wifi@0,0 {
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&config 0xe496>;
- mtd-mac-address-increment = <(2)>;
+ mac-address-increment = <(2)>;
mediatek,mtd-eeprom = <&config 0xe083>;
led {
reg = <0x0000 0 0 0 0>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&config 0xe4a8>;
- mtd-mac-address-increment = <(2)>;
+ mac-address-increment = <(2)>;
led {
led-sources = <2>;
ieee80211-freq-limit = <5000000 6000000>;
mediatek,mtd-eeprom = <&config 0xe08e>;
mtd-mac-address = <&config 0xe50e>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
mt76x0e@0,0 {
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&config 0xe07e>;
- mtd-mac-address-increment = <(2)>;
+ mac-address-increment = <(2)>;
mediatek,mtd-eeprom = <&config 0xe08a>;
};
};
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&radio 0x8000>;
mtd-mac-address = <&rom 0xf100>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
};
pinctrl-0 = <&pa_pins>;
mtd-mac-address = <&rom 0xf100>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
&wifi {
mtd-mac-address = <&rom 0xf100>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&wifi {
mtd-mac-address = <&rom 0xf100>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
pinctrl-0 = <&pa_pins>;
mtd-mac-address = <&rom 0xf100>;
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
&wifi {
mtd-mac-address = <&rom 0xf100>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&radio 0x8000>;
mtd-mac-address = <&uboot 0x1fc00>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
ieee80211-freq-limit = <5000000 6000000>;
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe00c>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
port@2 {
&gmac0 {
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&switch0 {
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x8000>;
mtd-mac-address = <&bdinfo 0xde00>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
ieee80211-freq-limit = <5000000 6000000>;
led {
status = "okay";
label = "wan";
mtd-mac-address = <&bdinfo 0xde00>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
&wifi0 {
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&wifi1 {
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
&wifi0 {
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&wifi1 {
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
&wifi0 {
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&wifi1 {
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x0>;
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
&wifi {
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&wifi {
mtd-mac-address = <&factory 0xe006>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
&gmac0 {
mtd-mac-address = <&factory 0x4000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&switch0 {
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
port@1 {
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
port@1 {
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0x5>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe006>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe006>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
mediatek,mtd-eeprom = <&radio 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&info 0x8>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&radio 0x0>;
mtd-mac-address = <&config 0x10008>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
mediatek,mtd-eeprom = <&radio 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&config 0x10008>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&radio 0x0>;
mtd-mac-address = <&config 0x10008>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
ieee80211-freq-limit = <2400000 2500000>;
};
};
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&radio 0x8000>;
mtd-mac-address = <&config 0x10008>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
ieee80211-freq-limit = <5000000 6000000>;
};
};
phy-handle = <&ephy7>;
phy-mode = "rgmii-rxid";
mtd-mac-address = <&factory 0x22>;
- mtd-mac-address-increment = <5>;
+ mac-address-increment = <5>;
};
};
};
status = "okay";
label = "eth1";
mtd-mac-address = <&factory 0x22>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
port@2 {
status = "okay";
label = "eth2";
mtd-mac-address = <&factory 0x22>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
port@3 {
status = "okay";
label = "eth3";
mtd-mac-address = <&factory 0x22>;
- mtd-mac-address-increment = <3>;
+ mac-address-increment = <3>;
};
port@4 {
status = "okay";
label = "eth4";
mtd-mac-address = <&factory 0x22>;
- mtd-mac-address-increment = <4>;
+ mac-address-increment = <4>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
port@1 {
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0xe000>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
};
};
&wifi5 {
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <(2)>;
+ mac-address-increment = <(2)>;
};
};
&wmac {
- mtd-mac-address-increment = <(-2)>;
+ mac-address-increment = <(-2)>;
};
&esw {
mediatek,mtd-eeprom = <&factory 0x28000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&factory 0xf100>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
};
mediatek,mtd-eeprom = <&radio 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&rom 0xf100>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
};
mediatek,mtd-eeprom = <&factory 0x28000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&factory 0xf100>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
};
mediatek,mtd-eeprom = <&radio 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&rom 0xf100>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
};
mediatek,mtd-eeprom = <&radio 0x0>;
mtd-mac-address = <&config 0x2008>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
&pcie {
mediatek,mtd-eeprom = <&radio 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&config 0x2008>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
mediatek,mtd-eeprom = <&radio 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&config 0x10008>;
- mtd-mac-address-increment = <2>;
+ mac-address-increment = <2>;
};
};
mediatek,mtd-eeprom = <&radio 0x0>;
mtd-mac-address = <&config 0x10008>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ðernet {
mediatek,mtd-eeprom = <&factory 0x28000>;
ieee80211-freq-limit = <5000000 6000000>;
mtd-mac-address = <&factory 0xf100>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
};
ðernet {
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <(-1)>;
+ mac-address-increment = <(-1)>;
};
&esw {
ðernet {
status = "okay";
mtd-mac-address = <&factory 0x8004>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
port@0 {
phy-handle = <&phy0>;
ralink,mtd-eeprom = <&factory 0x0>;
ralink,5ghz = <0>;
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <1>;
+ mac-address-increment = <1>;
};
ralink,mtd-eeprom = <&factory 0x0>;
ralink,5ghz = <0>;
mtd-mac-address = <&factory 0x4>;
- mtd-mac-address-increment = <3>;
+ mac-address-increment = <3>;
};