> > -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.