Message ID | 20220111171424.862764-2-Jerome.Pouiller@silabs.com (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Kalle Valo |
Headers | show |
Series | wfx: get out from the staging area | expand |
On Tue, 11 Jan 2022 at 18:14, Jerome Pouiller <Jerome.Pouiller@silabs.com> wrote: > > From: Jérôme Pouiller <jerome.pouiller@silabs.com> > > Note that the values used by Silabs are uncommon. A driver cannot fully > rely on the SDIO PnP. It should also check if the device is declared in > the DT. > > So, to apply the quirks necessary for the Silabs WF200, we rely on the > DT rather than on the SDIO VID/PID. > > Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> I guess the series is getting close to getting queued up? As an option to make sure $subject patch doesn't cause a problem for that, I can queue it up and send it for the 5.17-rcs or if Kalle prefer to carry this in this tree with my ack? Kalle? Kind regards Uffe > --- > drivers/mmc/core/quirks.h | 5 +++++ > include/linux/mmc/sdio_ids.h | 7 +++++++ > 2 files changed, 12 insertions(+) > > diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h > index 20f568727277..f879dc63d936 100644 > --- a/drivers/mmc/core/quirks.h > +++ b/drivers/mmc/core/quirks.h > @@ -149,6 +149,11 @@ static const struct mmc_fixup __maybe_unused sdio_fixup_methods[] = { > static const struct mmc_fixup __maybe_unused sdio_card_init_methods[] = { > SDIO_FIXUP_COMPATIBLE("ti,wl1251", wl1251_quirk, 0), > > + SDIO_FIXUP_COMPATIBLE("silabs,wf200", add_quirk, > + MMC_QUIRK_BROKEN_BYTE_MODE_512 | > + MMC_QUIRK_LENIENT_FN0 | > + MMC_QUIRK_BLKSZ_FOR_BYTE_MODE), > + > END_FIXUP > }; > > diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h > index a85c9f0bd470..483692f3002a 100644 > --- a/include/linux/mmc/sdio_ids.h > +++ b/include/linux/mmc/sdio_ids.h > @@ -25,6 +25,13 @@ > * Vendors and devices. Sort key: vendor first, device next. > */ > > +/* > + * Silabs does not use a reliable vendor ID. To avoid conflicts, the driver > + * won't probe the device if it is not also declared in the DT. > + */ > +#define SDIO_VENDOR_ID_SILABS 0x0000 > +#define SDIO_DEVICE_ID_SILABS_WF200 0x1000 > + > #define SDIO_VENDOR_ID_STE 0x0020 > #define SDIO_DEVICE_ID_STE_CW1200 0x2280 > > -- > 2.34.1 >
Ulf Hansson <ulf.hansson@linaro.org> writes: > On Tue, 11 Jan 2022 at 18:14, Jerome Pouiller > <Jerome.Pouiller@silabs.com> wrote: >> >> From: Jérôme Pouiller <jerome.pouiller@silabs.com> >> >> Note that the values used by Silabs are uncommon. A driver cannot fully >> rely on the SDIO PnP. It should also check if the device is declared in >> the DT. >> >> So, to apply the quirks necessary for the Silabs WF200, we rely on the >> DT rather than on the SDIO VID/PID. >> >> Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> > > I guess the series is getting close to getting queued up? > > As an option to make sure $subject patch doesn't cause a problem for > that, I can queue it up and send it for the 5.17-rcs or if Kalle > prefer to carry this in this tree with my ack? > > Kalle? The easiest is if you can take it to your tree, tack!
diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h index 20f568727277..f879dc63d936 100644 --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h @@ -149,6 +149,11 @@ static const struct mmc_fixup __maybe_unused sdio_fixup_methods[] = { static const struct mmc_fixup __maybe_unused sdio_card_init_methods[] = { SDIO_FIXUP_COMPATIBLE("ti,wl1251", wl1251_quirk, 0), + SDIO_FIXUP_COMPATIBLE("silabs,wf200", add_quirk, + MMC_QUIRK_BROKEN_BYTE_MODE_512 | + MMC_QUIRK_LENIENT_FN0 | + MMC_QUIRK_BLKSZ_FOR_BYTE_MODE), + END_FIXUP }; diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h index a85c9f0bd470..483692f3002a 100644 --- a/include/linux/mmc/sdio_ids.h +++ b/include/linux/mmc/sdio_ids.h @@ -25,6 +25,13 @@ * Vendors and devices. Sort key: vendor first, device next. */ +/* + * Silabs does not use a reliable vendor ID. To avoid conflicts, the driver + * won't probe the device if it is not also declared in the DT. + */ +#define SDIO_VENDOR_ID_SILABS 0x0000 +#define SDIO_DEVICE_ID_SILABS_WF200 0x1000 + #define SDIO_VENDOR_ID_STE 0x0020 #define SDIO_DEVICE_ID_STE_CW1200 0x2280