@@ -82,6 +82,42 @@ static int smc911x_miiphy_write(struct eth_device *dev,
return 0;
}
+static int smc911x_miiphy_read_byname(char *devname, unsigned char addr,
+ unsigned char reg, unsigned short *value)
+{
+ struct eth_device *dev;
+
+ if (devname == NULL)
+ return -1;
+
+ dev = eth_get_dev_by_name(devname);
+
+ if (dev == NULL) {
+ printf(DRIVERNAME ": device %s not found\n", devname);
+ return -1;
+ }
+
+ return smc911x_miiphy_read(dev, addr, reg, value);
+}
+
+static int smc911x_miiphy_write_byname(char *devname, unsigned char addr,
+ unsigned char reg, unsigned short value)
+{
+ struct eth_device *dev;
+
+ if (devname == NULL)
+ return -1;
+
+ dev = eth_get_dev_by_name(devname);
+
+ if (dev == NULL) {
+ printf(DRIVERNAME ": device %s not found\n", devname);
+ return -1;
+ }
+
+ return smc911x_miiphy_write(dev, addr, reg, value);
+}
+
static int smc911x_phy_reset(struct eth_device *dev)
{
u32 reg;
@@ -273,5 +309,10 @@ int smc911x_initialize(u8 dev_num, int base_addr)
sprintf(dev->name, "%s-%hu", DRIVERNAME, dev_num);
eth_register(dev);
+
+#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
+ miiphy_register(dev->name, smc911x_miiphy_read_byname, smc911x_miiphy_write_byname);
+#endif
+
return 1;
}
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it> --- This patch is my implementation of the same functionality that Helmut's patch implements. I'm sending it as a reference for him to look at the error checking code and possibly merge it into his own patch. drivers/net/smc911x.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 41 insertions(+), 0 deletions(-)