linux/drivers/of
Geert Uytterhoeven 66bdede495 of_mdio: Fix broken PHY IRQ in case of probe deferral
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: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-10-22 03:20:25 +01:00
..
unittest-data devicetree: Adjust status "ok" -> "okay" under drivers/of/ 2017-09-05 10:05:41 -05:00
address.c of: remove unused pci_space variable from address.c 2017-07-21 10:46:15 -05:00
base.c of: base: use of_property_read_string() 2017-07-24 09:50:34 -05:00
device.c dma-mapping updates for 4.14: 2017-09-12 13:30:06 -07:00
dynamic.c of: Convert to using %pOF instead of full_name 2017-07-18 17:09:18 -05:00
fdt_address.c
fdt.c DeviceTree for 4.13: 2017-07-07 10:37:54 -07:00
irq.c DeviceTree updates for 4.14: 2017-09-07 14:43:33 -07:00
Kconfig
Makefile of: Move OF property and graph API from base.c to property.c 2017-06-01 08:50:45 -05:00
of_mdio.c of_mdio: Fix broken PHY IRQ in case of probe deferral 2017-10-22 03:20:25 +01:00
of_net.c
of_numa.c of: fix "/cpus" reference leak in of_numa_parse_cpu_nodes() 2017-04-18 11:04:12 -05:00
of_pci_irq.c OF/PCI: Update of_irq_parse_and_map_pci() comment 2017-07-02 16:14:28 -05:00
of_pci.c of_pci: use of_property_read_u32_array() 2017-07-24 10:00:52 -05:00
of_private.h of: find_node_by_full_name rewrite to compare each level 2017-06-22 12:38:29 -05:00
of_reserved_mem.c Partially Revert "of: fix sparse warnings in fdt, irq, reserved mem, and resolver code" 2017-05-11 10:26:22 -05:00
overlay.c of: overlay: add overlay symbols to live device tree 2017-07-20 09:40:05 -05:00
pdt.c
platform.c of: Use PLATFORM_DEVID_NONE definition 2017-08-25 10:50:31 -05:00
property.c DeviceTree updates for 4.14: 2017-09-07 14:43:33 -07:00
resolver.c of: find_node_by_full_name rewrite to compare each level 2017-06-22 12:38:29 -05:00
unittest.c of: overlay: add overlay unittest data for node names and symbols 2017-07-20 09:36:13 -05:00