Linux MIPS Architecture development
 help / color / mirror / Atom feed
* [PATCH v2] MIPS: BCM47XX: fix reboot problem on BCM4705/BCM4785
@ 2014-08-18 20:01 Hauke Mehrtens
  2014-08-19 10:12 ` Ralf Baechle
  0 siblings, 1 reply; 2+ messages in thread
From: Hauke Mehrtens @ 2014-08-18 20:01 UTC (permalink / raw)
  To: ralf; +Cc: jogo, zajec5, linux-mips, Hauke Mehrtens

This adds some code based on code from the Broadcom GPL tar to fix the
reboot problems on BCM4705/BCM4785. I tried rebooting my device for ~10
times and have never seen a problem. This reverts the changes in the
previous commit and adds the real fix as suggested by Rafał.

Setting bit 22 in Reg 22, sel 4 puts the BIU (Bus Interface Unit) into
async mode.

The previous try was this:
commit 316cad5c1d4daee998cd1f83ccdb437f6f20d45c
Author: Hauke Mehrtens <hauke@hauke-m.de>
Date:   Mon Jul 28 23:53:57 2014 +0200

    MIPS: BCM47XX: make reboot more relaiable

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
 arch/mips/bcm47xx/setup.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/mips/bcm47xx/setup.c b/arch/mips/bcm47xx/setup.c
index 2b63e7e..ad439c2 100644
--- a/arch/mips/bcm47xx/setup.c
+++ b/arch/mips/bcm47xx/setup.c
@@ -59,12 +59,21 @@ static void bcm47xx_machine_restart(char *command)
 	switch (bcm47xx_bus_type) {
 #ifdef CONFIG_BCM47XX_SSB
 	case BCM47XX_BUS_TYPE_SSB:
-		ssb_watchdog_timer_set(&bcm47xx_bus.ssb, 3);
+		if (bcm47xx_bus.ssb.chip_id == 0x4785)
+			write_c0_diag4(1 << 22);
+		ssb_watchdog_timer_set(&bcm47xx_bus.ssb, 1);
+		if (bcm47xx_bus.ssb.chip_id == 0x4785) {
+			__asm__ __volatile__(
+				".set\tmips3\n\t"
+				"sync\n\t"
+				"wait\n\t"
+				".set\tmips0");
+		}
 		break;
 #endif
 #ifdef CONFIG_BCM47XX_BCMA
 	case BCM47XX_BUS_TYPE_BCMA:
-		bcma_chipco_watchdog_timer_set(&bcm47xx_bus.bcma.bus.drv_cc, 3);
+		bcma_chipco_watchdog_timer_set(&bcm47xx_bus.bcma.bus.drv_cc, 1);
 		break;
 #endif
 	}
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] MIPS: BCM47XX: fix reboot problem on BCM4705/BCM4785
  2014-08-18 20:01 [PATCH v2] MIPS: BCM47XX: fix reboot problem on BCM4705/BCM4785 Hauke Mehrtens
@ 2014-08-19 10:12 ` Ralf Baechle
  0 siblings, 0 replies; 2+ messages in thread
From: Ralf Baechle @ 2014-08-19 10:12 UTC (permalink / raw)
  To: Hauke Mehrtens; +Cc: jogo, zajec5, linux-mips

On Mon, Aug 18, 2014 at 10:01:16PM +0200, Hauke Mehrtens wrote:

> This adds some code based on code from the Broadcom GPL tar to fix the
> reboot problems on BCM4705/BCM4785. I tried rebooting my device for ~10
> times and have never seen a problem. This reverts the changes in the
> previous commit and adds the real fix as suggested by Rafał.
> 
> Setting bit 22 in Reg 22, sel 4 puts the BIU (Bus Interface Unit) into
> async mode.

I'm going to apply this - but in the future, when reverting a patch please
don't fold new changes together with the revert, rather send a revert.

Thanks,

  Ralf

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-08-19 10:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-18 20:01 [PATCH v2] MIPS: BCM47XX: fix reboot problem on BCM4705/BCM4785 Hauke Mehrtens
2014-08-19 10:12 ` Ralf Baechle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox