I have mpc8xx based board, with 2.4.18 kernel. I have m41t81 RTC chip hooked
on i2c bus. I am using i2c drivers from the denx ppc dev tree, and 8xx algo.
I modified the m41t11 driver of denx for my m41t81 chip. When my m41t81
based module calls cpm_iic_write function of i2c-algo-8xx, it hangs the
board. It hangs somewhere here..




        if(count > 16){
                /* Chip bug, set enable here */

                local_irq_save(flags);
                i2c->i2c_i2cmr = 0x13;  /* Enable some interupts */
                i2c->i2c_i2cer = 0xff;
                i2c->i2c_i2mod |= 1;    /* Enable */
                i2c->i2c_i2com |= 0x80; /* Begin transmission */

                /* Wait for IIC transfer */
                tmo = interruptible_sleep_on_timeout(&iic_wait,1*HZ);

                local_irq_restore(flags);

        } else {  /* busy wait for small transfers, its faster */
                i2c->i2c_i2cmr = 0x00;  /* Disable I2C interupts */
                i2c->i2c_i2cer = 0xff;


                i2c->i2c_i2mod |= 1;    /* Enable */

                /*CRAHSES SOMEWHERE HERE....*/
                i2c->i2c_i2com |= 0x80; /* Begin transmission */
                tmo = jiffies + 1*HZ;

                while(!(i2c->i2c_i2cer & 0x12 || time_after(jiffies, tmo)));
/* Busy wait, with a timeout */
        }


Any help is appreciated.


Thanks
Lokesh Kumar
Wireless Matrix USA Inc.
703-262-4032


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/



Reply via email to