> On Wed, 14 Aug 2024 at 09:31, Avri Altman <avri.altman@xxxxxxx> wrote: > > > > In Multi-Block read/write, CMD23 must precede CMD22. Therefore always > > use manual cmd23 so that we'll be able to control the sequence of > > commands. Also, add an applicable mmc_command member for both > > mmc_blk_request and mmc_request to accommodate the address extension > > command. > > > > Tested-by: Ricky WU <ricky_wu@xxxxxxxxxxx> > > Signed-off-by: Avri Altman <avri.altman@xxxxxxx> > > --- > > drivers/mmc/core/queue.h | 1 + > > drivers/mmc/host/sdhci.c | 4 ++-- > > include/linux/mmc/core.h | 1 + > > 3 files changed, 4 insertions(+), 2 deletions(-) > > Please split this up. The core changes certainly don't need to be mixed with > changes to sdhci. OK. I think switching 5 & 6 will do. Thanks, Avri > > > > > diff --git a/drivers/mmc/core/queue.h b/drivers/mmc/core/queue.h index > > 1498840a4ea0..7e191d7f0461 100644 > > --- a/drivers/mmc/core/queue.h > > +++ b/drivers/mmc/core/queue.h > > @@ -40,6 +40,7 @@ struct mmc_blk_ioc_data; struct mmc_blk_request { > > struct mmc_request mrq; > > struct mmc_command sbc; > > + struct mmc_command ext; > > struct mmc_command cmd; > > struct mmc_command stop; > > struct mmc_data data; > > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index > > 4b91c9e96635..f62b489c9e9c 100644 > > --- a/drivers/mmc/host/sdhci.c > > +++ b/drivers/mmc/host/sdhci.c > > @@ -1399,13 +1399,13 @@ static inline bool sdhci_auto_cmd12(struct > > sdhci_host *host, static inline bool sdhci_auto_cmd23(struct sdhci_host > *host, > > struct mmc_request *mrq) { > > - return mrq->sbc && (host->flags & SDHCI_AUTO_CMD23); > > + return mrq->sbc && (host->flags & SDHCI_AUTO_CMD23) && > > + !mrq->ext; > > } > > > > static inline bool sdhci_manual_cmd23(struct sdhci_host *host, > > struct mmc_request *mrq) { > > - return mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23); > > + return mrq->sbc && (mrq->ext || !(host->flags & > > + SDHCI_AUTO_CMD23)); > > } > > I am a bit worried to see that we are going to need updates in host drivers too, > to support CMD22 and SDUC cards. But if that's the case, so be it. > > In any case, at least some more information about why this approach is > needed would be nice. Done. Thanks, Avri > > > > > static inline void sdhci_auto_cmd_select(struct sdhci_host *host, > > diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h index > > 2c7928a50907..5560e70cb8d4 100644 > > --- a/include/linux/mmc/core.h > > +++ b/include/linux/mmc/core.h > > @@ -142,6 +142,7 @@ struct mmc_data { > > struct mmc_host; > > struct mmc_request { > > struct mmc_command *sbc; /* SET_BLOCK_COUNT for > multiblock */ > > + struct mmc_command *ext; /* SD_ADDR_EXT for SDUC */ > > struct mmc_command *cmd; > > struct mmc_data *data; > > struct mmc_command *stop; > > -- > > 2.25.1 > > > > Kind regards > Uffe