Re: [PATCH 5/5] i2c: designware: Switch over to i2c_freq_mode_string()

From: Andy Shevchenko
Date: Wed Mar 31 2021 - 06:20:31 EST


On Wed, Mar 31, 2021 at 08:53:02AM +0000, Song Bao Hua (Barry Song) wrote:
>
> > No, please read the code carefully.
> > We can duplicate conditional, but it brings a bit of inconsistency to how the counters are printed.
>
> Thanks for clarification, I am still confused as the original
> code print the real mode based on dev->master_cfg, the new
> code is printing mode based on frequency.
>
> My understanding is the original code could fall back to a lower
> speed when higher speed modes were not set successfully. For
> example, high speed mode falls back to fast mode:

This is a good catch! I should be fixed by a separate patch I assume.

> if ((dev->master_cfg & DW_IC_CON_SPEED_MASK) ==
> DW_IC_CON_SPEED_HIGH) {
> if ((comp_param1 & DW_IC_COMP_PARAM_1_SPEED_MODE_MASK)
> != DW_IC_COMP_PARAM_1_SPEED_MODE_HIGH) {
> dev_err(dev->dev, "High Speed not supported!\n");
> dev->master_cfg &= ~DW_IC_CON_SPEED_MASK;
> dev->master_cfg |= DW_IC_CON_SPEED_FAST;

Basically we have to adjust timings here to reflect this change.

> dev->hs_hcnt = 0;
> dev->hs_lcnt = 0;
> }


--
With Best Regards,
Andy Shevchenko