linux/drivers/net/phy
Alexandru Ardelean fa5bd9c5f1 net: phy: adin: implement PHY subsystem software reset
The ADIN PHYs supports 4 types of reset:
1. The standard PHY reset via BMCR_RESET bit in MII_BMCR reg
2. Reset via GPIO
3. Reset via reg GeSftRst (0xff0c) & reload previous pin configs
4. Reset via reg GeSftRst (0xff0c) & request new pin configs

Resets 2, 3 & 4 are almost identical, with the exception that the crystal
oscillator is available during reset for 2.

This change implements subsystem software reset via the GeSftRst and
reloading the previous pin configuration (so reset number 3).
This will also reset the PHY core regs (similar to reset 1).

Since writing bit 1 to reg GeSftRst is self-clearing, the only thing that
can be done, is to write to that register, wait a specific amount of time
(10 milliseconds should be enough) and try to read back and check if there
are no errors on read. A busy-wait-read won't work well, and may sometimes
work or not work.

In case phylib is configured to also do a reset via GPIO, the ADIN PHY may
be reset twice when the PHY device registers, but that isn't a problem,
since it's being done on boot (or PHY device register).

Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-08-16 11:56:26 -07:00
..
adin.c net: phy: adin: implement PHY subsystem software reset 2019-08-16 11:56:26 -07:00
amd.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
aquantia_hwmon.c net: phy: aquantia: add hwmon support 2019-02-25 14:16:22 -08:00
aquantia_main.c net: phy: aquantia: add USXGMII support and warn if XGMII mode is set 2019-05-24 13:39:34 -07:00
aquantia.h net: phy: aquantia: add hwmon support 2019-02-25 14:16:22 -08:00
at803x.c net: mdio: rename mdio_device reset to reset_gpio 2019-04-18 17:42:54 -07:00
ax88796b.c net: phy: rename Asix Electronics PHY driver 2019-06-09 13:24:17 -07:00
bcm7xxx.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
bcm63xx.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
bcm87xx.c net: phy: bcm87xx: improve bcm87xx_config_init and feature detection 2019-05-26 21:56:41 -07:00
bcm-cygnus.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
bcm-phy-lib.c net: phy: Prepare for moving Omega out of bcm7xxx 2019-03-21 13:41:26 -07:00
bcm-phy-lib.h net: phy: Prepare for moving Omega out of bcm7xxx 2019-03-21 13:41:26 -07:00
broadcom.c net: phy: broadcom: Add genphy_suspend and genphy_resume for BCM5464 2019-06-09 20:05:19 -07:00
cicada.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
cortina.c net: phy: remove gen10g_no_soft_reset 2019-03-03 21:47:57 -08:00
davicom.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
dp83tc811.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
dp83640_reg.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dp83640.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
dp83822.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
dp83848.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
dp83867.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-05-31 10:49:43 -07:00
et1011c.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
fixed_phy.c net: phy: fixed_phy: print gpio error only if gpio node is present 2019-07-30 09:54:45 -07:00
icplus.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
intel-xway.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
Kconfig net: phy: adin: add support for Analog Devices PHYs 2019-08-16 11:56:25 -07:00
lxt.c net: phy: lxt: Add suspend/resume support to LXT971 and LXT973. 2019-05-23 09:19:21 -07:00
Makefile net: phy: adin: add support for Analog Devices PHYs 2019-08-16 11:56:25 -07:00
marvell10g.c net: phy: marvell10g: report if the PHY fails to boot firmware 2019-05-29 14:25:10 -07:00
marvell.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-05-02 22:14:21 -04:00
mdio_bus.c net: mdio: rename mdio_device reset to reset_gpio 2019-04-18 17:42:54 -07:00
mdio_device.c net: mdio: rename mdio_device reset to reset_gpio 2019-04-18 17:42:54 -07:00
mdio-aspeed.c net: phy: Add mdio-aspeed 2019-08-02 17:56:28 -07:00
mdio-bcm-iproc.c net: phy: Remove redundent License text when SPDX header is present 2019-01-22 20:53:08 -08:00
mdio-bcm-unimac.c net: phy: mdio-bcm-unimac: remove redundant !timeout check 2019-03-27 14:27:30 -07:00
mdio-bitbang.c net: phy: Fixup GPLv2 SPDX tags based on license text 2019-01-22 20:58:40 -08:00
mdio-boardinfo.c net: phy: Convert some PHY and MDIO driver files to SPDX headers 2019-01-22 20:53:08 -08:00
mdio-boardinfo.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mdio-cavium.c net: phy: Add SDPX tag based on COPYING file 2019-01-22 20:59:18 -08:00
mdio-cavium.h net: mdio-octeon: Fix Kconfig warnings and build errors 2019-08-06 14:11:08 -07:00
mdio-gpio.c net: phy: Fixup GPLv2 SPDX tags based on license text 2019-01-22 20:58:40 -08:00
mdio-hisi-femac.c net: phy: Fixup GPLv2+ SPDX tags based on license text 2019-01-22 20:57:03 -08:00
mdio-i2c.c net: phy: Convert some PHY and MDIO driver files to SPDX headers 2019-01-22 20:53:08 -08:00
mdio-i2c.h net: phy: Convert some PHY and MDIO driver files to SPDX headers 2019-01-22 20:53:08 -08:00
mdio-moxart.c net: phy: Fixup GPLv2 SPDX tags based on license text 2019-01-22 20:58:40 -08:00
mdio-mscc-miim.c drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
mdio-mux-bcm-iproc.c net: phy: Convert some PHY and MDIO driver files to SPDX headers 2019-01-22 20:53:08 -08:00
mdio-mux-gpio.c net: phy: Add SDPX tag based on COPYING file 2019-01-22 20:59:18 -08:00
mdio-mux-meson-g12a.c net: meson: fixup g12a glue ephy id 2019-05-13 09:12:19 -07:00
mdio-mux-mmioreg.c net: phy: Convert some PHY and MDIO driver files to SPDX headers 2019-01-22 20:53:08 -08:00
mdio-mux-multiplexer.c drivers: net: phy: mdio-mux: Add support for Generic Mux controls 2019-02-27 12:52:20 -08:00
mdio-mux.c net: phy: Add SDPX tag based on COPYING file 2019-01-22 20:59:18 -08:00
mdio-octeon.c net: phy: Add SDPX tag based on COPYING file 2019-01-22 20:59:18 -08:00
mdio-sun4i.c net: phy: Fixup GPLv2 SPDX tags based on license text 2019-01-22 20:58:40 -08:00
mdio-thunder.c net: phy: Add SDPX tag based on COPYING file 2019-01-22 20:59:18 -08:00
mdio-xgene.c net: phy: xgene: use devm_platform_ioremap_resource() to simplify code 2019-08-01 13:10:34 -04:00
mdio-xgene.h net: phy: Convert some PHY and MDIO driver files to SPDX headers 2019-01-22 20:53:08 -08:00
meson-gxl.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
micrel.c net: phy: micrel: make sure the factory test bit is cleared 2019-04-29 23:17:21 -04:00
microchip_t1.c net: phy: remove flag PHY_HAS_INTERRUPT from driver configs 2018-11-11 09:36:56 -08:00
microchip.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
mscc.c net: phy: mscc: initialize stats array 2019-07-24 15:25:44 -07:00
national.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
nxp-tja11xx.c net: phy: tja11xx: Switch to HWMON_CHANNEL_INFO() 2019-05-29 22:02:18 -07:00
phy_device.c net: phy: read MII_CTRL1000 in genphy_read_status only if needed 2019-08-15 11:41:49 -07:00
phy_led_triggers.c net: phy: phy_led_triggers: Fix a possible null-pointer dereference in phy_led_trigger_change_speed() 2019-07-31 18:56:11 -04:00
phy-c45.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
phy-core.c net: phy: add phy_speed_down_core and phy_resolve_min_speed 2019-08-13 17:14:06 -07:00
phy.c net: phy: let phy_speed_down/up support speeds >1Gbps 2019-08-13 17:14:06 -07:00
phylink.c net: phylink: Fix flow control for fixed-link 2019-07-27 14:27:51 -07:00
qsemi.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
realtek.c net: phy: realtek: add support for EEE registers on integrated PHY's 2019-08-15 11:48:30 -07:00
rockchip.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
sfp-bus.c net: sfp: remove sfp-bus use of netdevs 2019-05-31 12:37:46 -07:00
sfp.c net: phy: sfp: hwmon: Fix scaling of RX power 2019-07-21 11:51:50 -07:00
sfp.h net: sfp: do not probe SFP module before we're attached 2019-02-08 15:11:25 -08:00
smsc.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
spi_ks8995.c spi: Micrel eth switch: declare missing of table 2019-04-23 10:44:44 -07:00
ste10Xp.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
swphy.c net: phy: swphy: emulate register MII_ESTATUS 2019-08-15 11:43:48 -07:00
swphy.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
teranetics.c net: phy: remove gen10g_no_soft_reset 2019-03-03 21:47:57 -08:00
uPD60620.c net: phy: switch drivers to use dynamic feature detection 2019-04-15 17:19:54 -07:00
vitesse.c net: phy: vitesse: Remove support for VSC8514. 2019-04-23 10:47:58 -07:00
xilinx_gmii2rgmii.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-02-20 00:34:07 -08:00