On Wed, 10 Jul 2024 at 07:21, Daniel Kucera <linux-mmc@xxxxxxxxx> wrote: > > On 2024-07-09 22:06, Avri Altman wrote: > >> If I understand correctly, there is no point in sending the CMD13 > >> above, unless > >> this is the first attempt to initialize the card. > >> Therefore, it's better to move the whole part above, inside the below > >> if-clause > >> too, otherwise we would end up sending a CMD13 in cases when it's not > >> needed. > > R1_CARD_IS_LOCKED is CMD13 response, but already in CMD7 response as > > well, > > So theoretically you want to skip mmc_sd_setup_card altogether. > > Do you mean to modify: > mmc_select_card(struct mmc_card *card) > to somehow return or save the R1 response to card struct? I quite like this, as it avoids us from sending an unnecessary command during initialization. A suggestion is to let _mmc_select_card() take an additional out-parameter to provide the card's status. Then we can let mmc_select_card() parse the status - and if it finds that the card is locked, it can set a new state in card->state (similar to how we use MMC_STATE_BLOCKADDR, for example). In another future step, we may also want to keep track of whether a locked card becomes unlocked. Using the card->state should work fine for that too, I think. [...] Kind regards Uffe