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 [ARM] Convert asm/bitops.h to linux/bitops.h 2008-09-06 12:13:59 +01:00
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 [ARM] OMAP: clockdomain: add clkdm_get_pwrdm() 2008-08-21 21:30:19 +01:00
clockdomains.h ARM: OMAP2: Clockdomain: Integrate OMAP3 clocks with clockdomain code 2008-08-19 11:08:45 +03:00
cm-regbits-24xx.h ARM: OMAP2: Clockdomain: Encode OMAP2/3 clockdomains 2008-08-19 11:08:44 +03:00
cm-regbits-34xx.h ARM: OMAP2: Clockdomain: Encode OMAP2/3 clockdomains 2008-08-19 11:08:44 +03:00
cm.h [ARM] omap: Fix IO_ADDRESS() macros 2008-09-05 17:02:31 +01:00
control.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
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 [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
Makefile omap mmc: Add low-level initialization for hsmmc controller 2008-12-10 17:37:17 -08:00
Makefile.boot [ARM] 3145/1: OMAP 3a/5: Add support for omap24xx 2005-11-10 14:26:51 +00:00
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 [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
powerdomain.c [ARM] OMAP3 pwrdm: add hardware save-and-restore (SAR) support 2008-08-21 21:26:39 +01:00
powerdomains24xx.h ARM: OMAP2: Powerdomain: Add OMAP2 powerdomains 2008-08-19 11:08:42 +03:00
powerdomains34xx.h ARM: OMAP: Powerdomain: Add OMAP3 powerdomains 2008-08-19 11:08:43 +03:00
powerdomains.h ARM: OMAP: Powerdomain: Add OMAP3 powerdomains 2008-08-19 11:08:43 +03:00
prcm-common.h ARM: OMAP: Powerdomain: Add OMAP3 powerdomains 2008-08-19 11:08:43 +03:00
prcm.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
prm-regbits-24xx.h ARM: OMAP2: Powerdomain: Add OMAP2 powerdomains 2008-08-19 11:08:42 +03:00
prm-regbits-34xx.h ARM: OMAP: Powerdomain: Add OMAP3 powerdomains 2008-08-19 11:08:43 +03:00
prm.h Merge unstable branch 'omap-rmk' 2008-10-03 11:52:33 +01:00
sdrc.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
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 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
sram243x.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
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