On 07/30/2014 08:06 PM, Rafał Miłecki wrote: > On 28 July 2014 23:53, Hauke Mehrtens <hauke@xxxxxxxxxx> wrote: >> The reboot on the BCM47XX SoCs is done, by setting the watchdog counter >> to 1 and let it trigger a reboot, when it reaches 0. Some devices with >> a BCM4705/BCM4785 SoC do not reboot when the counter is set to 1 and >> decreased to 0 by the hardware. It looks like it works more reliable >> when we set it to 3. As far as I understand the hardware, this should >> not make any difference, but I do not have access to any documentation >> for this SoC. >> It is still not 100% reliable. > > Did you see code in hndmips.c of Broadcom SDK? Maybe we need this > magic ASM code they have it there? > > if (CHIPID(sih->chip) == BCM4785_CHIP_ID) > MTC0(C0_BROADCOM, 4, (1 << 22)); > si_watchdog(sih, 1); > if (CHIPID(sih->chip) == BCM4785_CHIP_ID) { > __asm__ __volatile__( > ".set\tmips3\n\t" > "sync\n\t" > "wait\n\t" > ".set\tmips0"); > } > while (1); > > Maybe it'll work better and more reliable? > This looks interesting, I haven't seen this. Please drop this patch for now, I will create a new one Hauke