|
@@ -206,25 +206,31 @@ static inline void st_i2c_clr_bits(void __iomem *reg, u32 mask)
|
|
|
writel_relaxed(readl_relaxed(reg) & ~mask, reg);
|
|
|
}
|
|
|
|
|
|
-/* From I2C Specifications v0.5 */
|
|
|
+/*
|
|
|
+ * From I2C Specifications v0.5.
|
|
|
+ *
|
|
|
+ * All the values below have +10% margin added to be
|
|
|
+ * compatible with some out-of-spec devices,
|
|
|
+ * like HDMI link of the Toshiba 19AV600 TV.
|
|
|
+ */
|
|
|
static struct st_i2c_timings i2c_timings[] = {
|
|
|
[I2C_MODE_STANDARD] = {
|
|
|
.rate = 100000,
|
|
|
- .rep_start_hold = 4000,
|
|
|
- .rep_start_setup = 4700,
|
|
|
- .start_hold = 4000,
|
|
|
- .data_setup_time = 250,
|
|
|
- .stop_setup_time = 4000,
|
|
|
- .bus_free_time = 4700,
|
|
|
+ .rep_start_hold = 4400,
|
|
|
+ .rep_start_setup = 5170,
|
|
|
+ .start_hold = 4400,
|
|
|
+ .data_setup_time = 275,
|
|
|
+ .stop_setup_time = 4400,
|
|
|
+ .bus_free_time = 5170,
|
|
|
},
|
|
|
[I2C_MODE_FAST] = {
|
|
|
.rate = 400000,
|
|
|
- .rep_start_hold = 600,
|
|
|
- .rep_start_setup = 600,
|
|
|
- .start_hold = 600,
|
|
|
- .data_setup_time = 100,
|
|
|
- .stop_setup_time = 600,
|
|
|
- .bus_free_time = 1300,
|
|
|
+ .rep_start_hold = 660,
|
|
|
+ .rep_start_setup = 660,
|
|
|
+ .start_hold = 660,
|
|
|
+ .data_setup_time = 110,
|
|
|
+ .stop_setup_time = 660,
|
|
|
+ .bus_free_time = 1430,
|
|
|
},
|
|
|
};
|
|
|
|