static inline void FLUSH_FIFO(struct au1xmmc_host *host) { u32 val = au_readl(HOST_CONFIG2(host)); au_writel(val | SD_CONFIG2_FF, HOST_CONFIG2(host)); au_sync_delay(1); /* SEND_STOP will turn off clock control - this re-enables it */ val &= ~SD_CONFIG2_DF; au_writel(val, HOST_CONFIG2(host)); au_sync(); }
static inline void FLUSH_FIFO(struct au1xmmc_host *host) { u32 val = au_readl(HOST_CONFIG2(host)); au_writel(val | SD_CONFIG2_FF, HOST_CONFIG2(host)); au_sync_delay(1); val &= ~SD_CONFIG2_DF; au_writel(val, HOST_CONFIG2(host)); au_sync(); }
static inline void SEND_STOP(struct au1xmmc_host *host) { u32 config2; WARN_ON(host->status != HOST_S_DATA); host->status = HOST_S_STOP; config2 = au_readl(HOST_CONFIG2(host)); au_writel(config2 | SD_CONFIG2_DF, HOST_CONFIG2(host)); au_sync(); /* Send the stop commmand */ au_writel(STOP_CMD, HOST_CMD(host)); }
static inline void FLUSH_FIFO(struct au1xmmc_host *host) { u32 val = __raw_readl(HOST_CONFIG2(host)); __raw_writel(val | SD_CONFIG2_FF, HOST_CONFIG2(host)); wmb(); /* drain writebuffer */ mdelay(1); /* SEND_STOP will turn off clock control - this re-enables it */ val &= ~SD_CONFIG2_DF; __raw_writel(val, HOST_CONFIG2(host)); wmb(); /* drain writebuffer */ }
static inline void SEND_STOP(struct au1xmmc_host *host) { u32 config2; WARN_ON(host->status != HOST_S_DATA); host->status = HOST_S_STOP; config2 = __raw_readl(HOST_CONFIG2(host)); __raw_writel(config2 | SD_CONFIG2_DF, HOST_CONFIG2(host)); wmb(); /* drain writebuffer */ /* Send the stop command */ __raw_writel(STOP_CMD, HOST_CMD(host)); wmb(); /* drain writebuffer */ }
static inline void SEND_STOP(struct au1xmmc_host *host) { /* We know the value of CONFIG2, so avoid a read we don't need */ u32 mask = SD_CONFIG2_EN; WARN_ON(host->status != HOST_S_DATA); host->status = HOST_S_STOP; au_writel(mask | SD_CONFIG2_DF, HOST_CONFIG2(host)); au_sync(); /* Send the stop commmand */ au_writel(STOP_CMD, HOST_CMD(host)); }