Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mmc: renesas_sdhi: enable WAIT_WHILE_BUSY

Now that we got the timeout handling in the driver correct, we can use
this capability to avoid polling via the MMC core.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/20210409094606.4317-1-wsa+renesas@sang-engineering.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

authored by

Wolfram Sang and committed by
Ulf Hansson
87e985ae 5ec6fa5a

+7 -5
+2 -2
drivers/mmc/host/renesas_sdhi_internal_dmac.c
··· 97 97 TMIO_MMC_HAVE_CBSY, 98 98 .tmio_ocr_mask = MMC_VDD_32_33, 99 99 .capabilities = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 100 - MMC_CAP_CMD23, 100 + MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY, 101 101 .bus_shift = 2, 102 102 .scc_offset = 0 - 0x1000, 103 103 .taps = rcar_gen3_scc_taps, ··· 111 111 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_CLK_ACTUAL | 112 112 TMIO_MMC_HAVE_CBSY | TMIO_MMC_MIN_RCAR2, 113 113 .capabilities = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 114 - MMC_CAP_CMD23, 114 + MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY, 115 115 .capabilities2 = MMC_CAP2_NO_WRITE_PROTECT | MMC_CAP2_MERGE_CAPABLE, 116 116 .bus_shift = 2, 117 117 .scc_offset = 0x1000,
+5 -3
drivers/mmc/host/renesas_sdhi_sys_dmac.c
··· 33 33 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_32BIT_DATA_PORT | 34 34 TMIO_MMC_HAVE_CBSY, 35 35 .tmio_ocr_mask = MMC_VDD_32_33, 36 - .capabilities = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ, 36 + .capabilities = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 37 + MMC_CAP_WAIT_WHILE_BUSY, 37 38 }; 38 39 39 40 static const struct renesas_sdhi_of_data of_rcar_gen1_compatible = { 40 41 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_CLK_ACTUAL, 41 - .capabilities = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ, 42 + .capabilities = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 43 + MMC_CAP_WAIT_WHILE_BUSY, 42 44 .capabilities2 = MMC_CAP2_NO_WRITE_PROTECT, 43 45 }; 44 46 ··· 60 58 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_CLK_ACTUAL | 61 59 TMIO_MMC_HAVE_CBSY | TMIO_MMC_MIN_RCAR2, 62 60 .capabilities = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 63 - MMC_CAP_CMD23, 61 + MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY, 64 62 .capabilities2 = MMC_CAP2_NO_WRITE_PROTECT, 65 63 .dma_buswidth = DMA_SLAVE_BUSWIDTH_4_BYTES, 66 64 .dma_rx_offset = 0x2000,