> > -static int ksz9477_wait_vlan_ctrl_ready(struct ksz_device *dev, u32
> waiton,
> > - int timeout)
> > -{
> > - u8 data;
> > -
> > - do {
> > - ksz_read8(dev, REG_SW_VLAN_CTRL, &data);
> > - if (!(data & waiton))
> > - break;
> > - usleep_range(1, 10);
> > - } while (timeout-- > 0);
> > -
> > - if (timeout <= 0)
> > - return -ETIMEDOUT;
> > -
> > - return 0;
>
> Hi Tristram
>
> I think it would be better to keep ksz9477_wait_vlan_ctrl_ready(),
> ksz9477_wait_alu_ready() etc, and change there implementation to use
> readx_poll_timeout(). The function names act as better documentation
> for what we are waiting for than the parameters being passed to
> readx_poll_timeout().
The macro readx_poll_timeout() was suggested when the MIB counter read timeout
code was implemented. It is a little awkward to use with ksz_read as the macro
was designed to use with readb, readw, and readl call.
Maybe the whole macro can be copied and modified to accommodate ksz_read?
In the spirit of always updating the driver with better code the ksz9477_wait_
functions are also replaced to use readx_poll_timeout(). If the function code
is just replaced with a macro inside there is not much point to declare the
code as a function.
I think I just leave the old code as is.