aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch
diff options
context:
space:
mode:
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-10-09 21:53:35 +0200
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-10-30 19:29:59 +0100
commit278512665094888d3c007fdd74e090496d6c811d (patch)
tree6d4f2cdddef316e07829b89c1c1a790d0db92fc3 /target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch
parent3824fa26d256d162fc0e02e46714eda7816cae4a (diff)
downloadupstream-278512665094888d3c007fdd74e090496d6c811d.tar.gz
upstream-278512665094888d3c007fdd74e090496d6c811d.tar.bz2
upstream-278512665094888d3c007fdd74e090496d6c811d.zip
kernel: remove support for kernel 4.19
We use 5.4 on all targets by default, and 4.19 has never been released in a stable version. There is no reason to keep it. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Diffstat (limited to 'target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch')
-rw-r--r--target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch133
1 files changed, 0 insertions, 133 deletions
diff --git a/target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch b/target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch
deleted file mode 100644
index 13f5640590..0000000000
--- a/target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-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/of_net.h>
- #include <linux/phy.h>
- #include <linux/export.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);
-
-@@ -48,6 +49,79 @@ static const void *of_get_mac_addr(struc
- return NULL;
- }
-
-+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
-@@ -65,11 +139,18 @@ static const void *of_get_mac_addr(struc
- * addresses. Some older U-Boots only initialized 'local-mac-address'. In
- * 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
- */
- 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;