Lee Leahy has uploaded a new change for review. ( https://review.coreboot.org/19013 )
Change subject: drivers/storage: Allow SOC to override more controller features ......................................................................
drivers/storage: Allow SOC to override more controller features
Instead of converting from SDHCI_PLATFORM_* to SDHCI_QUIRK_* to MMC_MODE_*, call the SOC back with the SdhciHost and MmcCtrlr structures to allow the necessary updates to support the controller quirks.
TEST=Build for reef
Change-Id: Ie2fc8a15727d6c487bafdf8ac5e530f1d2a73cce Signed-off-by: Lee Leahy Leroy.P.Leahy@intel.com --- M src/drivers/storage/sdhci.c M src/include/device/sdhci.h 2 files changed, 21 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/13/19013/1
diff --git a/src/drivers/storage/sdhci.c b/src/drivers/storage/sdhci.c index af5d162..f4fe256 100644 --- a/src/drivers/storage/sdhci.c +++ b/src/drivers/storage/sdhci.c @@ -713,11 +713,22 @@ if (caps & SDHCI_CAN_64BIT) host->dma64 = 1;
+ /* Let the SOC adjust the configuration to handle controller quirks */ + soc_sdhci_quirks(host); + + /* Display the results */ + mmc_trace("0x%08x: mmc_ctrlr.caps\n", host->mmc_ctrlr.caps); + mmc_trace("0x%08x: mmc_ctrlr.voltages\n", host->mmc_ctrlr.voltages); + sdhci_reset(host, SDHCI_RESET_ALL);
return 0; }
+__attribute__((weak)) void soc_sdhci_quirks(SdhciHost *host) +{ +} + static int sdhci_init(SdhciHost *host) { int rv = sdhci_pre_init(host); diff --git a/src/include/device/sdhci.h b/src/include/device/sdhci.h index 661b85d..8976db6 100644 --- a/src/include/device/sdhci.h +++ b/src/include/device/sdhci.h @@ -365,6 +365,16 @@ int sdhci_host_init(SdhciHost *host, void *ioaddr, int platform_info, int clock_min, int clock_max, int clock_base);
+/* SOC specific routine to override host->mmc_ctrlr.caps and .voltages + * + * Set/clear the necessary MMC_MODE_xxx bits in host->mmc_ctrlr.caps + * to specify the controllers capabilities and driver workarounds. + * + * Set/clear the necessary MMC_VDD_xxx bits in host->mmc_ctrlr.voltages + * to specify the controllers power support. + */ +void soc_sdhci_quirks(SdhciHost *host); + typedef uint32_t pcidev_t;
/* Add SDHCI controller from PCI */