diff options
Diffstat (limited to 'drivers/net/phy')
-rw-r--r-- | drivers/net/phy/fixed_phy.c | 6 | ||||
-rw-r--r-- | drivers/net/phy/phy_device.c | 8 |
2 files changed, 5 insertions, 9 deletions
diff --git a/drivers/net/phy/fixed_phy.c b/drivers/net/phy/fixed_phy.c index 9050f21..2d2e433 100644 --- a/drivers/net/phy/fixed_phy.c +++ b/drivers/net/phy/fixed_phy.c @@ -255,7 +255,8 @@ int fixed_phy_add(unsigned int irq, int phy_addr, memset(fp->regs, 0xFF, sizeof(fp->regs[0]) * MII_REGS_NUM); - fmb->mii_bus->irq[phy_addr] = irq; + if (irq != PHY_POLL) + fmb->mii_bus->irq[phy_addr] = irq; fp->addr = phy_addr; fp->status = *status; @@ -314,6 +315,9 @@ struct phy_device *fixed_phy_register(unsigned int irq, int phy_addr; int ret; + if (!fmb->mii_bus || fmb->mii_bus->state != MDIOBUS_REGISTERED) + return ERR_PTR(-EPROBE_DEFER); + /* Get the next available PHY address, up to PHY_MAX_ADDR */ spin_lock(&phy_fixed_addr_lock); if (phy_fixed_addr == PHY_MAX_ADDR) { diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 307f72a..e977ba9 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -34,7 +34,6 @@ #include <linux/io.h> #include <linux/uaccess.h> #include <linux/of.h> -#include <linux/gpio/consumer.h> #include <asm/irq.h> @@ -1571,16 +1570,9 @@ static int phy_probe(struct device *dev) struct device_driver *drv = phydev->mdio.dev.driver; struct phy_driver *phydrv = to_phy_driver(drv); int err = 0; - struct gpio_descs *reset_gpios; phydev->drv = phydrv; - /* take phy out of reset */ - reset_gpios = devm_gpiod_get_array_optional(dev, "reset", - GPIOD_OUT_LOW); - if (IS_ERR(reset_gpios)) - return PTR_ERR(reset_gpios); - /* Disable the interrupt if the PHY doesn't support it * but the interrupt is still a valid one */ |