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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to