summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/cpu/armv7/tegra-common/ap20.c14
-rw-r--r--arch/arm/include/asm/arch-tegra/tegra.h3
2 files changed, 15 insertions, 2 deletions
diff --git a/arch/arm/cpu/armv7/tegra-common/ap20.c b/arch/arm/cpu/armv7/tegra-common/ap20.c
index a3e7858e63..fb836963c8 100644
--- a/arch/arm/cpu/armv7/tegra-common/ap20.c
+++ b/arch/arm/cpu/armv7/tegra-common/ap20.c
@@ -78,6 +78,13 @@ static struct clk_pll_table tegra_pll_x_table[TEGRA_SOC_COUNT]
{ 0x198, 12, 0, 8},
{ 0x198, 26, 0, 8},
},
+
+ /* TEGRA_SOC2_SLOW: 312 MHz */
+ {{ 312, 13, 0, 12}, /* OSC 13M */
+ { 260, 16, 0, 8}, /* OSC 19.2M */
+ { 312, 12, 0, 12}, /* OSC 12M */
+ { 312, 26, 0, 12}, /* OSC 26M */
+ },
};
enum tegra_family_t {
@@ -147,9 +154,14 @@ void ap20_init_pllx(int slow)
/* get chip type. If unknown, assign to T20 */
chip_type = tegra_get_chip_type();
- if (slow || chip_type == TEGRA_SOC_UNKNOWN)
+ if (chip_type == TEGRA_SOC_UNKNOWN)
chip_type = TEGRA_SOC_T20;
+ /* slow mode only works on T2x now */
+ if (slow && ((chip_type == TEGRA_SOC_T20) ||
+ (chip_type == TEGRA_SOC_T25)))
+ chip_type = TEGRA_SOC2_SLOW;
+
/* get osc freq */
osc = clock_get_osc_freq();
diff --git a/arch/arm/include/asm/arch-tegra/tegra.h b/arch/arm/include/asm/arch-tegra/tegra.h
index e9a5edb216..317b24f02d 100644
--- a/arch/arm/include/asm/arch-tegra/tegra.h
+++ b/arch/arm/include/asm/arch-tegra/tegra.h
@@ -83,7 +83,8 @@ enum {
TEGRA_SOC_T20,
TEGRA_SOC_T25,
TEGRA_SOC_T30,
- TEGRA_SOC_T30_408MHZ, /* A T30 with faster PLLP */
+ TEGRA_SOC_T30_408MHZ, /* A T30 with faster PLLP */
+ TEGRA_SOC2_SLOW, /* T2x needs to run at slow clock initially */
TEGRA_SOC_COUNT,
TEGRA_SOC_UNKNOWN = -1,