On 02/16/2016 09:18 AM, Masahiro Yamada wrote: > Hi Marek, Hi!
[...] >>> +static int uniphier_sd_wait_irq(struct uniphier_sd_priv *priv, >>> + unsigned int reg, u32 flag) >>> +{ >>> + long wait = 1000000; >>> + int ret; >> >> Replace this with wait_for_bit() please . > > > It cannot check error during the loop. > > I want to check the error flags in the loop > because no reason to wait for the time-out > if some error happens. You have a point there. I wonder if it'd make sense to extend the wait_for_bit with some callback maybe ? >>> + while (!(readl(priv->regbase + reg) & flag)) { >>> + if (wait-- < 0) { >>> + pr_err("timeout\n"); >>> + return -ETIMEDOUT; >>> + } >>> + >>> + ret = uniphier_sd_check_error(priv); >>> + if (ret) >>> + return ret; >>> + >>> + udelay(1); >>> + } >>> + >>> + return 0; >>> +} >> >> [...] >> >>> +static void uniphier_sd_dma_start(struct uniphier_sd_priv *priv, >>> + dma_addr_t dma_addr) >>> +{ >>> + u32 tmp; >>> + >>> + writel(0, priv->regbase + UNIPHIER_SD_DMA_INFO1); >>> + writel(0, priv->regbase + UNIPHIER_SD_DMA_INFO2); >>> + >>> + /* enable DMA */ >>> + tmp = readl(priv->regbase + UNIPHIER_SD_EXTMODE); >>> + tmp |= UNIPHIER_SD_EXTMODE_DMA_EN; >>> + writel(tmp, priv->regbase + UNIPHIER_SD_EXTMODE); >> >> I'd say, use setbits_le32(), but could it be that this driver is kept in >> sync with Linux ? > > Yes, I am developing the MMC driver > for Linux as well as U-Boot at the same time. > > This is the U-Boot counter-part, > although the Linux one has not been upstreamed yet. > > It can save my time to copy-paste code snippets between the two. > > I want to sync as much code as possible. Understood, thanks! _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot