mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 23:51:33 +00:00
i2c:designware Turn off the ctrl when setting the speed
The designware i2c controller must be turned off before setting the speed in IC_CON register, as stated in the section 6.3.1 of the dw_apb_i2c_db.pdf. Signed-off-by: Michel Sanches <michel.sanches@st.com> Signed-off-by: Armando Visconti <armando.visconti@st.com> Signed-off-by: Amit Virdi <amit.virdi@st.com>
This commit is contained in:
parent
031ed2fa74
commit
5e3e8dda51
1 changed files with 11 additions and 0 deletions
|
@ -40,6 +40,13 @@ static void set_speed(int i2c_spd)
|
||||||
unsigned int cntl;
|
unsigned int cntl;
|
||||||
unsigned int hcnt, lcnt;
|
unsigned int hcnt, lcnt;
|
||||||
unsigned int high, low;
|
unsigned int high, low;
|
||||||
|
unsigned int enbl;
|
||||||
|
|
||||||
|
/* to set speed cltr must be disabled */
|
||||||
|
enbl = readl(&i2c_regs_p->ic_enable);
|
||||||
|
enbl &= ~IC_ENABLE_0B;
|
||||||
|
writel(enbl, &i2c_regs_p->ic_enable);
|
||||||
|
|
||||||
|
|
||||||
cntl = (readl(&i2c_regs_p->ic_con) & (~IC_CON_SPD_MSK));
|
cntl = (readl(&i2c_regs_p->ic_con) & (~IC_CON_SPD_MSK));
|
||||||
|
|
||||||
|
@ -71,6 +78,10 @@ static void set_speed(int i2c_spd)
|
||||||
|
|
||||||
lcnt = (IC_CLK * low) / NANO_TO_MICRO;
|
lcnt = (IC_CLK * low) / NANO_TO_MICRO;
|
||||||
writel(lcnt, &i2c_regs_p->ic_fs_scl_lcnt);
|
writel(lcnt, &i2c_regs_p->ic_fs_scl_lcnt);
|
||||||
|
|
||||||
|
/* re-enable i2c ctrl back now that speed is set */
|
||||||
|
enbl |= IC_ENABLE_0B;
|
||||||
|
writel(enbl, &i2c_regs_p->ic_enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue