提交 9823f1a8 编写于 作者: A Anders Larsen 提交者: Russell King

ARM: 6043/1: AT91 slow-clock resume: Don't wait for a disabled PLL to lock

at91 slow-clock resume: Don't wait for a disabled PLL to lock.

We run into this problem with the PLLB on the at91: ohci-at91 disables
the PLLB when going to suspend. The slowclock code however tries to do
the same: It saves the PLLB register value and when restoring the value
during resume, it waits for the PLLB to lock again. However the PLL will
never lock and the loop would run into its timeout because the slowclock
code just stored and restored an empty register.
This fixes the problem by only restoring PLLA/PLLB when they were enabled
at suspend time.

Cc: Andrew Victor <avictor.za@gmail.com>
Signed-off-by: NAnders Larsen <al@alarsen.net>
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 bb3c9d4f
...@@ -205,13 +205,25 @@ ENTRY(at91_slow_clock) ...@@ -205,13 +205,25 @@ ENTRY(at91_slow_clock)
ldr r3, .saved_pllbr ldr r3, .saved_pllbr
str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
tst r3, #(AT91_PMC_MUL & 0xff0000)
bne 1f
tst r3, #(AT91_PMC_MUL & ~0xff0000)
beq 2f
1:
wait_pllblock wait_pllblock
2:
/* Restore PLLA setting */ /* Restore PLLA setting */
ldr r3, .saved_pllar ldr r3, .saved_pllar
str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)]
tst r3, #(AT91_PMC_MUL & 0xff0000)
bne 3f
tst r3, #(AT91_PMC_MUL & ~0xff0000)
beq 4f
3:
wait_pllalock wait_pllalock
4:
#ifdef SLOWDOWN_MASTER_CLOCK #ifdef SLOWDOWN_MASTER_CLOCK
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册