Re: [RFC v4 4/6] mmc: core: add new calls to mmc_fixup_device(sdio_card_init_methods)

From: H. Nikolaus Schaller
Date: Mon Nov 08 2021 - 11:05:09 EST




> Am 08.11.2021 um 16:39 schrieb Jérôme Pouiller <jerome.pouiller@xxxxxxxxxx>:
>
> On Friday 5 November 2021 10:05:49 CET H. Nikolaus Schaller wrote:
>> This allows to add quirks based on device tree instead of having
>> card specific code in the host ops.
>>
>> We call it just after where host->ops->init_card() can be optionally
>> called.
>>
>> Signed-off-by: H. Nikolaus Schaller <hns@xxxxxxxxxxxxx>
>
> [...]
>> diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
>> index 68edf7a615be5..cf8ee66990508 100644
>> --- a/drivers/mmc/core/sdio.c
>> +++ b/drivers/mmc/core/sdio.c
>> @@ -707,6 +707,7 @@ static int mmc_sdio_init_card(struct mmc_host *host, u32 ocr,
>> */
>> if (host->ops->init_card)
>> host->ops->init_card(host, card);
>> + mmc_fixup_device(card, sdio_card_init_methods);
>
> sdio_read_common_cis(card) is called a bit after this line. I think it
> will overwrite all the card->cis fields. This does not conflict with what
> your are doing in wl1251_quirk()?

No, because the wl1251_quirk sets MMC_QUIRK_NONSTD_SDIO which
skips reading CIS. The key issue with the wl1251 seems to be
that it reports random CIS tuples if we try to probe without
quirks (I have no further idea about the wl1251 than moving the
quirks around...).