1
linux/arch/arm/mach-omap2
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-2430sdp.c omap mmc: Add low-level initialization for hsmmc controller 2008-12-10 17:37:17 -08:00
board-apollon.c ARM: OMAP: Fix gpio by switching to generic gpio calls, v2 2009-01-15 13:09:52 +02:00
board-generic.c omap mmc: Remove broken MMC init code 2008-12-10 17:37:16 -08:00
board-h4.c omap mmc: Remove broken MMC init code 2008-12-10 17:37:16 -08:00
board-ldp.c ARM: OMAP: Fix gpio by switching to generic gpio calls, v2 2009-01-15 13:09:52 +02:00
board-omap3beagle.c ARM: OMAP: Fix compile for beagle 2009-01-15 13:09:53 +02:00
board-omap3pandora.c omap mmc: Add low-level initialization for hsmmc controller 2008-12-10 17:37:17 -08:00
board-overo.c omap mmc: Add low-level initialization for hsmmc controller 2008-12-10 17:37:17 -08:00
clock24xx.c
clock24xx.h Merge branch 'i2c-next' of git://aeryn.fluff.org.uk/bjdooks/linux 2009-01-05 18:58:06 -08:00
clock34xx.c ARM: OMAP2: Use omap_rev() instead of system_rev 2008-12-10 17:36:31 -08:00
clock34xx.h omap mmc: Add better MMC low-level init 2008-12-10 17:37:16 -08:00
clock.c Merge branch 'omap-all' into devel 2008-10-14 22:24:42 +01:00
clock.h ARM: OMAP2: Misc updates from linux-omap tree 2008-10-06 15:49:36 +03:00
clockdomain.c
clockdomains.h
cm-regbits-24xx.h
cm-regbits-34xx.h
cm.h
control.c
devices.c omap mmc: force MMC module reset on boot 2008-12-10 17:37:17 -08:00
gpmc.c ARM: OMAP: Fix compiler warnings in gpmc.c 2008-11-04 13:35:06 -08:00
id.c ARM: OMAP2: Use omap_rev() instead of system_rev 2008-12-10 17:36:31 -08:00
io.c Merge branch 'omap-all' into devel 2008-10-14 22:24:42 +01:00
irq.c ARM: OMAP3: Warn about spurious interrupts 2008-12-10 17:36:52 -08:00
Kconfig ARM: OMAP3: Add basic support for Pandora handheld console 2008-12-10 17:36:54 -08:00
mailbox.c
Makefile omap mmc: Add low-level initialization for hsmmc controller 2008-12-10 17:37:17 -08:00
Makefile.boot
mcbsp.c ARM: OMAP: Fix McBSP spin_lock deadlock 2009-01-29 08:57:12 -08:00
memory.c Merge branch 'omap-all' into devel 2008-10-14 22:24:42 +01:00
memory.h ARM: OMAP2: Misc updates from linux-omap tree 2008-10-06 15:49:36 +03:00
mmc-twl4030.c omap mmc: Add low-level initialization for hsmmc controller 2008-12-10 17:37:17 -08:00
mmc-twl4030.h omap mmc: Add low-level initialization for hsmmc controller 2008-12-10 17:37:17 -08:00
mux.c ARM: OMAP3: Pin multiplexing updates for 24xx and 34xx 2008-12-10 17:36:54 -08:00
pm.c
powerdomain.c
powerdomains24xx.h
powerdomains34xx.h
powerdomains.h
prcm-common.h
prcm.c
prm-regbits-24xx.h
prm-regbits-34xx.h
prm.h
sdrc.h
serial.c Merge branch 'omap-all' into devel 2008-10-14 22:24:42 +01:00
sleep24xx.S ARM: OMAP2: Move sleep.S into sleep24xx.S 2008-10-06 15:49:15 +03:00
sram34xx.S ARM: OMAP3: Add minimal omap3430 support 2008-10-09 17:51:41 +03:00
sram242x.S
sram243x.S
timer-gp.c cpumask: convert struct clock_event_device to cpumask pointers. 2008-12-13 21:20:26 +10:30
usb-tusb6010.c ARM: OMAP: Switch to gpio_request/free calls 2008-12-10 17:35:30 -08:00