diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/soc/qualcomm/sc7280/Kconfig | 3 | ||||
-rw-r--r-- | src/soc/qualcomm/sc7280/Makefile.inc | 1 | ||||
-rw-r--r-- | src/soc/qualcomm/sc7280/include/soc/addressmap.h | 3 | ||||
-rw-r--r-- | src/soc/qualcomm/sc7280/include/soc/sdhci.h | 8 | ||||
-rw-r--r-- | src/soc/qualcomm/sc7280/sdhci.c | 27 |
5 files changed, 42 insertions, 0 deletions
diff --git a/src/soc/qualcomm/sc7280/Kconfig b/src/soc/qualcomm/sc7280/Kconfig index ccba8ff9b5..985afdce80 100644 --- a/src/soc/qualcomm/sc7280/Kconfig +++ b/src/soc/qualcomm/sc7280/Kconfig @@ -21,6 +21,9 @@ config SOC_QUALCOMM_SC7280 select HAVE_UART_SPECIAL select PCI select NO_ECAM_MMCONF_SUPPORT + select COMMONLIB_STORAGE + select COMMONLIB_STORAGE_MMC + select SDHCI_CONTROLLER if SOC_QUALCOMM_SC7280 diff --git a/src/soc/qualcomm/sc7280/Makefile.inc b/src/soc/qualcomm/sc7280/Makefile.inc index bd0afe4da5..440148494d 100644 --- a/src/soc/qualcomm/sc7280/Makefile.inc +++ b/src/soc/qualcomm/sc7280/Makefile.inc @@ -55,6 +55,7 @@ ramstage-$(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT) += ../common/display/mdss.c ramstage-$(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT) += display/disp.c ramstage-$(CONFIG_PCI) += ../common/pcie_common.c ramstage-$(CONFIG_PCI) += pcie.c +ramstage-$(CONFIG_SDHCI_CONTROLLER) += sdhci.c ../common/storage/sdhci_msm.c ################################################################################ diff --git a/src/soc/qualcomm/sc7280/include/soc/addressmap.h b/src/soc/qualcomm/sc7280/include/soc/addressmap.h index 31f7d64f8f..342de9f9a4 100644 --- a/src/soc/qualcomm/sc7280/include/soc/addressmap.h +++ b/src/soc/qualcomm/sc7280/include/soc/addressmap.h @@ -91,4 +91,7 @@ /* PHY BCR */ #define GCC_PCIE_1_PHY_BCR 0x18E01C +/* eMMC base address */ +#define SDC1_HC_BASE 0x007C4000 + #endif /* __SOC_QUALCOMM_SC7280_ADDRESS_MAP_H__ */ diff --git a/src/soc/qualcomm/sc7280/include/soc/sdhci.h b/src/soc/qualcomm/sc7280/include/soc/sdhci.h new file mode 100644 index 0000000000..70635c08d3 --- /dev/null +++ b/src/soc/qualcomm/sc7280/include/soc/sdhci.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef _SOC_QUALCOMM_SC7280_SDHCI_H__ +#define _SOC_QUALCOMM_SC7280_SDHCI_H__ + +int qc_emmc_early_init(void); + +#endif // _SOC_QUALCOMM_SC7280_SDHCI_H__ diff --git a/src/soc/qualcomm/sc7280/sdhci.c b/src/soc/qualcomm/sc7280/sdhci.c new file mode 100644 index 0000000000..6e676f4feb --- /dev/null +++ b/src/soc/qualcomm/sc7280/sdhci.c @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include <commonlib/sdhci.h> +#include <commonlib/storage.h> +#include <commonlib/storage/sd_mmc.h> +#include <commonlib/storage/sdhci.h> +#include <commonlib/sd_mmc_ctrlr.h> +#include <soc/addressmap.h> +#include <soc/sdhci.h> +#include <soc/sdhci_msm.h> + +int qc_emmc_early_init(void) +{ + struct sd_mmc_ctrlr *ctrlr; + struct storage_media media = {0}; + + ctrlr = new_sdhci_msm_host((void *)(uintptr_t)SDC1_HC_BASE); + if (ctrlr == NULL) + return -1; + + media.ctrlr = ctrlr; + SET_BUS_WIDTH(ctrlr, 1); + SET_CLOCK(ctrlr, 384 * 1000); + + /* Send CMD1 */ + return mmc_send_cmd1(&media); +} |