aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/of
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/of')
-rw-r--r--drivers/of/of_mdio.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
index 495faccba763..5b3c24f3cde5 100644
--- a/drivers/of/of_mdio.c
+++ b/drivers/of/of_mdio.c
@@ -48,7 +48,7 @@ static int of_mdiobus_register_phy(struct mii_bus *mdio, struct device_node *chi
48{ 48{
49 struct phy_device *phy; 49 struct phy_device *phy;
50 bool is_c45; 50 bool is_c45;
51 int rc, prev_irq; 51 int rc;
52 u32 max_speed = 0; 52 u32 max_speed = 0;
53 53
54 is_c45 = of_device_is_compatible(child, 54 is_c45 = of_device_is_compatible(child,
@@ -58,12 +58,14 @@ static int of_mdiobus_register_phy(struct mii_bus *mdio, struct device_node *chi
58 if (!phy || IS_ERR(phy)) 58 if (!phy || IS_ERR(phy))
59 return 1; 59 return 1;
60 60
61 if (mdio->irq) { 61 rc = irq_of_parse_and_map(child, 0);
62 prev_irq = mdio->irq[addr]; 62 if (rc > 0) {
63 mdio->irq[addr] = 63 phy->irq = rc;
64 irq_of_parse_and_map(child, 0); 64 if (mdio->irq)
65 if (!mdio->irq[addr]) 65 mdio->irq[addr] = rc;
66 mdio->irq[addr] = prev_irq; 66 } else {
67 if (mdio->irq)
68 phy->irq = mdio->irq[addr];
67 } 69 }
68 70
69 /* Associate the OF node with the device structure so it 71 /* Associate the OF node with the device structure so it