
Hi,
We able to integrate u-boot with Linux along with Watchdog enabled for PPC440gx processor. Here I am giving the modification we did to make it work.
The intention to write this mail is to provide a reference code for the people who wants to use Watchdog feature with PPC440gx.
We have used u-boot-1.1.4 and Linux Kernel of version 2.6.16 on PPC440gx processor.
Steps that we have taken: 1. Enabled 'CONFIG_WATCHDOG' flag code in u-boot code.
2. Modified the 'kernel-2.6.16.1-ts.amcc440gx.basic.1\arch\ppc\kernel\time.c' (Modified code starts with 'Sachin' tag)
void reset_watchdog(void) { /* Sachin: Resetting Bit#0 and Bit#1 mtspr(SPRN_TSR, 0xc0000000); /*Sachin: added - end */ }
void timer_interrupt(struct pt_regs * regs) { int next_dec; unsigned long cpu = smp_processor_id(); unsigned jiffy_stamp = last_jiffy_stamp(cpu); extern void do_IRQ(struct pt_regs *);
/* Sachin: Reset the Watchdog timer */ reset_watchdog(); /*Sachin: added - end */
: : : : if (ppc_md.heartbeat && !ppc_md.heartbeat_count--) ppc_md.heartbeat();
irq_exit(); }
3. Modified the 'kernel-2.6.16.1-ts.amcc440gx.basic.1\arch\ppc\syslib\ibm44x_common.c':
void __init ibm44x_calibrate_decr(unsigned int freq) { unsigned long value; tb_ticks_per_jiffy = freq / HZ; tb_to_us = mulhwu_scale_factor(freq, 1000000); : : :
/*Sachin: added - start */ value = mfspr(SPRN_TCR); value |= TCR_DIE; mtspr(SPRN_TCR, value); /*Sachin: added - end */
//mtspr(SPRN_TCR, TCR_DIE); }
Thanks.
Regards, Sachin Rane