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

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to