Commit 28bd2c34 authored by Sekhar Nori's avatar Sekhar Nori Committed by Kevin Hilman

davinci: am18x/da850/omap-l138 evm: add support for higher speed grades

Apart from the regular AM18x/DA850/OMAP-L138 SoC operating
at 300MHz, these SoCs have variants that can operate at a
maximum of 456MHz. Variants at 408Mhz and 375 Mhz are available
as well.

Not all silicon is qualified to run at higher speeds and
unfortunately the maximum speed the chip can support can only
be determined from the label on the package (not software
readable).

The EVM hardware for all these variants is the same (except
for the actual SoC populated).

U-Boot on the EVM sets up ATAG_REVISION to inform the OS
regarding the speed grade supported by the silicon. We use
this information to pass on the speed grade information to
the SoC code.
Signed-off-by: default avatarSekhar Nori <nsekhar@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
parent 39e14550
...@@ -822,7 +822,7 @@ static struct regulator_init_data tps65070_regulator_data[] = { ...@@ -822,7 +822,7 @@ static struct regulator_init_data tps65070_regulator_data[] = {
{ {
.constraints = { .constraints = {
.min_uV = 950000, .min_uV = 950000,
.max_uV = 1320000, .max_uV = 1350000,
.valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE | .valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE |
REGULATOR_CHANGE_STATUS), REGULATOR_CHANGE_STATUS),
.boot_on = 1, .boot_on = 1,
...@@ -1018,6 +1018,27 @@ static struct edma_rsv_info *da850_edma_rsv[2] = { ...@@ -1018,6 +1018,27 @@ static struct edma_rsv_info *da850_edma_rsv[2] = {
&da850_edma_cc1_rsv, &da850_edma_cc1_rsv,
}; };
#ifdef CONFIG_CPU_FREQ
static __init int da850_evm_init_cpufreq(void)
{
switch (system_rev & 0xF) {
case 3:
da850_max_speed = 456000;
break;
case 2:
da850_max_speed = 408000;
break;
case 1:
da850_max_speed = 372000;
break;
}
return da850_register_cpufreq("pll0_sysclk3");
}
#else
static __init int da850_evm_init_cpufreq(void) { return 0; }
#endif
static __init void da850_evm_init(void) static __init void da850_evm_init(void)
{ {
int ret; int ret;
...@@ -1118,7 +1139,7 @@ static __init void da850_evm_init(void) ...@@ -1118,7 +1139,7 @@ static __init void da850_evm_init(void)
if (ret) if (ret)
pr_warning("da850_evm_init: rtc setup failed: %d\n", ret); pr_warning("da850_evm_init: rtc setup failed: %d\n", ret);
ret = da850_register_cpufreq("pll0_sysclk3"); ret = da850_evm_init_cpufreq();
if (ret) if (ret)
pr_warning("da850_evm_init: cpufreq registration failed: %d\n", pr_warning("da850_evm_init: cpufreq registration failed: %d\n",
ret); ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment