linux-stable/arch/arm/mach-omap1
Stanley.Miao 06151158f2 ARM: OMAP: Fix McBSP spin_lock deadlock
A spin_lock deadlock will occur when omap_mcbsp_request() is invoked.

omap_mcbsp_request()
\- clk_enable(mcbsp->clk)         [takes and holds clockfw_lock]
    \- omap2_clk_enable()
       \- _omap2_clk_enable()
           \- omap_mcbsp_clk_enable()
              \- clk_enable(child clock)   [tries for clockfw_lock again]

mcbsp_clk is a virtual clock and it comprises several child clocks. when
enable mcbsp_clk in omap_mcbsp_request(), the enable function of mcbsp_clk
will enable its child clocks, then the deadlock occurs.

The solution is to remove the virtual clock and enable these child clocks in
omap_mcbsp_request() directly.

Signed-off-by: Stanley.Miao <stanley.miao@windriver.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2009-01-29 08:57:12 -08:00
..
board-ams-delta.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
board-fsample.c ARM: OMAP: Switch to gpio_request/free calls 2008-12-10 17:35:30 -08:00
board-generic.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
board-h2-mmc.c omap mmc: Add better MMC low-level init 2008-12-10 17:37:16 -08:00
board-h2.c ARM: OMAP: Remove unused platform devices, v3 2009-01-15 14:07:48 +02:00
board-h3-mmc.c omap mmc: Add better MMC low-level init 2008-12-10 17:37:16 -08:00
board-h3.c ARM: OMAP: Remove unused platform devices, v3 2009-01-15 14:07:48 +02:00
board-innovator.c ARM: OMAP: Remove unused platform devices, v3 2009-01-15 14:07:48 +02:00
board-nokia770.c ARM: OMAP: Remove unused platform devices, v3 2009-01-15 14:07:48 +02:00
board-osk.c ARM: OMAP: Remove unused platform devices, v3 2009-01-15 14:07:48 +02:00
board-palmte.c ARM: OMAP: Remove unused platform devices, v3 2009-01-15 14:07:48 +02:00
board-palmtt.c ARM: OMAP: Remove unused platform devices, v3 2009-01-15 14:07:48 +02:00
board-palmz71.c ARM: OMAP: Remove unused platform devices, v3 2009-01-15 14:07:48 +02:00
board-perseus2.c ARM: OMAP: Switch to gpio_request/free calls 2008-12-10 17:35:30 -08:00
board-sx1-mmc.c omap mmc: Add better MMC low-level init 2008-12-10 17:37:16 -08:00
board-sx1.c ARM: OMAP: Remove unused platform devices, v3 2009-01-15 14:07:48 +02:00
board-voiceblue.c ARM: OMAP: remove duplicated #include's 2009-01-15 13:09:54 +02:00
clock.c Merge branch 'omap-all' into devel 2008-10-14 22:24:42 +01:00
clock.h omap mmc: Add better MMC low-level init 2008-12-10 17:37:16 -08:00
devices.c omap mmc: Add low-level initialization for hsmmc controller 2008-12-10 17:37:17 -08:00
fpga.c ARM: OMAP: Switch to gpio_request/free calls 2008-12-10 17:35:30 -08:00
id.c ARM: OMAP2: Use omap_rev() instead of system_rev 2008-12-10 17:36:31 -08:00
io.c [ARM] omap: fix a pile of issues 2008-12-01 17:40:54 +00:00
irq.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
Kconfig [ARM] Arrange for platforms to select appropriate CPU support 2008-11-27 12:38:00 +00:00
leds-h2p2-debug.c ARM: OMAP: switch to standard gpio get/set calls 2008-12-10 17:35:25 -08:00
leds-innovator.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
leds-osk.c ARM: OMAP: switch to standard gpio get/set calls 2008-12-10 17:35:25 -08:00
leds.c ARM: OMAP: Switch to gpio_request/free calls 2008-12-10 17:35:30 -08:00
leds.h
mailbox.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
Makefile ARM: OMAP: McBSP: Add support for mcbsp on mach-omap1 2008-07-03 12:24:40 +03:00
Makefile.boot
mcbsp.c ARM: OMAP: Fix McBSP spin_lock deadlock 2009-01-29 08:57:12 -08:00
mux.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
pm.c ARM: OMAP2: Use omap_rev() instead of system_rev 2008-12-10 17:36:31 -08:00
serial.c ARM: OMAP: Switch to gpio_request/free calls 2008-12-10 17:35:30 -08:00
sleep.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
sram.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
time.c cpumask: convert struct clock_event_device to cpumask pointers. 2008-12-13 21:20:26 +10:30
timer32k.c cpumask: convert struct clock_event_device to cpumask pointers. 2008-12-13 21:20:26 +10:30