linux/arch/arm/mach-tegra
Stephen Warren 76c2f6e513 ARM: tegra: Fix EMC pdata initialization from registers
Commit d91eeb0 "ARM: tegra: emc: device tree support" modified the EMC
driver to create an EMC table from existing register settings when none
was provided through platform data or device tree. This code wrote the
wrong clock rate into the table; the actual rate in Hz, rather than the
expected half-rate in KHz. This caused the BUG_ON in
tegra2_emc_clk_round_rate() to fire, since that enormous rate could not
be generated.

Fixes:

[    2.425921] kernel BUG at arch/arm/mach-tegra/tegra2_clocks.c:1158!
...
[    2.618766] [<c001c0e8>] (tegra2_emc_clk_round_rate+0x58/0x70) from [<c00198b4>] (clk_round_rate+0x48/0x68)
[    2.628494] [<c00198b4>] (clk_round_rate+0x48/0x68) from [<c0019cc0>] (clk_set_rate_locked+0x40/0x68)
[    2.637707] [<c0019cc0>] (clk_set_rate_locked+0x40/0x68) from [<c0019d10>] (clk_set_rate+0x28/0x40)
[    2.646754] [<c0019d10>] (clk_set_rate+0x28/0x40) from [<c001ffc8>] (tegra_update_cpu_speed+0x54/0x144)
[    2.656144] [<c001ffc8>] (tegra_update_cpu_speed+0x54/0x144) from [<c002016c>] (tegra_target+0xb4/0xe0)
[    2.665538] [<c002016c>] (tegra_target+0xb4/0xe0) from [<c01a96c0>] (__cpufreq_driver_target+0x88/0xa4)
[    2.674931] [<c01a96c0>] (__cpufreq_driver_target+0x88/0xa4) from [<c01ac9d0>] (dbs_check_cpu+0x324/0x340)
[    2.684582] [<c01ac9d0>] (dbs_check_cpu+0x324/0x340) from [<c01aca40>] (do_dbs_timer+0x54/0xf4)
[    2.693277] [<c01aca40>] (do_dbs_timer+0x54/0xf4) from [<c00369a8>] (process_one_work+0x1d4/0x320)
[    2.702225] [<c00369a8>] (process_one_work+0x1d4/0x320) from [<c0036f34>] (worker_thread+0x134/0x230)
[    2.711437] [<c0036f34>] (worker_thread+0x134/0x230) from [<c003add0>] (kthread+0x80/0x8c)
[    2.719700] [<c003add0>] (kthread+0x80/0x8c) from [<c000ebf4>] (kernel_thread_exit+0x0/0x8)

Reported-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
[olof: fixed calculation of printed values]
Signed-off-by: Olof Johansson <olof@lixom.net>
2012-02-06 18:25:01 -08:00
..
include/mach gpio: tegra: Dynamically allocate IRQ base, and support DT 2012-02-06 18:25:00 -08:00
apbio.c ARM: tegra: use APB DMA for accessing APB devices 2012-02-06 18:24:58 -08:00
apbio.h ARM: tegra: use APB DMA for accessing APB devices 2012-02-06 18:24:58 -08:00
board-dt-tegra20.c Board-level changes 2012-01-09 14:37:41 -08:00
board-dt-tegra30.c arm/tegra: add support for tegra30 based board cardhu 2011-12-17 20:15:38 -08:00
board-harmony-pcie.c arm/tegra: Harmony PCIe: Don't touch pinmux 2011-12-19 18:03:10 -08:00
board-harmony-pinmux.c Merge branch 'tegra/soc' into next/boards 2012-01-06 23:09:14 +00:00
board-harmony-power.c
board-harmony.c ARM: tegra: Remove use of TEGRA_GPIO_TO_IRQ 2012-02-06 18:25:00 -08:00
board-harmony.h
board-paz00-pinmux.c Merge branch 'tegra/soc' into next/boards 2012-01-06 23:09:14 +00:00
board-paz00.c Merge branch 'samsung/cleanup' into next/boards 2012-01-09 17:06:36 +00:00
board-paz00.h ARM: tegra: paz00: add support for wakeup gpio key 2011-12-07 21:13:47 -08:00
board-pinmux.c arm/tegra: Use bus notifiers to trigger pinmux setup 2011-12-19 18:03:11 -08:00
board-pinmux.h arm/tegra: Refactor board-*-pinmux.c to share code 2011-12-19 18:03:11 -08:00
board-seaboard-pinmux.c Merge branch 'tegra/soc' into next/boards 2012-01-06 23:09:14 +00:00
board-seaboard.c ARM: tegra: Remove use of TEGRA_GPIO_TO_IRQ 2012-02-06 18:25:00 -08:00
board-seaboard.h Merge branch 'depends/rmk/gpio' into next/board 2011-10-21 16:46:26 +02:00
board-trimslice-pinmux.c Merge branch 'tegra/soc' into next/boards 2012-01-06 23:09:14 +00:00
board-trimslice.c Merge branch 'samsung/cleanup' into next/boards 2012-01-09 17:06:36 +00:00
board-trimslice.h
board.h arm/tegra: Delete tegra_init_clock() 2011-12-19 18:06:05 -08:00
clock.c arm/tegra: Delete tegra_init_clock() 2011-12-19 18:06:05 -08:00
clock.h arm/tegra: don't export clk_measure_input_freq 2011-12-17 20:15:08 -08:00
common.c ARM: tegra: Pass uncompress.h UART selection to DEBUG_LL 2012-02-06 18:25:00 -08:00
cpu-tegra.c Merge branch 'next/cleanup' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:11:00 -07:00
devices.c Merge branch 'next/devel' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:31:25 -07:00
devices.h
dma.c ARM: tegra: Pause DMA when reading transfer count 2012-02-06 18:24:59 -08:00
fuse.c ARM: tegra: fuse: add bct strapping reading 2012-02-06 18:24:59 -08:00
fuse.h ARM: tegra: fuse: add bct strapping reading 2012-02-06 18:24:59 -08:00
gpio-names.h
headsmp.S
hotplug.c
io.c ARM: mach-tegra: remove arch specific special handling for ioremap 2011-11-16 18:06:18 -05:00
irq.c Merge branch 'samsung/cleanup' into next/boards 2012-01-09 17:06:36 +00:00
Kconfig arm/tegra: Make MACH_TEGRA_DT depend on ARCH_TEGRA_2x_SOC 2011-12-19 18:06:27 -08:00
localtimer.c
Makefile ARM: tegra: use APB DMA for accessing APB devices 2012-02-06 18:24:58 -08:00
Makefile.boot arm/tegra: add support for tegra30 based board cardhu 2011-12-17 20:15:38 -08:00
pcie.c Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
pinmux-tegra20-tables.c arm/tegra: Fix section mismatch errors in tegra20 pinmux 2011-12-19 18:04:41 -08:00
pinmux-tegra30-tables.c arm/tegra: Fix section mismatch errors in tegra30 pinmux 2011-12-19 18:04:41 -08:00
pinmux.c arm/tegra: pinmux tables and definitions for tegra30 2011-12-17 20:15:33 -08:00
platsmp.c ARM: smp: fix clipping of number of CPUs 2011-10-20 22:06:57 +01:00
powergate.c
tegra2_clocks.c ARM: tegra: fuse: add functions to access chip revision 2012-02-06 18:24:59 -08:00
tegra2_emc.c ARM: tegra: Fix EMC pdata initialization from registers 2012-02-06 18:25:01 -08:00
tegra2_emc.h ARM: tegra: emc: convert tegra2_emc to a platform driver 2012-02-06 18:24:59 -08:00
timer.c Merge branch 'samsung/cleanup' into next/boards 2012-01-09 17:06:36 +00:00
usb_phy.c