|
@@ -730,6 +730,24 @@ static const struct sdhci_pci_fixes sdhci_intel_byt_sd = {
|
|
|
#define INTEL_MRFLD_SD 2
|
|
|
#define INTEL_MRFLD_SDIO 3
|
|
|
|
|
|
+#ifdef CONFIG_ACPI
|
|
|
+static void intel_mrfld_mmc_fix_up_power_slot(struct sdhci_pci_slot *slot)
|
|
|
+{
|
|
|
+ struct acpi_device *device, *child;
|
|
|
+
|
|
|
+ device = ACPI_COMPANION(&slot->chip->pdev->dev);
|
|
|
+ if (!device)
|
|
|
+ return;
|
|
|
+
|
|
|
+ acpi_device_fix_up_power(device);
|
|
|
+ list_for_each_entry(child, &device->children, node)
|
|
|
+ if (child->status.present && child->status.enabled)
|
|
|
+ acpi_device_fix_up_power(child);
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline void intel_mrfld_mmc_fix_up_power_slot(struct sdhci_pci_slot *slot) {}
|
|
|
+#endif
|
|
|
+
|
|
|
static int intel_mrfld_mmc_probe_slot(struct sdhci_pci_slot *slot)
|
|
|
{
|
|
|
unsigned int func = PCI_FUNC(slot->chip->pdev->devfn);
|
|
@@ -751,6 +769,8 @@ static int intel_mrfld_mmc_probe_slot(struct sdhci_pci_slot *slot)
|
|
|
default:
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
+
|
|
|
+ intel_mrfld_mmc_fix_up_power_slot(slot);
|
|
|
return 0;
|
|
|
}
|
|
|
|