[U-Boot] [PATCH 13/16] Blackfin: Bf60x: add hw watchdog support
Bob Liu
lliubbo at gmail.com
Mon Aug 20 10:25:01 CEST 2012
On Wed, Aug 8, 2012 at 1:11 PM, Mike Frysinger <vapier at gentoo.org> wrote:
> On Tuesday 07 August 2012 04:07:52 Bob Liu wrote:
>> --- a/arch/blackfin/cpu/initcode.c
>> +++ b/arch/blackfin/cpu/initcode.c
>>
>> if (CONFIG_BFIN_BOOT_MODE != BFIN_BOOT_BYPASS) {
>> serial_putc('e');
>> +#ifdef __ADSPBF60x__
>> + int i;
>> + bfin_write_SEC_GCTL(0x2);
>> + while (i++ < 100000);
>> + bfin_write_SEC_FCTL(0xc1);
>> + bfin_write_SEC_SCTL(2, bfin_read_SEC_SCTL(2) | 0x6);
>> +
>> + bfin_write_SEC_CCTL(0x2);
>> + while (i++ < 100000);
>> + bfin_write_SEC_GCTL(0x1);
>> + bfin_write_SEC_CCTL(0x1);
>> +#endif
>
> err, this doesn't look like hardware watchdog ... this is the interrupt
> controller isn't it ?
The interrupt controller in bf60x has integrated a fault controller.
The watchdog can trigger a reset fault then the system can do automatic reset.
>
> those while() loops also won't fly -- you need to use a proper sync function
> here. certainly not without comments as to what's going on.
Will be updated.
>
>> --- a/arch/blackfin/cpu/start.S
>> +++ b/arch/blackfin/cpu/start.S
>> @@ -65,6 +65,7 @@ ENTRY(_start)
>> p5.h = HI(COREMMR_BASE);
>>
>> #ifdef CONFIG_HW_WATCHDOG
>> +#ifndef __ADSPBF60x__
>> # ifndef CONFIG_HW_WATCHDOG_TIMEOUT_START
>> # define CONFIG_HW_WATCHDOG_TIMEOUT_START 5000
>> # endif
>> @@ -78,6 +79,7 @@ ENTRY(_start)
>> /* fire up the watchdog - R0.L above needs to be 0x0000 */
>> W[p4 + (WDOG_CTL - SYSMMR_BASE)] = r0;
>> #endif
>> +#endif
>
> you need to implement the bf60x equivalent here and not just disable the bf5xx
> code
This code is setup a watchdog for bootstrap itself before entering
uboot common routine.
It's not that important and a little complicate to setup the interrupt
controller using assemble.
So i'd prefer to disable it for bf60x first.
--
Regards,
--Bob
More information about the U-Boot
mailing list