aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/i2c/busses/i2c-st.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/drivers/i2c/busses/i2c-st.c b/drivers/i2c/busses/i2c-st.c
index fc767ddba3fb..2e4eccd6599a 100644
--- a/drivers/i2c/busses/i2c-st.c
+++ b/drivers/i2c/busses/i2c-st.c
@@ -206,25 +206,31 @@ static inline void st_i2c_clr_bits(void __iomem *reg, u32 mask)
206 writel_relaxed(readl_relaxed(reg) & ~mask, reg); 206 writel_relaxed(readl_relaxed(reg) & ~mask, reg);
207} 207}
208 208
209/* From I2C Specifications v0.5 */ 209/*
210 * From I2C Specifications v0.5.
211 *
212 * All the values below have +10% margin added to be
213 * compatible with some out-of-spec devices,
214 * like HDMI link of the Toshiba 19AV600 TV.
215 */
210static struct st_i2c_timings i2c_timings[] = { 216static struct st_i2c_timings i2c_timings[] = {
211 [I2C_MODE_STANDARD] = { 217 [I2C_MODE_STANDARD] = {
212 .rate = 100000, 218 .rate = 100000,
213 .rep_start_hold = 4000, 219 .rep_start_hold = 4400,
214 .rep_start_setup = 4700, 220 .rep_start_setup = 5170,
215 .start_hold = 4000, 221 .start_hold = 4400,
216 .data_setup_time = 250, 222 .data_setup_time = 275,
217 .stop_setup_time = 4000, 223 .stop_setup_time = 4400,
218 .bus_free_time = 4700, 224 .bus_free_time = 5170,
219 }, 225 },
220 [I2C_MODE_FAST] = { 226 [I2C_MODE_FAST] = {
221 .rate = 400000, 227 .rate = 400000,
222 .rep_start_hold = 600, 228 .rep_start_hold = 660,
223 .rep_start_setup = 600, 229 .rep_start_setup = 660,
224 .start_hold = 600, 230 .start_hold = 660,
225 .data_setup_time = 100, 231 .data_setup_time = 110,
226 .stop_setup_time = 600, 232 .stop_setup_time = 660,
227 .bus_free_time = 1300, 233 .bus_free_time = 1430,
228 }, 234 },
229}; 235};
230 236