designware_i2c: disable i2c controller during target address setup
As it is stated in DesignWare I2C databook: writes to IC_TAR (0x4) register succeed only when IC_ENABLE[0] is set to 0. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Tom Rini <trini@ti.com> cc: Armando Visconti <armando.visconti@st.com> Cc: Stefan Roese <sr@denx.de> Cc: Albert ARIBAUD <albert.u.boot@aribaud.net> Cc: Heiko Schocher <hs@denx.de> Cc: Vipin KUMAR <vipin.kumar@st.com> Cc: Tom Rix <Tom.Rix@windriver.com> Cc: Mischa Jonker <mjonker@synopsys.com>
This commit is contained in:
parent
a2e0a45d2e
commit
8b7c872539
@ -151,7 +151,19 @@ void i2c_init(int speed, int slaveadd)
|
||||
*/
|
||||
static void i2c_setaddress(unsigned int i2c_addr)
|
||||
{
|
||||
unsigned int enbl;
|
||||
|
||||
/* Disable i2c */
|
||||
enbl = readl(&i2c_regs_p->ic_enable);
|
||||
enbl &= ~IC_ENABLE_0B;
|
||||
writel(enbl, &i2c_regs_p->ic_enable);
|
||||
|
||||
writel(i2c_addr, &i2c_regs_p->ic_tar);
|
||||
|
||||
/* Enable i2c */
|
||||
enbl = readl(&i2c_regs_p->ic_enable);
|
||||
enbl |= IC_ENABLE_0B;
|
||||
writel(enbl, &i2c_regs_p->ic_enable);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user