aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c/busses/i2c-st.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/i2c/busses/i2c-st.c')
-rw-r--r--drivers/i2c/busses/i2c-st.c34
1 files changed, 20 insertions, 14 deletions
diff --git a/drivers/i2c/busses/i2c-st.c b/drivers/i2c/busses/i2c-st.c
index 95b947670386..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
@@ -815,7 +821,7 @@ static int st_i2c_probe(struct platform_device *pdev)
815 821
816 adap = &i2c_dev->adap; 822 adap = &i2c_dev->adap;
817 i2c_set_adapdata(adap, i2c_dev); 823 i2c_set_adapdata(adap, i2c_dev);
818 snprintf(adap->name, sizeof(adap->name), "ST I2C(0x%x)", res->start); 824 snprintf(adap->name, sizeof(adap->name), "ST I2C(0x%pa)", &res->start);
819 adap->owner = THIS_MODULE; 825 adap->owner = THIS_MODULE;
820 adap->timeout = 2 * HZ; 826 adap->timeout = 2 * HZ;
821 adap->retries = 0; 827 adap->retries = 0;