summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2015-08-19 17:03:59 -0600
committerTom Warren <twarren@nvidia.com>2015-09-16 16:10:22 -0700
commit6c7dc6236a48752be548e0c6965b5a4a9076af11 (patch)
tree8713f915d65273d041e13b2274196acf7b73e976 /include
parentbfac08472371d4d6d4fa56972b0e1166f780633a (diff)
downloadu-boot-imx-6c7dc6236a48752be548e0c6965b5a4a9076af11.zip
u-boot-imx-6c7dc6236a48752be548e0c6965b5a4a9076af11.tar.gz
u-boot-imx-6c7dc6236a48752be548e0c6965b5a4a9076af11.tar.bz2
ARM: tegra: fix PLLP frequency calc on T210
AFAIK, for all PLLs on all Tegra SoCs, the primary PLL output frequency is (input * m) / (n * p). However, PLLP's primary output (pllP_out0) on T210 is the VCO output, and divp is not applied. pllP_out2 does have divp applied. All other pllP_outN are divided down from pllP_out0. We only support pllP_out0 in U-Boot at the time of writing. Fix clock_get_rate() to handle this special case. This corrects the returned rate for PLLP to be 408MHz rather than 204MHz. In turn, this causes high enough dividers to be calculated for the various peripheral clocks that feed off of PLLP. Without this, some peripherals failed to operate correctly. For instance, one of my SD cards worked perfectly but an older (presumably slower) card could not be read. Note that prior to commit 722e000ccd72 "Tegra: PLL: use per-SoC pllinfo table instead of PLL_DIVM/N/P, etc.", the calculated PLL frequency was 816MHz since the wrong values were being extracted from the PLLP divider register. This caused overly large peripheral dividers to be calculated, which while wrong, didn't cause any correctness issues; things simply ran slower than they could. Reported-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Tom Warren <twarren@nvidia.com>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions