Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> writes: >> + if (mmc_readl(MMC_STAT) & STAT_CLK_EN) { >> + writel(STOP_CLOCK, host->base + MMC_STRPCL); >> + >> + do { >> + v = mmc_readl(MMC_STAT); >> + if (!(v & STAT_CLK_EN)) >> + break; >> + udelay(1); >> + } while (timeout--); > > please use this for timeout loops: > > uint64_t start = get_time_ns(void); > > while (!is_timeout(start, 10 * MSECOND) > poll_something(); Ok, should I do this also to the other 2 timeout loops (pxamci_read_data and pxamci_write_data), or can I use the same pattern which would give : static void pxamci_stop_clock(struct pxamci_host *host) { static const int timeout = 100000; int i; stat = mmc_readl(MMC_STAT); if (stat & STAT_CLK_EN) writel(STOP_CLOCK, host->base + MMC_STRPCL); for (i = 0; i < timeout && stat & STAT_CLK_EN; i++) stat = mmc_readl(MMC_STAT); if (stat & STAT_CLK_EN) mci_err("unable to stop clock\n"); } I have no strong opinion here, I'll follow your preference, just tell me. > Otherwise the driver looks good to me. Great. Cheers. -- Robert _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox