diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c index 1683fce882..58db559ecf 100644 --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c @@ -76,10 +76,24 @@ void ag71xx_phy_stop(struct ag71xx *ag) static int ag71xx_phy_connect_fixed(struct ag71xx *ag) { - struct device *dev = &ag->pdev->dev; + struct platform_device *pdev = ag->pdev; + struct device *dev = NULL; struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag); int ret = 0; + if (!pdev) + return -ENODEV; + + dev = &pdev->dev; + + if (!dev) + return -ENODEV; + + if (!ag->phy_dev) { + pr_err("Missing PHY for %s", dev_name(dev)); + return -ENODEV; + } + /* use fixed settings */ switch (pdata->speed) { case SPEED_10: