[U-Boot] [PATCH] 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 --- drivers/i2c/designware_i2c.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/drivers/i2c/designware_i2c.c b/drivers/i2c/designware_i2c.c index c2f0662..c5c6015 100644 --- a/drivers/i2c/designware_i2c.c +++ b/drivers/i2c/designware_i2c.c @@ -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); }
/*

Hi Alexey,
On Thu, 7 Nov 2013 17:52:18 +0400, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
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
/me wonders what made this patch Cc: me. Is it ARM-related in some way?
Amicalement,

Hello Alexey,
Am 07.11.2013 14:52, schrieb Alexey Brodkin:
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 Brodkinabrodkin@synopsys.com
Cc: Tom Rinitrini@ti.com cc: Armando Viscontiarmando.visconti@st.com Cc: Stefan Roesesr@denx.de Cc: Albert ARIBAUDalbert.u.boot@aribaud.net Cc: Heiko Schocherhs@denx.de Cc: Vipin KUMARvipin.kumar@st.com Cc: Tom RixTom.Rix@windriver.com Cc: Mischa Jonkermjonker@synopsys.com
drivers/i2c/designware_i2c.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
Thanks!
Applied to u-boot-i2c.git
bye, Heiko
participants (3)
-
Albert ARIBAUD
-
Alexey Brodkin
-
Heiko Schocher