diff options
Diffstat (limited to 'arch/arm/mach-exynos/setup-mshci-gpio.c')
-rw-r--r-- | arch/arm/mach-exynos/setup-mshci-gpio.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/arch/arm/mach-exynos/setup-mshci-gpio.c b/arch/arm/mach-exynos/setup-mshci-gpio.c index db7d86a..7984a5d 100644 --- a/arch/arm/mach-exynos/setup-mshci-gpio.c +++ b/arch/arm/mach-exynos/setup-mshci-gpio.c @@ -87,10 +87,18 @@ void exynos4_setup_mshci_cfg_ddr(struct platform_device *dev, int ddr) #elif defined(CONFIG_EXYNOS4_MSHC_VPLL_46MHZ) __raw_writel(0x01, DIV_FSYS3); #else +#ifdef CONFIG_EXYNOS4_MSHC_SUPPORT_PQPRIME_EPLL + if (soc_is_exynos4412() && + (samsung_rev() >= EXYNOS4412_REV_2_0)) + /* This is code for support PegasusQ Prime dynamically. + * PegasusQ Prime use EPLL rather than MPLL */ + __raw_writel(0x00, DIV_FSYS3); + else +#endif /* ifdef CONFIG_EXYNOS4_MSHC_SUPPORT_PQPRIME_EPLL */ if ((soc_is_exynos4412() || soc_is_exynos4212()) && - samsung_rev() >= EXYNOS4412_REV_1_0) { + samsung_rev() >= EXYNOS4412_REV_1_0) __raw_writel(0x1, DIV_FSYS3); - } else + else __raw_writel(0x05, DIV_FSYS3); #endif } else { @@ -99,8 +107,16 @@ void exynos4_setup_mshci_cfg_ddr(struct platform_device *dev, int ddr) #elif defined(CONFIG_EXYNOS4_MSHC_VPLL_46MHZ) __raw_writel(0x03, DIV_FSYS3); #else +#ifdef CONFIG_EXYNOS4_MSHC_SUPPORT_PQPRIME_EPLL + if (soc_is_exynos4412() && + (samsung_rev() >= EXYNOS4412_REV_2_0)) + /* This is code for support PegasusQ Prime dynamically. + * PegasusQ Prime use EPLL rather than MPLL */ + __raw_writel(0x01, DIV_FSYS3); + else +#endif /* ifdef CONFIG_EXYNOS4_MSHC_SUPPORT_PQPRIME_EPLL */ if ((soc_is_exynos4412() || soc_is_exynos4212()) && - samsung_rev() >= EXYNOS4412_REV_1_0) + samsung_rev() >= EXYNOS4412_REV_1_0) __raw_writel(0x3, DIV_FSYS3); else __raw_writel(0xb, DIV_FSYS3); @@ -140,8 +156,10 @@ void exynos4_setup_mshci_set_power(struct platform_device *dev, int en) if (pdata->int_power_gpio) { if (en) { -#ifdef CONFIG_MACH_Q1_BD +#if defined(CONFIG_MACH_Q1_BD) mdelay(20); +#elif defined(CONFIG_MACH_PX) + mdelay(10); #endif /*CMD/CLK*/ for (gpio = EXYNOS4_GPK0(0); gpio < EXYNOS4_GPK0(2); |