On 5/30/19 10:43 AM, Ley Foon Tan wrote:
> Get clock rate from clock DM if CONFIG_CLK is enabled.
> Otherwise, uses IC_CLK define.
> 
> Signed-off-by: Ley Foon Tan <[email protected]>
> ---
>  drivers/i2c/designware_i2c.c | 54 +++++++++++++++++++++++++++++-------
>  1 file changed, 44 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/i2c/designware_i2c.c b/drivers/i2c/designware_i2c.c
> index 9ccc2411a6..a1ed30650c 100644
> --- a/drivers/i2c/designware_i2c.c
> +++ b/drivers/i2c/designware_i2c.c
> @@ -4,6 +4,7 @@
>   * Vipin Kumar, ST Micoelectronics, [email protected].
>   */
>  
> +#include <clk.h>
>  #include <common.h>
>  #include <dm.h>
>  #include <i2c.h>
> @@ -35,6 +36,9 @@ struct dw_i2c {
>       struct i2c_regs *regs;
>       struct dw_scl_sda_cfg *scl_sda_cfg;
>       struct reset_ctl_bulk resets;
> +#if CONFIG_IS_ENABLED(CLK)
> +     struct clk clk;
> +#endif
>  };
>  
>  #ifdef CONFIG_SYS_I2C_DW_ENABLE_STATUS_UNSUPPORTED
> @@ -78,7 +82,7 @@ static int dw_i2c_enable(struct i2c_regs *i2c_base, bool 
> enable)
>   */
>  static unsigned int __dw_i2c_set_bus_speed(struct i2c_regs *i2c_base,
>                                          struct dw_scl_sda_cfg *scl_sda_cfg,
> -                                        unsigned int speed)
> +                                        unsigned int speed, u32 bus_mhz)

unsigned int bus_mhz , it's not a fixed-width register content, but just
some random unsigned integer.

[...]

> @@ -523,8 +527,20 @@ static int designware_i2c_xfer(struct udevice *bus, 
> struct i2c_msg *msg,
>  static int designware_i2c_set_bus_speed(struct udevice *bus, unsigned int 
> speed)
>  {
>       struct dw_i2c *i2c = dev_get_priv(bus);
> +     ulong rate;
> +
> +#if CONFIG_IS_ENABLED(CLK)
> +     rate = clk_get_rate(&i2c->clk);

Do we need to re-read the bus frequency for each transfer ?
I would expect set_bus_speed callback to set the frequencies once and
then keep them that way until it's called again.

[...]

-- 
Best regards,
Marek Vasut
_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to