diff options
author | Michael Walle <michael@walle.cc> | 2022-12-05 21:04:53 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-12-07 20:04:11 -0800 |
commit | 5f4d487d01ff5349da38f7a09ca36bf6aa2e29fb (patch) | |
tree | 000b2585a67a3d86c12b7858d9fec9e30b0e923a /drivers/net/plip/plip.c | |
parent | 65e349f766a6f63d9f8679697fce8cfba1cce672 (diff) | |
download | linux-5f4d487d01ff5349da38f7a09ca36bf6aa2e29fb.tar.bz2 |
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: 7d901a1e878a ("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>
Diffstat (limited to 'drivers/net/plip/plip.c')
0 files changed, 0 insertions, 0 deletions