linux/drivers/net/phy
Michael Walle 5f4d487d01 net: phy: mxl-gpy: add MDINT workaround
At least the GPY215B and GPY215C has a bug where it is still driving the
interrupt line (MDINT) even after the interrupt status register is read
and its bits are cleared. This will cause an interrupt storm.

Although the MDINT is multiplexed with a GPIO pin and theoretically we
could switch the pinmux to GPIO input mode, this isn't possible because
the access to this register will stall exactly as long as the interrupt
line is asserted. We exploit this very fact and just read a random
internal register in our interrupt handler. This way, it will be delayed
until the external interrupt line is released and an interrupt storm is
avoided.

The internal register access via the mailbox was deduced by looking at
the downstream PHY API because the datasheet doesn't mention any of
this.

Fixes: 7d901a1e87 ("net: phy: add Maxlinear GPY115/21x/24x driver")
Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20221205200453.3447866-1-michael@walle.cc
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
History 2022-12-07 20:04:11 -08:00
..
mscc net: phy: mscc: macsec: clear encryption keys when freeing a flow 2022-11-10 11:58:52 +01:00
adin.c net: move from strlcpy with unused retval to strscpy 2022-08-31 14:11:07 -07:00
adin1100.c net: phy: adin1100: add PHY IDs of adin1110/adin2111 2022-09-20 15:00:30 +02:00
amd.c net: phy: amd: remove the use of .ack_interrupt() 2020-11-17 11:37:00 -08:00
aquantia.h net: phy: Use the correct style for SPDX License Identifier 2019-11-27 11:25:48 -08: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 support for rate matching 2022-09-23 11:56:18 +01:00
at803x.c net: phy: at803x: fix error return code in at803x_probe() 2022-11-21 20:43:01 -08:00
ax88796b.c net: phy: ax88772a: fix lost pause advertisement configuration 2022-06-29 20:39:05 -07:00
bcm-cygnus.c net: phy: broadcom: remove use of ack_interrupt() 2020-11-05 16:32:39 -08:00
bcm-phy-lib.c net: move from strlcpy with unused retval to strscpy 2022-08-31 14:11:07 -07:00
bcm-phy-lib.h net: phy: broadcom: Add Broadcom PTP hooks to bcm-phy-lib 2022-06-23 20:49:02 -07:00
bcm-phy-ptp.c net: phy: Add support for 1PPS out and external timestamps 2022-06-23 20:49:02 -07:00
bcm7xxx.c net: phy: bcm7xxx: Add EPHY entry for 7712 2021-10-24 13:42:28 +01:00
bcm63xx.c net: phy: broadcom: remove use of ack_interrupt() 2020-11-05 16:32:39 -08:00
bcm87xx.c net: phy: bcm87xx: Use mmd helpers 2022-05-02 13:21:38 +02:00
bcm54140.c net: phy: broadcom: remove use of ack_interrupt() 2020-11-05 16:32:39 -08:00
bcm84881.c net: phy: bcm84881: clear settings on link down 2020-04-23 15:55:35 -07:00
broadcom.c net: phy: broadcom: Implement suspend/resume for AC131 and BCM5241 2022-08-17 11:49:23 +01:00
cicada.c net: phy: cicada: remove the use of .ack_interrupt() 2020-11-05 16:32:39 -08:00
cortina.c net: mdiobus: add clause 45 mdiobus accessors 2020-05-26 15:31:45 -07:00
davicom.c net: phy: fix space alignment issues 2021-06-16 12:34:07 -07:00
dp83tc811.c net: phy: ti: take into account all possible interrupt sources 2021-03-01 11:46:55 -08:00
dp83td510.c net: phy: dp83td510: add SQI support 2022-06-21 22:01:14 -07:00
dp83640.c dp83640: Use generic ptp_msg_is_sync() function 2022-03-07 11:31:34 +00:00
dp83640_reg.h ptp: dp83640: don't define PAGE0 2021-09-14 20:03:24 -07:00
dp83822.c net: phy: dp83822: disable MDI crossover status change interrupt 2022-10-19 18:46:17 -07:00
dp83848.c net: phy: ti: remove the use of .ack_interrupt() 2020-11-25 11:18:38 -08:00
dp83867.c net: phy: dp83867: Fix SGMII FIFO depth for non OF devices 2022-11-11 19:58:44 -08:00
dp83869.c net: phy: add support for TI DP83561-SP phy 2021-11-19 20:13:07 -08:00
et1011c.c net: phy: remove unnecessary line continuation 2021-06-16 12:34:07 -07:00
fixed_phy.c net: phy: fixed_phy: set phy_mask before calling mdiobus_register() 2022-06-13 23:11:24 -07:00
icplus.c net: phy: icplus: call phy_restore_page() when phy_select_page() fails 2021-02-22 18:47:48 -08:00
intel-xway.c net: phy: intel-xway: Add RGMII internal delay configuration 2021-07-20 07:23:16 -07:00
Kconfig net: phy: mxl-gpy: add temperature sensor 2022-06-23 20:55:18 -07:00
linkmode.c net: add linkmode helper for setting flow control advertisement 2020-02-16 19:39:44 -08:00
lxt.c net: phy: correct format of block comments 2021-06-16 12:34:07 -07:00
Makefile net: phy: broadcom: Add PTP support for some Broadcom PHYs. 2022-06-23 20:49:02 -07:00
marvell-88x2222.c net: sfp: augment SFP parsing with phy_interface_t bitmap 2022-10-03 11:08:32 +01:00
marvell.c net: phy: marvell: add sleep time after enabling the loopback bit 2022-11-15 13:14:46 +01:00
marvell10g.c net: phy: marvell10g: select host interface configuration 2022-10-03 11:08:32 +01:00
mdio-boardinfo.c net: phy: Correct function name mdiobus_register_board_info() in comment 2021-03-29 13:42:44 -07: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_bus.c net: mdio: fix undefined behavior in bit shift for __mdiobus_register 2022-11-02 20:30:51 -07:00
mdio_device.c net: mdio: fix unbalanced fwnode reference count in mdio_device_release() 2022-12-06 12:50:00 +01:00
mdio_devres.c of: mdio: provide devm_of_mdiobus_register() 2020-06-30 15:57:34 -07:00
mediatek-ge.c net: phy: mediatek: remove PHY mode check on MT7531 2022-02-15 14:21:01 +00:00
meson-gxl.c Revert "net: phy: meson-gxl: improve link-up behavior" 2022-09-01 20:55:12 -07:00
micrel.c net: phy: micrel: Fixes FIELD_GET assertion 2022-10-12 17:51:33 -07:00
microchip.c net: phy: microchip: add comments for the modified LAN88xx phy ID mask. 2022-05-10 18:57:14 -07:00
microchip_t1.c net: phy: lan87xx: change interrupt src of link_up to comm_ready 2022-09-08 11:02:44 +02:00
mii_timestamper.c net: mii_timestamper: check NULL in unregister_mii_timestamper() 2021-06-11 13:08:52 -07:00
motorcomm.c net: phy: abort loading yt8511 driver in unsupported modes 2021-05-30 14:24:38 -07:00
mxl-gpy.c net: phy: mxl-gpy: add MDINT workaround 2022-12-07 20:04:11 -08:00
national.c net: phy: correct format of block comments 2021-06-16 12:34:07 -07:00
nxp-c45-tja11xx.c net: phy: Use netif_rx(). 2022-03-06 11:05:31 +00:00
nxp-tja11xx.c net: phy: tja11xx: add interface mode and RMII REF_CLK support 2022-08-23 17:43:28 -07:00
phy-c45.c net: phy: c45 baset1: do not skip aneg configuration if clock role is not specified 2022-08-08 20:54:28 -07:00
phy-core.c net: phy: Add support for rate matching 2022-09-23 11:55:35 +01:00
phy.c net: phy: Add support for rate matching 2022-09-23 11:55:35 +01:00
phy_device.c net: mdiobus: fix unbalanced node reference count 2022-11-28 18:10:25 -08:00
phy_led_triggers.c net: phy: leds: Deduplicate link LED trigger registration 2020-10-30 10:43:37 -07:00
phylink.c net: phylink: fix PHY validation with rate adaption 2022-11-28 11:12:39 +00:00
qsemi.c net: phy: change format of some declarations 2021-06-16 12:34:07 -07:00
realtek.c net: phy: realtek: add support for RTL8211F(D)(I)-VD-CG 2022-08-22 12:47:18 +01:00
rockchip.c net: phy: Demote non-compliant kernel-doc headers 2021-05-17 14:12:39 -07:00
sfp-bus.c net: sfp: fill also 5gbase-r and 25gbase-r modes in sfp_parse_support() 2022-10-10 18:00:29 -07:00
sfp.c net: sfp: add support for multigig RollBall transceivers 2022-10-03 11:08:33 +01:00
sfp.h net: sfp: augment SFP parsing with phy_interface_t bitmap 2022-10-03 11:08:32 +01:00
smsc.c net: phy: smsc: use device-managed clock API 2022-08-31 12:19:18 -07:00
spi_ks8995.c net: phy: spi_ks8895: switch to using gpiod API 2022-09-15 11:43:51 +02:00
ste10Xp.c net: phy: fix space alignment issues 2021-06-16 12:34:07 -07:00
swphy.c Update rmk's email address in various drivers 2020-04-21 17:50:09 +01: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 genphy_no_soft_reset 2020-04-24 16:47:51 -07:00
uPD60620.c net: phy: use phy_resolve_aneg_pause() 2019-12-19 12:52:34 -08:00
vitesse.c net: phy: correct format of block comments 2021-06-16 12:34:07 -07:00
xilinx_gmii2rgmii.c net: phy: gmii2rgmii: Support PHY loopback 2021-08-20 14:31:46 +01:00