linux/drivers/net/phy
Florian Fainelli 3c9d360016 net: phy: re-apply PHY fixups during phy_register_device
[ Upstream commit d92f5dec63 ]

Commit 87aa9f9c61 ("net: phy: consolidate PHY reset in phy_init_hw()")
moved the call to phy_scan_fixups() in phy_init_hw() after a software
reset is performed.

By the time phy_init_hw() is called in phy_device_register(), no driver
has been bound to this PHY yet, so all the checks in phy_init_hw()
against the PHY driver and the PHY driver's config_init function will
return 0. We will therefore never call phy_scan_fixups() as we should.

Fix this by calling phy_scan_fixups() and check for its return value to
restore the intended functionality.

This broke PHY drivers which do register an early PHY fixup callback to
intercept the PHY probing and do things like changing the 32-bits unique
PHY identifier when a pseudo-PHY address has been used, as well as
board-specific PHY fixups that need to be applied during driver probe
time.

Reported-by: Hauke Merthens <hauke-m@hauke-m.de>
Reported-by: Jonas Gorski <jogo@openwrt.org>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2014-08-14 09:38:23 +08:00
..
amd.c phylib: Support registering a bunch of drivers 2012-07-09 00:10:56 -07:00
at803x.c net: phy: at803x: add suspend/resume callbacks 2013-09-27 17:28:32 -04:00
bcm63xx.c phy: bcm63xx: report Broadcom BCM63xx PHYs as internal 2013-05-27 22:42:50 -07:00
bcm87xx.c net/phy/bcm87xx: Add MODULE_LICENSE("GPL") to GPL driver 2012-09-22 15:33:46 -04:00
broadcom.c phylib: Support registering a bunch of drivers 2012-07-09 00:10:56 -07:00
cicada.c net: phy: cicada: fix checkpath errors 2013-12-18 00:49:01 -05:00
davicom.c net: phy: davicom: fix checkpath errors 2013-12-18 00:49:01 -05:00
dp83640.c net:phy:dp83640: Move all HW initialization to dp83640_config_init 2014-02-13 18:52:22 -05:00
dp83640_reg.h ptp: Added a clock driver for the National Semiconductor PHYTER. 2011-05-23 13:10:23 -07:00
et1011c.c net/phy: fix many "defined but unused" warnings 2010-10-05 00:34:29 -07:00
fixed.c phy: Use pr_<level> 2012-06-11 16:58:24 -07:00
icplus.c net: phy: icplus: fix checkpath error 2013-12-18 00:49:02 -05:00
Kconfig phy: Add MOXA MDIO driver 2013-11-07 15:37:09 -05:00
lxt.c net: phy: lxt: fix checkpath errors 2013-12-18 00:49:02 -05:00
Makefile phy: Add MOXA MDIO driver 2013-11-07 15:37:09 -05:00
marvell.c net: phy: marvell: provide genphy suspend/resume 2013-12-17 14:42:44 -05:00
mdio-bitbang.c Revert "drivers/net/phy/mdio-bitbang.c: Call mdiobus_unregister before mdiobus_free" 2012-11-14 22:32:15 -05:00
mdio-gpio.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
mdio-moxart.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
mdio-mux-gpio.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
mdio-mux-mmioreg.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
mdio-mux.c netdev/phy: skip disabled mdio-mux nodes 2012-08-20 02:16:00 -07:00
mdio-octeon.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
mdio-sun4i.c net: phy: sunxi: Add new compatibles 2014-02-06 19:46:54 -08:00
mdio_bus.c drivers/net/phy/mdio_bus.c: call put_device on device_register() failure 2014-01-30 16:56:54 -08:00
micrel.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-12-18 16:42:06 -05:00
national.c phy: Use pr_<level> 2012-06-11 16:58:24 -07:00
phy.c phy: fix compiler array bounds warning on settings[] 2014-03-06 16:07:25 -05:00
phy_device.c net: phy: re-apply PHY fixups during phy_register_device 2014-08-14 09:38:23 +08:00
qsemi.c net/phy: fix many "defined but unused" warnings 2010-10-05 00:34:29 -07:00
realtek.c PHY: Add RTL8201CP phy_driver to realtek 2013-11-11 14:05:03 -05:00
smsc.c net: phy: smsc: Fix config_init typo 2012-12-07 14:26:15 -05:00
spi_ks8995.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
ste10Xp.c phylib: Support registering a bunch of drivers 2012-07-09 00:10:56 -07:00
vitesse.c phy: Add Vitesse 8514 phy ID 2013-11-28 18:30:54 -05:00