mmc: sdhci-pci: Let devices define how to add the host
authorAdrian Hunter <adrian.hunter@intel.com>
Mon, 20 Mar 2017 17:50:48 +0000 (19:50 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 24 Apr 2017 19:41:36 +0000 (21:41 +0200)
SDHCI provides more flexibility than simply calling sdhci_add_host(). Make
that available by allowing devices to specify their own ->add_host()
function.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Tested-by: Ludovic Desroches <ludovic.desroches@microchip.com>
drivers/mmc/host/sdhci-pci-core.c
drivers/mmc/host/sdhci-pci.h

index 98ed90cbd9b4b0ec65c1766dcc6106a24ba5ed37..b5fd82e2612576d8839c410654ca7ac6ddbc7b00 100644 (file)
@@ -1949,7 +1949,10 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
                }
        }
 
-       ret = sdhci_add_host(host);
+       if (chip->fixes && chip->fixes->add_host)
+               ret = chip->fixes->add_host(slot);
+       else
+               ret = sdhci_add_host(host);
        if (ret)
                goto remove;
 
index da7b95016c6fc09545604f75a0a18fca16499194..d53dccb0f41634118d7e2dd8519a3428654106b0 100644 (file)
@@ -64,6 +64,7 @@ struct sdhci_pci_fixes {
        int                     (*probe) (struct sdhci_pci_chip *);
 
        int                     (*probe_slot) (struct sdhci_pci_slot *);
+       int                     (*add_host) (struct sdhci_pci_slot *);
        void                    (*remove_slot) (struct sdhci_pci_slot *, int);
 
        int                     (*suspend) (struct sdhci_pci_chip *);