platform: msm8994: Add sdc2 support
Add support for sdcard, sdcard is on sdc2 instance and
needs clock, tlmm pin configurations
CRs-Fixed: 714432
Change-Id: Ib51d09b242d2b6f04737b60bda19bf0342500ed4
diff --git a/target/msm8994/init.c b/target/msm8994/init.c
index 4a3a5c2..14e1df7 100644
--- a/target/msm8994/init.c
+++ b/target/msm8994/init.c
@@ -74,7 +74,7 @@
#define BOOT_DEVICE_MASK(val) ((val & 0x3E) >>1)
#define PMIC_WLED_SLAVE_ID 3
-static void set_sdc_power_ctrl(void);
+static void set_sdc_power_ctrl(uint8_t slot);
static uint32_t mmc_pwrctl_base[] =
{ MSM_SDC1_BASE, MSM_SDC2_BASE };
@@ -178,27 +178,34 @@
{
}
-static void set_sdc_power_ctrl()
+static void set_sdc_power_ctrl(uint8_t slot)
{
+ uint32_t reg = 0;
+
+ if (slot == 0x1)
+ reg = SDC1_HDRV_PULL_CTL;
+ else if (slot == 0x2)
+ reg = SDC2_HDRV_PULL_CTL;
+
/* Drive strength configs for sdc pins */
struct tlmm_cfgs sdc1_hdrv_cfg[] =
{
- { SDC1_CLK_HDRV_CTL_OFF, TLMM_CUR_VAL_16MA, TLMM_HDRV_MASK },
- { SDC1_CMD_HDRV_CTL_OFF, TLMM_CUR_VAL_10MA, TLMM_HDRV_MASK },
- { SDC1_DATA_HDRV_CTL_OFF, TLMM_CUR_VAL_10MA, TLMM_HDRV_MASK },
+ { SDC1_CLK_HDRV_CTL_OFF, TLMM_CUR_VAL_16MA, TLMM_HDRV_MASK, reg },
+ { SDC1_CMD_HDRV_CTL_OFF, TLMM_CUR_VAL_10MA, TLMM_HDRV_MASK, reg },
+ { SDC1_DATA_HDRV_CTL_OFF, TLMM_CUR_VAL_10MA, TLMM_HDRV_MASK, reg },
};
/* Pull configs for sdc pins */
struct tlmm_cfgs sdc1_pull_cfg[] =
{
- { SDC1_CLK_PULL_CTL_OFF, TLMM_NO_PULL, TLMM_PULL_MASK },
- { SDC1_CMD_PULL_CTL_OFF, TLMM_PULL_UP, TLMM_PULL_MASK },
- { SDC1_DATA_PULL_CTL_OFF, TLMM_PULL_UP, TLMM_PULL_MASK },
+ { SDC1_CLK_PULL_CTL_OFF, TLMM_NO_PULL, TLMM_PULL_MASK, reg },
+ { SDC1_CMD_PULL_CTL_OFF, TLMM_PULL_UP, TLMM_PULL_MASK, reg },
+ { SDC1_DATA_PULL_CTL_OFF, TLMM_PULL_UP, TLMM_PULL_MASK, reg },
};
struct tlmm_cfgs sdc1_rclk_cfg[] =
{
- { SDC1_RCLK_PULL_CTL_OFF, TLMM_PULL_DOWN, TLMM_PULL_MASK },
+ { SDC1_RCLK_PULL_CTL_OFF, TLMM_PULL_DOWN, TLMM_PULL_MASK, reg },
};
/* Set the drive strength & pull control values */
@@ -211,9 +218,6 @@
{
struct mmc_config_data config = {0};
- /* Set drive strength & pull ctrl values */
- set_sdc_power_ctrl();
-
config.bus_width = DATA_BUS_WIDTH_8BIT;
config.max_clk_rate = MMC_CLK_192MHZ;
@@ -224,6 +228,9 @@
config.pwr_irq = mmc_sdc_pwrctl_irq[config.slot - 1];
config.hs400_support = 1;
+ /* Set drive strength & pull ctrl values */
+ set_sdc_power_ctrl(config.slot);
+
if (!(dev = mmc_init(&config)))
{
/* Try slot 2 */
@@ -233,6 +240,9 @@
config.pwrctl_base = mmc_pwrctl_base[config.slot - 1];
config.pwr_irq = mmc_sdc_pwrctl_irq[config.slot - 1];
+ /* Set drive strength & pull ctrl values */
+ set_sdc_power_ctrl(config.slot);
+
if (!(dev = mmc_init(&config)))
{
dprintf(CRITICAL, "mmc init failed!");