MIPS: BCM63xx: Fix soft-reset lockup on BCM6345
authorFlorian Fainelli <[email protected]>
Mon, 31 Aug 2009 18:27:39 +0000 (20:27 +0200)
committerRalf Baechle <[email protected]>
Mon, 2 Nov 2009 11:00:03 +0000 (12:00 +0100)
This patch fixes a lockup on BCM6345 where setting the PLL soft reset bit
will also lock the other blocks including UART.  Instead of setting only
the PLL soft reset bit in the software reset register, set this bit but do
not touch the others.

Signed-off-by: Florian Fainelli <[email protected]>
Signed-off-by: Ralf Baechle <[email protected]>
arch/mips/bcm63xx/setup.c

index b18a0ca926fa3d5ad326a662e11f8b090ffb2fa9..d0056598fbfcac2e36438dda2940b7cd0df7194b 100644 (file)
@@ -75,7 +75,9 @@ void bcm63xx_machine_reboot(void)
                bcm6348_a1_reboot();
 
        printk(KERN_INFO "triggering watchdog soft-reset...\n");
-       bcm_perf_writel(SYS_PLL_SOFT_RESET, PERF_SYS_PLL_CTL_REG);
+       reg = bcm_perf_readl(PERF_SYS_PLL_CTL_REG);
+       reg |= SYS_PLL_SOFT_RESET;
+       bcm_perf_writel(reg, PERF_SYS_PLL_CTL_REG);
        while (1)
                ;
 }