u-boot-brain/arch/arm/mach-tegra
Stephen Warren 6c7dc6236a 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 722e000ccd "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>
2015-09-16 16:10:22 -07:00
..
tegra20 of: clean up OF_CONTROL ifdef conditionals 2015-08-18 13:46:05 -04:00
tegra30 of: clean up OF_CONTROL ifdef conditionals 2015-08-18 13:46:05 -04:00
tegra114 of: clean up OF_CONTROL ifdef conditionals 2015-08-18 13:46:05 -04:00
tegra124 of: clean up OF_CONTROL ifdef conditionals 2015-08-18 13:46:05 -04:00
tegra210 ARM: tegra: Add p2371-2180 board 2015-09-16 16:10:22 -07:00
ap.c ARM: tegra: move VPR configuration to a later stage 2015-08-06 10:50:03 -07:00
board.c ARM: tegra: query_sdram_size() cleanup 2015-08-13 13:06:04 -07:00
board2.c ARM: tegra: represent RAM in 1 or 2 banks 2015-08-13 13:06:04 -07:00
cache.c ARM: Tegra210: Add support to common Tegra source/config files 2015-07-28 10:30:20 -07:00
clock.c ARM: tegra: fix PLLP frequency calc on T210 2015-09-16 16:10:22 -07:00
cmd_enterrcm.c ARM: tegra: collect SoC sources into mach-tegra 2015-02-21 08:23:51 -05:00
cpu.c Tegra: PLL: use per-SoC pllinfo table instead of PLL_DIVM/N/P, etc. 2015-08-05 15:22:51 -07:00
cpu.h ARM: Tegra210: Add support to common Tegra source/config files 2015-07-28 10:30:20 -07:00
emc.c ARM: tegra: move NVIDIA common files to arch/arm/mach-tegra 2015-05-13 09:46:19 -07:00
emc.h ARM: tegra: move NVIDIA common files to arch/arm/mach-tegra 2015-05-13 09:46:19 -07:00
gpu.c ARM: tegra: enable GPU DT node when appropriate 2015-08-06 10:50:03 -07:00
Kconfig of: flip CONFIG_SPL_DISABLE_OF_CONTROL into CONFIG_SPL_OF_CONTROL 2015-08-18 13:46:04 -04:00
lowlevel_init.S ARM: Tegra210: Add support to common Tegra source/config files 2015-07-28 10:30:20 -07:00
Makefile ARM: tegra: move VPR configuration to a later stage 2015-08-06 10:50:03 -07:00
pinmux-common.c ARM: tegra: Build warning fixes for 64-bit 2015-07-27 15:54:18 -07:00
powergate.c tegra: Introduce SRAM repair on tegra124 2015-06-09 09:56:14 -07:00
psci.S tegra: Set CNTFRQ for secondary CPUs 2015-05-13 09:24:16 -07:00
pwm.c tegra: pwm: Allow the clock rate to be left as is 2015-05-13 09:24:07 -07:00
spl.c ARM: tegra: collect SoC sources into mach-tegra 2015-02-21 08:23:51 -05:00
sys_info.c ARM: tegra: collect SoC sources into mach-tegra 2015-02-21 08:23:51 -05:00
xusb-padctl.c ARM: tegra: collect SoC sources into mach-tegra 2015-02-21 08:23:51 -05:00