@@ -70,6 +70,9 @@ struct orion_mdio_ops {
void (*start_read)(struct orion_mdio_dev *, int, int);
u16 (*read)(struct orion_mdio_dev *);
void (*write)(struct orion_mdio_dev *, int, int, u16);
+
+ unsigned int poll_interval_min;
+ unsigned int poll_interval_max;
};
static int orion_mdio_smi_is_done(struct orion_mdio_dev *dev)
@@ -112,6 +115,9 @@ static const struct orion_mdio_ops orion_mdio_smi_ops = {
.start_read = orion_mdio_smi_start_read_op,
.read = orion_mdio_smi_read_op,
.write = orion_mdio_smi_write_op,
+
+ .poll_interval_min = MVMDIO_SMI_POLL_INTERVAL_MIN,
+ .poll_interval_max = MVMDIO_SMI_POLL_INTERVAL_MAX,
};
/* Wait for the SMI unit to be ready for another operation
@@ -131,8 +137,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;
Put the two poll intervals (min and max) in the driver's ops structure. This is needed to add the xmdio support later. Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> --- drivers/net/ethernet/marvell/mvmdio.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)