diff options
author | Imre Kaloz <kaloz@openwrt.org> | 2015-05-03 17:56:32 +0000 |
---|---|---|
committer | Imre Kaloz <kaloz@openwrt.org> | 2015-05-03 17:56:32 +0000 |
commit | f86c07d8d446877fcd11906a80e7c71a6f021647 (patch) | |
tree | 5692859e51057d1fef998dd7c1b86617c160f130 /target/linux/lantiq | |
parent | 4d9694981b896ae9224be5e96bfb1e7894e0c5c1 (diff) | |
download | upstream-f86c07d8d446877fcd11906a80e7c71a6f021647.tar.gz upstream-f86c07d8d446877fcd11906a80e7c71a6f021647.tar.bz2 upstream-f86c07d8d446877fcd11906a80e7c71a6f021647.zip |
The ability to read MAC addresses from MTD is useful for other targets besides ramips and lantiq as well.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
SVN-Revision: 45596
Diffstat (limited to 'target/linux/lantiq')
-rw-r--r-- | target/linux/lantiq/patches-3.18/0027-NET-add-of_get_mac_address_mtd.patch | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/target/linux/lantiq/patches-3.18/0027-NET-add-of_get_mac_address_mtd.patch b/target/linux/lantiq/patches-3.18/0027-NET-add-of_get_mac_address_mtd.patch deleted file mode 100644 index e21082ca7e..0000000000 --- a/target/linux/lantiq/patches-3.18/0027-NET-add-of_get_mac_address_mtd.patch +++ /dev/null @@ -1,76 +0,0 @@ -From f393898476aef3e4f49c27725c3d2dd70fca38fe Mon Sep 17 00:00:00 2001 -From: John Crispin <blogic@openwrt.org> -Date: Sun, 27 Jul 2014 09:40:01 +0100 -Subject: [PATCH 27/36] NET: add of_get_mac_address_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 -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> ---- - 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 -@@ -10,6 +10,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 -@@ -75,3 +76,39 @@ const void *of_get_mac_address(struct de - return NULL; - } - EXPORT_SYMBOL(of_get_mac_address); -+ -+int of_get_mac_address_mtd(struct device_node *np, void *mac) -+{ -+ struct device_node *mtd_np = NULL; -+ size_t retlen; -+ int size, ret; -+ struct mtd_info *mtd; -+ const char *part; -+ const __be32 *list; -+ phandle phandle; -+ -+ list = of_get_property(np, "mtd-mac-address", &size); -+ if (!list || (size != (2 * sizeof(*list)))) -+ return -ENOENT; -+ -+ phandle = be32_to_cpup(list++); -+ if (phandle) -+ mtd_np = of_find_node_by_phandle(phandle); -+ -+ if (!mtd_np) -+ return -ENOENT; -+ -+ 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 PTR_ERR(mtd); -+ -+ ret = mtd_read(mtd, be32_to_cpup(list), 6, &retlen, (u_char *) mac); -+ put_mtd_device(mtd); -+ -+ return ret; -+} -+EXPORT_SYMBOL_GPL(of_get_mac_address_mtd); ---- a/include/linux/of_net.h -+++ b/include/linux/of_net.h -@@ -11,6 +11,7 @@ - #include <linux/of.h> - extern int of_get_phy_mode(struct device_node *np); - extern const void *of_get_mac_address(struct device_node *np); -+extern int of_get_mac_address_mtd(struct device_node *np, void *mac); - #else - static inline int of_get_phy_mode(struct device_node *np) - { |