• Geert Uytterhoeven's avatar
    of_mdio: Fix broken PHY IRQ in case of probe deferral · 66bdede4
    Geert Uytterhoeven authored
    If an Ethernet PHY is initialized before the interrupt controller it is
    connected to, a message like the following is printed:
    
        irq: no irq domain found for /interrupt-controller@e61c0000 !
    
    However, the actual error is ignored, leading to a non-functional (POLL)
    PHY interrupt later:
    
        Micrel KSZ8041RNLI ee700000.ethernet-ffffffff:01: attached PHY driver [Micrel KSZ8041RNLI] (mii_bus:phy_addr=ee700000.ethernet-ffffffff:01, irq=POLL)
    
    Depending on whether the PHY driver will fall back to polling, Ethernet
    may or may not work.
    
    To fix this:
      1. Switch of_mdiobus_register_phy() from irq_of_parse_and_map() to
         of_irq_get().
         Unlike the former, the latter returns -EPROBE_DEFER if the
         interrupt controller is not yet available, so this condition can be
         detected.
         Other errors are handled the same as before, i.e. use the passed
         mdio->irq[addr] as interrupt.
      2. Propagate and handle errors from of_mdiobus_register_phy() and
         of_mdiobus_register_device().
    Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    66bdede4
Name
Last commit
Last update
Documentation Loading commit data...
arch Loading commit data...
block Loading commit data...
certs Loading commit data...
crypto Loading commit data...
drivers Loading commit data...
firmware Loading commit data...
fs Loading commit data...
include Loading commit data...
init Loading commit data...
ipc Loading commit data...
kernel Loading commit data...
lib Loading commit data...
mm Loading commit data...
net Loading commit data...
samples Loading commit data...
scripts Loading commit data...
security Loading commit data...
sound Loading commit data...
tools Loading commit data...
usr Loading commit data...
virt Loading commit data...
.cocciconfig Loading commit data...
.get_maintainer.ignore Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
Kbuild Loading commit data...
Kconfig Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README Loading commit data...