On Tue, Oct 08, 2013 at 05:00:54PM +0200, Romain Baeriswyl wrote: > static void __i2c_dw_enable(struct dw_i2c_dev *dev, bool enable) > @@ -286,6 +287,7 @@ int i2c_dw_init(struct dw_i2c_dev *dev) > u32 input_clock_khz; > u32 hcnt, lcnt; > u32 reg; > + u32 sda_falling_time, scl_falling_time; > > input_clock_khz = dev->get_clk_rate_khz(dev); > > @@ -307,15 +309,25 @@ int i2c_dw_init(struct dw_i2c_dev *dev) > > /* set standard and fast speed deviders for high/low periods */ > > + if (dev->sda_falling_time) > + sda_falling_time = dev->sda_falling_time; > + else > + sda_falling_time = 300; /* ns */ I think this looks better: sda_falling_time = dev->sda_falling_time ? dev->sda_falling_time : 300; > + > + if (dev->scl_falling_time) > + scl_falling_time = dev->scl_falling_time; > + else > + scl_falling_time = 300; /* ns */ Ditto. > + > /* Standard-mode */ > hcnt = i2c_dw_scl_hcnt(input_clock_khz, > - 40, /* tHD;STA = tHIGH = 4.0 us */ > - 3, /* tf = 0.3 us */ > + 4000, /* tHD;STA = tHIGH = 4.0 us */ > + sda_falling_time, > 0, /* 0: DW default, 1: Ideal */ > 0); /* No offset */ > lcnt = i2c_dw_scl_lcnt(input_clock_khz, > - 47, /* tLOW = 4.7 us */ > - 3, /* tf = 0.3 us */ > + 4700, /* tLOW = 4.7 us */ > + scl_falling_time, > 0); /* No offset */ > > /* Allow platforms to specify the ideal HCNT and LCNT values */ -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html