Skip to content
Snippets Groups Projects
Commit 5e3e8dda authored by Armando Visconti's avatar Armando Visconti Committed by Heiko Schocher
Browse files

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: default avatarMichel Sanches <michel.sanches@st.com>
Signed-off-by: default avatarArmando Visconti <armando.visconti@st.com>
Signed-off-by: default avatarAmit Virdi <amit.virdi@st.com>
parent 031ed2fa
No related merge requests found
......@@ -40,6 +40,13 @@ static void set_speed(int i2c_spd)
unsigned int cntl;
unsigned int hcnt, lcnt;
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));
......@@ -71,6 +78,10 @@ static void set_speed(int i2c_spd)
lcnt = (IC_CLK * low) / NANO_TO_MICRO;
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);
}
/*
......
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