target: msm8974: Add support to use different sdc instances
Add support to configure power control registers, host controller
address based on the instance of sdc controller used.
CRs-Fixed: 495434
Change-Id: I0f450e16d4832cf29c60a25d47ada41616e24754
diff --git a/target/msm8974/init.c b/target/msm8974/init.c
index 7ef2d36..683bf5c 100644
--- a/target/msm8974/init.c
+++ b/target/msm8974/init.c
@@ -28,6 +28,7 @@
#include <debug.h>
#include <platform/iomap.h>
+#include <platform/irqs.h>
#include <platform/gpio.h>
#include <reg.h>
#include <target.h>
@@ -89,6 +90,9 @@
static uint32_t mmc_sdc_base[] =
{ MSM_SDC1_BASE, MSM_SDC2_BASE, MSM_SDC3_BASE, MSM_SDC4_BASE };
+static uint32_t mmc_sdc_pwrctl_irq[] =
+ { SDCC1_PWRCTL_IRQ, SDCC2_PWRCTL_IRQ, SDCC3_PWRCTL_IRQ, SDCC4_PWRCTL_IRQ };
+
void target_early_init(void)
{
#if WITH_DEBUG_UART
@@ -202,14 +206,11 @@
}
#if MMC_SDHCI_SUPPORT
-static target_mmc_sdhci_init()
+static void target_mmc_sdhci_init()
{
- struct mmc_config_data config;
+ struct mmc_config_data config = {0};
uint32_t soc_ver = 0;
- /* Enable sdhci mode */
- sdhci_mode_enable(1);
-
soc_ver = board_soc_version();
/*
@@ -232,12 +233,17 @@
/* Trying Slot 1*/
config.slot = 1;
- config.base = mmc_sdhci_base[config.slot - 1];
+ config.sdhc_base = mmc_sdhci_base[config.slot - 1];
+ config.pwrctl_base = mmc_sdc_base[config.slot - 1];
+ config.pwr_irq = mmc_sdc_pwrctl_irq[config.slot - 1];
if (!(dev = mmc_init(&config))) {
/* Trying Slot 2 next */
config.slot = 2;
- config.base = mmc_sdhci_base[config.slot - 1];
+ config.sdhc_base = mmc_sdhci_base[config.slot - 1];
+ config.pwrctl_base = mmc_sdc_base[config.slot - 1];
+ config.pwr_irq = mmc_sdc_pwrctl_irq[config.slot - 1];
+
if (!(dev = mmc_init(&config))) {
dprintf(CRITICAL, "mmc init failed!");
ASSERT(0);
@@ -257,8 +263,9 @@
{
return dev;
}
+
#else
-static target_mmc_mci_init()
+static void target_mmc_mci_init()
{
uint32_t base_addr;
uint8_t slot;