On Mon, 16 Mar 2020 at 19:48, Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > On the Acer Aspire Switch 10 (SW5-012) microSD slot always reports the card > being write-protected even though microSD cards do not have a write-protect > switch at all. > > Add a new DMI_QUIRK_SD_NO_WRITE_PROTECT quirk which when set sets > the MMC_CAP2_NO_WRITE_PROTECT flag on the controller for the external SD > slot; and add a DMI quirk table entry which selects this quirk for the > Acer SW5-012. > > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> Applied for fixes and by adding a stable tag, thanks! Kind regards Uffe > --- > Changes in v2: > - Drop the module option to allow overridig the quirks > --- > drivers/mmc/host/sdhci-acpi.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c > index b4c1b2367066..2a2173d953f5 100644 > --- a/drivers/mmc/host/sdhci-acpi.c > +++ b/drivers/mmc/host/sdhci-acpi.c > @@ -80,6 +80,7 @@ struct sdhci_acpi_host { > > enum { > DMI_QUIRK_RESET_SD_SIGNAL_VOLT_ON_SUSP = BIT(0), > + DMI_QUIRK_SD_NO_WRITE_PROTECT = BIT(1), > }; > > static inline void *sdhci_acpi_priv(struct sdhci_acpi_host *c) > @@ -671,6 +672,18 @@ static const struct dmi_system_id sdhci_acpi_quirks[] = { > }, > .driver_data = (void *)DMI_QUIRK_RESET_SD_SIGNAL_VOLT_ON_SUSP, > }, > + { > + /* > + * The Acer Aspire Switch 10 (SW5-012) microSD slot always > + * reports the card being write-protected even though microSD > + * cards do not have a write-protect switch at all. > + */ > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), > + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire SW5-012"), > + }, > + .driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT, > + }, > {} /* Terminating entry */ > }; > > @@ -795,6 +808,9 @@ static int sdhci_acpi_probe(struct platform_device *pdev) > > if (quirks & DMI_QUIRK_RESET_SD_SIGNAL_VOLT_ON_SUSP) > c->reset_signal_volt_on_suspend = true; > + > + if (quirks & DMI_QUIRK_SD_NO_WRITE_PROTECT) > + host->mmc->caps2 |= MMC_CAP2_NO_WRITE_PROTECT; > } > > err = sdhci_setup_host(host); > -- > 2.25.1 >