Skip to content
Snippets Groups Projects
Commit e739bc95 authored by Timur Tabi's avatar Timur Tabi Committed by Kim Phillips
Browse files

FSL I2C driver programs the two I2C busses differently


The i2c_init() function in fsl_i2c.c programs the two I2C busses differently.
The second I2C bus has its slave address programmed incorrectly and is
missing a 5-us delay.

Signed-off-by: default avatarTimur Tabi <timur@freescale.com>
Signed-off-by: default avatarKim Phillips <kim.phillips@freescale.com>
parent df33f6b4
No related branches found
No related tags found
No related merge requests found
...@@ -69,9 +69,10 @@ i2c_init(int speed, int slaveadd) ...@@ -69,9 +69,10 @@ i2c_init(int speed, int slaveadd)
dev = (struct fsl_i2c *) (CFG_IMMR + CFG_I2C2_OFFSET); dev = (struct fsl_i2c *) (CFG_IMMR + CFG_I2C2_OFFSET);
writeb(0, &dev->cr); /* stop I2C controller */ writeb(0, &dev->cr); /* stop I2C controller */
udelay(5); /* let it shutdown in peace */
writeb(0x3F, &dev->fdr); /* set bus speed */ writeb(0x3F, &dev->fdr); /* set bus speed */
writeb(0x3F, &dev->dfsrr); /* set default filter */ writeb(0x3F, &dev->dfsrr); /* set default filter */
writeb(slaveadd, &dev->adr); /* write slave address */ writeb(slaveadd << 1, &dev->adr); /* write slave address */
writeb(0x0, &dev->sr); /* clear status register */ writeb(0x0, &dev->sr); /* clear status register */
writeb(I2C_CR_MEN, &dev->cr); /* start I2C controller */ writeb(I2C_CR_MEN, &dev->cr); /* start I2C controller */
#endif /* CFG_I2C2_OFFSET */ #endif /* CFG_I2C2_OFFSET */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment