On Tue, 14 Sept 2021 at 20:20, Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> wrote: > > There was a helper in the block layer already, but we need it in other > parts soon as well. So, make it more generic by adding the 'retries' > parameter and add the helper to mmc_ops. > > Signed-off-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> > --- > drivers/mmc/core/block.c | 14 +------------- > drivers/mmc/core/mmc_ops.h | 14 ++++++++++++++ > 2 files changed, 15 insertions(+), 13 deletions(-) > > diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c > index 431af5e8be2f..58f1aa5ac33f 100644 > --- a/drivers/mmc/core/block.c > +++ b/drivers/mmc/core/block.c > @@ -1642,18 +1642,6 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, > #define MMC_DATA_RETRIES 2 > #define MMC_NO_RETRIES (MMC_MAX_RETRIES + 1) > > -static int mmc_blk_send_stop(struct mmc_card *card, unsigned int timeout) > -{ > - struct mmc_command cmd = { > - .opcode = MMC_STOP_TRANSMISSION, > - .flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC, > - /* Some hosts wait for busy anyway, so provide a busy timeout */ > - .busy_timeout = timeout, > - }; > - > - return mmc_wait_for_cmd(card->host, &cmd, 5); > -} > - > static int mmc_blk_fix_state(struct mmc_card *card, struct request *req) > { > struct mmc_queue_req *mqrq = req_to_mmc_queue_req(req); > @@ -1663,7 +1651,7 @@ static int mmc_blk_fix_state(struct mmc_card *card, struct request *req) > > mmc_retune_hold_now(card->host); > > - mmc_blk_send_stop(card, timeout); > + mmc_send_stop(card->host, timeout, 5); > > err = mmc_poll_for_busy(card, timeout, false, MMC_BUSY_IO); > > diff --git a/drivers/mmc/core/mmc_ops.h b/drivers/mmc/core/mmc_ops.h > index ae25ffc2e870..6e9d1b6b9e55 100644 > --- a/drivers/mmc/core/mmc_ops.h > +++ b/drivers/mmc/core/mmc_ops.h > @@ -9,6 +9,7 @@ > #define _MMC_MMC_OPS_H > > #include <linux/types.h> > +#include <linux/mmc/mmc.h> > > enum mmc_busy_cmd { > MMC_BUSY_CMD6, > @@ -57,5 +58,18 @@ int mmc_cmdq_enable(struct mmc_card *card); > int mmc_cmdq_disable(struct mmc_card *card); > int mmc_sanitize(struct mmc_card *card, unsigned int timeout_ms); > > +static inline int mmc_send_stop(struct mmc_host *host, unsigned int timeout, Nitpick: Would you mind renaming timeout to timeout_ms, as to clarify its unit. > + unsigned int retries) > +{ > + struct mmc_command cmd = { > + .opcode = MMC_STOP_TRANSMISSION, > + .flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC, > + /* Some hosts wait for busy anyway, so provide a busy timeout */ > + .busy_timeout = timeout, > + }; > + > + return mmc_wait_for_cmd(host, &cmd, retries); > +} > + > #endif > > -- > 2.30.2 > Otherwise, this looks good to me! Kind regards Uffe