generic: ar8216: introduce qca,mib-poll-interval property
[openwrt/.git] / target / linux / generic / files / drivers / net / phy / ar8216.c
index 259adef8225901dc1b8cc7df4341a87ecd3f4a43..a2c42d18e6c3570ff39132cb7e1299d52c391c53 100644 (file)
@@ -2208,7 +2208,7 @@ ar8xxx_mib_work_func(struct work_struct *work)
 next_attempt:
        mutex_unlock(&priv->mib_lock);
        schedule_delayed_work(&priv->mib_work,
-                             msecs_to_jiffies(AR8XXX_MIB_WORK_DELAY));
+                             msecs_to_jiffies(priv->mib_poll_interval));
 }
 
 static int
@@ -2238,7 +2238,7 @@ ar8xxx_mib_start(struct ar8xxx_priv *priv)
                return;
 
        schedule_delayed_work(&priv->mib_work,
-                             msecs_to_jiffies(AR8XXX_MIB_WORK_DELAY));
+                             msecs_to_jiffies(priv->mib_poll_interval));
 }
 
 static void
@@ -2513,6 +2513,11 @@ ar8xxx_phy_probe(struct phy_device *phydev)
        priv->mii_bus = phydev->mdio.bus;
        priv->pdev = &phydev->mdio.dev;
 
+       ret = of_property_read_u32(priv->pdev->of_node, "qca,mib-poll-interval",
+                                  &priv->mib_poll_interval);
+       if (ret)
+               priv->mib_poll_interval = AR8XXX_MIB_WORK_DELAY;
+
        ret = ar8xxx_id_chip(priv);
        if (ret)
                goto free_priv;
@@ -2680,6 +2685,11 @@ ar8xxx_mdiodev_probe(struct mdio_device *mdiodev)
        priv->pdev = &mdiodev->dev;
        priv->chip = (const struct ar8xxx_chip *) match->data;
 
+       ret = of_property_read_u32(priv->pdev->of_node, "qca,mib-poll-interval",
+                                  &priv->mib_poll_interval);
+       if (ret)
+               priv->mib_poll_interval = AR8XXX_MIB_WORK_DELAY;
+
        ret = ar8xxx_read_id(priv);
        if (ret)
                goto free_priv;