On 22/11/2021 19:05, Hans de Goede wrote: > Remove the special sdhci_acpi_no_fixup_child_power() helper which was > added to avoid triggering an ACPI tables bug on the GPD win/pocket > devices. > > The ACPI child-device triggering this bug has now been added to the > acpi_device_override_status() quirk table, so that its status > field is set to all 0 (instead of the wrong return value from the _STA > ACPI method). This removes the need for the special handling in > the sdhci-acpi code. > > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > --- > Changes in v2: > - No changes in v2 of this patch-series > --- > drivers/mmc/host/sdhci-acpi.c | 61 ++--------------------------------- > 1 file changed, 3 insertions(+), 58 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c > index f1ef0d28b0dd..1461aae13c19 100644 > --- a/drivers/mmc/host/sdhci-acpi.c > +++ b/drivers/mmc/host/sdhci-acpi.c > @@ -34,7 +34,6 @@ > #include <asm/cpu_device_id.h> > #include <asm/intel-family.h> > #include <asm/iosf_mbi.h> > -#include <linux/pci.h> > #endif > > #include "sdhci.h" > @@ -250,16 +249,6 @@ static bool sdhci_acpi_byt(void) > return x86_match_cpu(byt); > } > > -static bool sdhci_acpi_cht(void) > -{ > - static const struct x86_cpu_id cht[] = { > - X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, NULL), > - {} > - }; > - > - return x86_match_cpu(cht); > -} > - > #define BYT_IOSF_SCCEP 0x63 > #define BYT_IOSF_OCP_NETCTRL0 0x1078 > #define BYT_IOSF_OCP_TIMEOUT_BASE GENMASK(10, 8) > @@ -304,43 +293,6 @@ static bool sdhci_acpi_byt_defer(struct device *dev) > return false; > } > > -static bool sdhci_acpi_cht_pci_wifi(unsigned int vendor, unsigned int device, > - unsigned int slot, unsigned int parent_slot) > -{ > - struct pci_dev *dev, *parent, *from = NULL; > - > - while (1) { > - dev = pci_get_device(vendor, device, from); > - pci_dev_put(from); > - if (!dev) > - break; > - parent = pci_upstream_bridge(dev); > - if (ACPI_COMPANION(&dev->dev) && PCI_SLOT(dev->devfn) == slot && > - parent && PCI_SLOT(parent->devfn) == parent_slot && > - !pci_upstream_bridge(parent)) { > - pci_dev_put(dev); > - return true; > - } > - from = dev; > - } > - > - return false; > -} > - > -/* > - * GPDwin uses PCI wifi which conflicts with SDIO's use of > - * acpi_device_fix_up_power() on child device nodes. Identifying GPDwin is > - * problematic, but since SDIO is only used for wifi, the presence of the PCI > - * wifi card in the expected slot with an ACPI companion node, is used to > - * indicate that acpi_device_fix_up_power() should be avoided. > - */ > -static inline bool sdhci_acpi_no_fixup_child_power(struct acpi_device *adev) > -{ > - return sdhci_acpi_cht() && > - acpi_dev_hid_uid_match(adev, "80860F14", "2") && > - sdhci_acpi_cht_pci_wifi(0x14e4, 0x43ec, 0, 28); > -} > - > #else > > static inline void sdhci_acpi_byt_setting(struct device *dev) > @@ -352,11 +304,6 @@ static inline bool sdhci_acpi_byt_defer(struct device *dev) > return false; > } > > -static inline bool sdhci_acpi_no_fixup_child_power(struct acpi_device *adev) > -{ > - return false; > -} > - > #endif > > static int bxt_get_cd(struct mmc_host *mmc) > @@ -861,11 +808,9 @@ static int sdhci_acpi_probe(struct platform_device *pdev) > > /* Power on the SDHCI controller and its children */ > acpi_device_fix_up_power(device); > - if (!sdhci_acpi_no_fixup_child_power(device)) { > - list_for_each_entry(child, &device->children, node) > - if (child->status.present && child->status.enabled) > - acpi_device_fix_up_power(child); > - } > + list_for_each_entry(child, &device->children, node) > + if (child->status.present && child->status.enabled) > + acpi_device_fix_up_power(child); > > if (sdhci_acpi_byt_defer(dev)) > return -EPROBE_DEFER; >