i2c: designware_i2c: add 'hs_hcnt' and 'hs_lcnt' for high speed
authorJun Chen <jun.chen@vatics.com>
Mon, 2 Mar 2020 08:58:57 +0000 (16:58 +0800)
committerHeiko Schocher <hs@denx.de>
Mon, 16 Mar 2020 07:04:29 +0000 (08:04 +0100)
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>
drivers/i2c/designware_i2c.c
drivers/i2c/designware_i2c.h

index 74aef77..088a6f3 100644 (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;
index 5a04ce5..7ee2361 100644 (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;
 };