Message ID | 20210723110505.9872-1-ansuelsmth@gmail.com |
---|---|
State | New |
Headers | show |
Series | [RFC] dsa: register every port with of_platform | expand |
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index b71e87909f0e..30b1df69ace6 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -14,6 +14,7 @@ #include <linux/rtnetlink.h> #include <linux/of.h> #include <linux/of_net.h> +#include <linux/of_platform.h> #include <net/devlink.h> #include "dsa_priv.h" @@ -392,6 +393,7 @@ static int dsa_port_setup(struct dsa_port *dp) break; case DSA_PORT_TYPE_USER: + of_platform_device_create(dp->dn, NULL, NULL); of_get_mac_address(dp->dn, dp->mac); err = dsa_slave_create(dp); if (err)
The declaration of a different mac-addr using the nvmem framework is currently broken. The dsa code uses the generic of_get_mac_address where the nvmem function requires the device node to be registered in the of_platform to be found by of_find_device_by_node. Register every port in the of_platform so they can correctly found and a custom mac-addr can correctly be declared using a nvmem-cell declared in the dts. An example of this would be a device that use a specific mac-addr for the wan port and declare the source of that with a nvmem-cell. In the current state, nvmem will always fail to find the declared cell but registering the devicenode with the of_platform doesn't look correct to me so am I missing something? Is this not supported? (declaring nvmem cell for the mac-addrs in the port node) In theory it should since of_get_mac_address supports exactly that. If I'm not missing something, I see this as the only solution or change the logic of how the function in of_get_mac_address find the cell. I hope someone take care of this as currently the function doesn't work most of the time, if this workaround is not used. Since mtd now actually supports declaring of nvmem cells, we are starting to adopt this new implementation and we found this problem. Also a mediatek drivert suffer of the same problem where it does declare special mac port without using the of_platform (and so requires manual registration using the function in this patch) with the compatible "mediatek,eth-mac" Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> --- net/dsa/dsa2.c | 2 ++ 1 file changed, 2 insertions(+)