linux/arch/arm/mach-omap1
Tony Lindgren e9b7086b80 ARM: OMAP: Fix reprogramming of dpll1 rate
Commit a66cb3454f (ARM: OMAP: Map SRAM
later on with ioremap_exec()) moved the SRAM init to happen later
to remove a dependency to early SoC detection for map_io.

This broke booting on some boards not using Kconfig option for
OMAP_CLOCKS_SET_BY_BOOTLOADER as the dpll1 reprogramming would
cause the following error:

kernel BUG at arch/arm/plat-omap/sram.c:226!
Internal error: Oops - undefined instruction: 0 [#1] PREEMPT
Modules linked in:

CPU: 0    Not tainted  (3.2.0-rc1-e3 #9)
PC is at omap_sram_reprogram_clock+0x28/0x30
LR is at omap1_select_table_rate+0x88/0xb4
pc : [<c001b0c4>]    lr : [<c0019f54>]    psr: 600000d3
sp : c035bf10  ip : c035bf20  fp : c035bf1c
r10: c035bfd4  r9 : 54029252  r8 : c03f8120
r7 : c0362b50  r6 : 00b71b00  r5 : c03873cc  r4 : c0362b40
r3 : 00000000  r2 : c0362b40  r1 : 0000010a  r0 : 00002cb0
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
Control: 0000317f  Table: 10004000  DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc035a270)
Stack: (0xc035bf10 to 0xc035c000)
bf00:                                     c035bf3c c035bf20 c0019f54 c001b0ac
bf20: 00001000 00002cb3 00000004 c035ed4c c035bf74 c035bf40 c033ea24 c0019edc
bf40: c02f526c 00000002 00000015 bc058c9b 93111a16 c035335c 02000000 c035ed4c
bf60: c035ed4c c03f8120 c035bf84 c035bf78 c00194c4 c033e8ec c035bfc4 c035bf88
bf80: c033bc24 c00194a0 c035bf90 c035bf98 00000000 00000000 00000000 00000000
bfa0: 00000001 00000000 c0354678 c035ece4 10004000 103532f4 c035bff4 c035bfc8
bfc0: c0338574 c033b598 00000000 00000000 00000000 c035467c 0000317d c035c03c
bfe0: c0354678 c035ece4 00000000 c035bff8 10008040 c0338508 00000000 00000000
Backtrace:
[<c001b09c>] (omap_sram_reprogram_clock+0x0/0x30) from [<c0019f54>] (omap1_select_table_rate+0x88/0xb4)
[<c0019ecc>] (omap1_select_table_rate+0x0/0xb4) from [<c033ea24>] (omap1_clk_init+0x148/0x334)
 r7:c035ed4c r6:00000004 r5:00002cb3 r4:00001000
[<c033e8dc>] (omap1_clk_init+0x0/0x334) from [<c00194c4>] (omap1_init_early+0x34/0x48)
 r8:c03f8120 r7:c035ed4c r6:c035ed4c r5:02000000 r4:c035335c
[<c0019490>] (omap1_init_early+0x0/0x48) from [<c033bc24>] (setup_arch+0x69c/0x79c)
[<c033b588>] (setup_arch+0x0/0x79c) from [<c0338574>] (start_kernel+0x7c/0x2f4)
[<c03384f8>] (start_kernel+0x0/0x2f4) from [<10008040>] (0x10008040)
 r7:c035ece4 r6:c0354678 r5:c035c03c r4:0000317d
Code: 0a000002 e1a0e00f e12fff13 e89da800 (e7f001f2)

Fix this by adding omap1_clk_late_init() that only reprograms dpll1
if the bootloader rate is less than 60MHz. This also allows removing
of the OMAP_CLOCKS_SET_BY_BOOTLOADER option.

Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2011-11-11 10:15:11 -08:00
..
include/mach ARM: OMAP: move OMAP1 memory config from plat/memory.h to its mach/memory.h 2011-09-26 10:12:02 -04:00
ams-delta-fiq-handler.S Fix common misspellings 2011-03-31 11:26:23 -03:00
ams-delta-fiq.c ARM: omap1: irq_data conversion. 2011-01-13 17:18:51 +01:00
board-ams-delta.c ARM: OMAP: Fix map_io for Amstrad E3 2011-11-09 15:29:31 -08:00
board-fsample.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-generic.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-h2-mmc.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
board-h2.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-h2.h
board-h3-mmc.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
board-h3.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-h3.h
board-htcherald.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-innovator.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-nokia770.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-osk.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-palmte.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-palmtt.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-palmz71.c ARM: OMAP1: Remove unused omap-alsa.h 2011-11-04 18:07:17 -07:00
board-perseus2.c Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:58:25 -07:00
board-sx1-mmc.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
board-sx1.c Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
board-voiceblue.c Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
clock_data.c ARM: OMAP: Fix reprogramming of dpll1 rate 2011-11-11 10:15:11 -08:00
clock.c ARM: 6483/1: arm & sh: factorised duplicated clkdev.c 2010-11-26 10:51:04 +00:00
clock.h ARM: OMAP: Fix reprogramming of dpll1 rate 2011-11-11 10:15:11 -08:00
devices.c ARM: OMAP: Fix reprogramming of dpll1 rate 2011-11-11 10:15:11 -08:00
dma.c arch/arm/mach-omap1/dma.c: Invert calls to platform_device_put and platform_device_del 2011-06-01 02:25:04 -07:00
flash.c ARM: 6910/1: MTD: physmap: let set_vpp() pass a platform_device instead of a map_info 2011-05-20 22:27:34 +01:00
fpga.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
gpio7xx.c Merge branch 'gpio/next' of git://git.secretlab.ca/git/linux-2.6 2011-07-22 14:50:57 -07:00
gpio15xx.c Merge branch 'gpio/next' of git://git.secretlab.ca/git/linux-2.6 2011-07-22 14:50:57 -07:00
gpio16xx.c Merge branch 'gpio/next' of git://git.secretlab.ca/git/linux-2.6 2011-07-22 14:50:57 -07:00
i2c.c
id.c
io.c Merge branch 'depends/rmk/memory_h' into next/cleanup2 2011-11-01 13:47:27 +01:00
irq.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
Kconfig ARM: OMAP: Fix reprogramming of dpll1 rate 2011-11-11 10:15:11 -08:00
lcd_dma.c OMAP1: Fix non-working LCD on OMAP310 2011-02-02 12:13:50 -08:00
leds-h2p2-debug.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
leds-innovator.c
leds-osk.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
leds.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
leds.h
mailbox.c arm: fix implicit module.h users by adding it to arch/arm as required. 2011-10-31 19:30:50 -04:00
Makefile ARM: OMAP1: dmtimer: conversion to platform devices 2011-09-21 15:50:31 -07:00
Makefile.boot ARM: 7022/1: allow to detect conflicting zreladdrs 2011-10-17 09:12:40 +01:00
mcbsp.c ARM: OMAP: mcbsp: Move address definitions to arch/arm/mach-omap1/mcbsp.c 2011-09-26 17:48:51 -07:00
mux.c arm: omap1: make some functions static 2010-11-24 16:48:25 -08:00
opp_data.c
opp.h
pm_bus.c PM: Move clock-related definitions and headers to separate file 2011-08-25 15:34:19 +02:00
pm.c ARM: OMAP1: Fix warnings about enabling 32 KiHz timer 2011-11-04 18:07:15 -07:00
pm.h ARM: 6649/1: omap: use fncpy to copy the PM code functions to SRAM 2011-02-04 14:26:08 +00:00
reset.c ARM: OMAP: Allow platforms to hook reset cleanly 2011-01-27 16:39:48 -08:00
serial.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
sleep.S ARM: 6649/1: omap: use fncpy to copy the PM code functions to SRAM 2011-02-04 14:26:08 +00:00
sram.S ARM: 6649/1: omap: use fncpy to copy the PM code functions to SRAM 2011-02-04 14:26:08 +00:00
time.c omap: Set separate timer init functions to avoid cpu_is_omap tests 2011-06-20 01:25:39 -07:00
timer32k.c omap2+: Reserve clocksource and timesource and initialize dmtimer later 2011-06-27 12:14:01 -07:00
timer.c ARM: OMAP1: dmtimer: conversion to platform devices 2011-09-21 15:50:31 -07:00
usb.c omap: Move omap1 USB platform init code into mach-omap1/usb.c 2010-07-05 16:31:30 +03:00