]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: i2c: ds90ub953: Speed-up I2C watchdog timer
authorJai Luthra <jai.luthra@ideasonboard.com>
Mon, 3 Mar 2025 16:02:11 +0000 (21:32 +0530)
committerHans Verkuil <hverkuil@xs4all.nl>
Fri, 25 Apr 2025 08:15:06 +0000 (10:15 +0200)
On the I2C bus for remote clients (sensors), by default the watchdog
timer expires in 1s. To allow for a quicker system bring-up time, TI
recommends to speed it up to 50us [1].

[1]: Section 7.3.1.1 - https://www.ti.com/lit/gpn/ds90ub953-q1

Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/i2c/ds90ub953.c

index a08aad3f7fe09f7b396da9c720ed9993d392410c..a5c23e94f4eab5896a2114cfdf2e5f68cde77568 100644 (file)
 #define UB953_REG_CLKOUT_CTRL0                 0x06
 #define UB953_REG_CLKOUT_CTRL1                 0x07
 
+#define UB953_REG_I2C_CONTROL2                 0x0a
+#define UB953_REG_I2C_CONTROL2_SDA_OUTPUT_SETUP_SHIFT  4
+#define UB953_REG_I2C_CONTROL2_BUS_SPEEDUP     BIT(1)
+
 #define UB953_REG_SCL_HIGH_TIME                        0x0b
 #define UB953_REG_SCL_LOW_TIME                 0x0c
 
@@ -1320,7 +1324,12 @@ static int ub953_hw_init(struct ub953_data *priv)
        if (ret)
                return ret;
 
-       return 0;
+       v = 1U << UB953_REG_I2C_CONTROL2_SDA_OUTPUT_SETUP_SHIFT;
+       v |= UB953_REG_I2C_CONTROL2_BUS_SPEEDUP;
+
+       ret = ub953_write(priv, UB953_REG_I2C_CONTROL2, v, NULL);
+
+       return ret;
 }
 
 static int ub953_subdev_init(struct ub953_data *priv)