|
@@ -64,6 +64,8 @@ struct orion_mdio_dev {
|
|
|
|
|
|
struct orion_mdio_ops {
|
|
|
int (*is_done)(struct orion_mdio_dev *);
|
|
|
+ unsigned int poll_interval_min;
|
|
|
+ unsigned int poll_interval_max;
|
|
|
};
|
|
|
|
|
|
/* Wait for the SMI unit to be ready for another operation
|
|
@@ -83,8 +85,8 @@ static int orion_mdio_wait_ready(const struct orion_mdio_ops *ops,
|
|
|
break;
|
|
|
|
|
|
if (dev->err_interrupt <= 0) {
|
|
|
- usleep_range(MVMDIO_SMI_POLL_INTERVAL_MIN,
|
|
|
- MVMDIO_SMI_POLL_INTERVAL_MAX);
|
|
|
+ usleep_range(ops->poll_interval_min,
|
|
|
+ ops->poll_interval_max);
|
|
|
|
|
|
if (time_is_before_jiffies(end))
|
|
|
++timedout;
|
|
@@ -113,6 +115,8 @@ static int orion_mdio_smi_is_done(struct orion_mdio_dev *dev)
|
|
|
|
|
|
static const struct orion_mdio_ops orion_mdio_smi_ops = {
|
|
|
.is_done = orion_mdio_smi_is_done,
|
|
|
+ .poll_interval_min = MVMDIO_SMI_POLL_INTERVAL_MIN,
|
|
|
+ .poll_interval_max = MVMDIO_SMI_POLL_INTERVAL_MAX,
|
|
|
};
|
|
|
|
|
|
static int orion_mdio_read(struct mii_bus *bus, int mii_id,
|