i2c: designware_i2c: add 'hs_hcnt' and 'hs_lcnt' for high speed

Add support for high speed if scl_sda_cfg exist.

Signed-off-by: Jun Chen <ptchentw@gmail.com>
Signed-off-by: Jun Chen <jun.chen@vatics.com>
This commit is contained in:
Jun Chen 2020-03-02 16:58:57 +08:00 committed by Heiko Schocher
parent be26342314
commit 27d483bfa3
2 changed files with 7 additions and 0 deletions

View File

@ -240,6 +240,9 @@ static int calc_bus_speed(struct dw_i2c *priv, int speed, ulong bus_clk,
if (i2c_spd == IC_SPEED_MODE_STANDARD) {
config->scl_hcnt = scl_sda_cfg->ss_hcnt;
config->scl_lcnt = scl_sda_cfg->ss_lcnt;
} else if (i2c_spd == IC_SPEED_MODE_HIGH) {
config->scl_hcnt = scl_sda_cfg->hs_hcnt;
config->scl_lcnt = scl_sda_cfg->hs_lcnt;
} else {
config->scl_hcnt = scl_sda_cfg->fs_hcnt;
config->scl_lcnt = scl_sda_cfg->fs_lcnt;

View File

@ -146,15 +146,19 @@ struct i2c_regs {
*
* @ss_hcnt: Standard speed high time in ns
* @fs_hcnt: Fast speed high time in ns
* @hs_hcnt: High speed high time in ns
* @ss_lcnt: Standard speed low time in ns
* @fs_lcnt: Fast speed low time in ns
* @hs_lcnt: High speed low time in ns
* @sda_hold: SDA hold time
*/
struct dw_scl_sda_cfg {
u32 ss_hcnt;
u32 fs_hcnt;
u32 hs_hcnt;
u32 ss_lcnt;
u32 fs_lcnt;
u32 hs_lcnt;
u32 sda_hold;
};