]> git.karo-electronics.de Git - karo-tx-linux.git/commit
ENGR00269945: ARM: imx6sl: initialize use count of IPG clock
authorShawn Guo <shawn.guo@freescale.com>
Tue, 13 Aug 2013 01:16:52 +0000 (09:16 +0800)
committerJason Liu <r64343@freescale.com>
Wed, 30 Oct 2013 01:54:30 +0000 (09:54 +0800)
commit563e41b56a9ef4906c2c561c387c8189e9cf0b77
treee33c018cdc1afcab7fdc5da19c0bd4d7d0af4aff
parente47c379edb1b16f628de1cf749d491522d552e7f
ENGR00269945: ARM: imx6sl: initialize use count of IPG clock

We're running into a system hang during imx6sl boot.  It's been tracked
down to SDMA driver function sdma_init().  System hangs immediately
after the clk_disable() is called in sdma_init().

It turns out that the issue is caused by IPG bus clock which is the
parent of sdma clock is turned off accidentally due to the incorrect
initial use count.  IPG clock is initial on and should be always on
when system operates.  But the use count of the clock is zero initially.
So when the last child clock gets disabled, the use count of IPG clock
reaches zero, and thus clock framework will turn off IPG clock (and
possibly parent clocks along the way), and causes the system hang.

Let's initialize the use count of IPG clock by calling
clk_prepare_enable() on it to match the on state of the clock, so that
the clock will not be turned off accidentally.

Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
arch/arm/mach-imx/clk-imx6sl.c