On Tue Aug 18 14:28:21 2026 +0200, Hans de Goede wrote:
> There have been several reports of the sensor not properly powering on,
> on laptops where an INT3472 handshake GPIO is used. Both with ov08x40 and
> hi556 sensors.
>
> Testing has shown that a delay of 200 ms is necessary in some cases.
> The handshake GPIO is typically used to signal an extra bridge or other IC
> with that IC running the full sensor power sequence based on the handshake
> signal and also possible controlling I2C pass-through.
>
> It seems that in some cases that extra IC takes up to 200 ms to before
> the sensor is fully powered up and ready for I2C communication.
>
> With the default handshake signal delay increased to 200 ms the quirk to
> increase it to 45 ms for the ov08x40 is no longer necessary and is actually
> undesirable since some ov08x40 setups also need the longer delay, drop it.
>
> Fixes: 30359c239ba8 ("platform/x86: int3472: Increase ov08x40 handshake GPIO
> delay to 45 ms")
> Closes:
> https://lore.kernel.org/platform-driver-x86/[email protected]/
> Reported-by: James Alexander <[email protected]>
> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2333331
> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2333647
> Cc: [email protected]
> Signed-off-by: Hans de Goede <[email protected]>
> Signed-off-by: Sakari Ailus <[email protected]>
Patch committed.
Thanks,
Sakari Ailus
drivers/platform/x86/intel/int3472/discrete.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
---
diff --git a/drivers/platform/x86/intel/int3472/discrete.c
b/drivers/platform/x86/intel/int3472/discrete.c
index 1f8751a7db0c..749e2e323583 100644
--- a/drivers/platform/x86/intel/int3472/discrete.c
+++ b/drivers/platform/x86/intel/int3472/discrete.c
@@ -15,6 +15,7 @@
#include <linux/platform_data/x86/int3472.h>
#include <linux/platform_device.h>
#include <linux/string_choices.h>
+#include <linux/time64.h>
#include <linux/uuid.h>
/*
@@ -178,13 +179,6 @@ static const struct int3472_gpio_map int3472_gpio_map[] = {
.type_to = INT3472_GPIO_TYPE_RESET,
.con_id = "enable",
},
- { /* ov08x40's handshake pin needs a 45 ms delay on some HP
laptops */
- .hids = (const char * const[]) { "OVTI08F4", NULL },
- .type_from = INT3472_GPIO_TYPE_HANDSHAKE,
- .type_to = INT3472_GPIO_TYPE_HANDSHAKE,
- .con_id = "dvdd",
- .enable_time_us = 45 * USEC_PER_MSEC,
- },
{ /* Sensors which expect "vana" as con_id for power enable */
.hids = power_enable_hids_vana,
.type_from = INT3472_GPIO_TYPE_POWER_ENABLE,
@@ -273,8 +267,8 @@ static void int3472_get_con_id_and_polarity(struct
int3472_discrete_device *int3
case INT3472_GPIO_TYPE_HANDSHAKE:
*con_id = "dvdd";
*gpio_flags = GPIO_ACTIVE_HIGH;
- /* Setups using a handshake pin need 25 ms enable delay */
- *enable_time_us = 25 * USEC_PER_MSEC;
+ /* Powering up the sensor through the handshake pin takes up to
200 ms */
+ *enable_time_us = 200 * USEC_PER_MSEC;
break;
default:
*con_id = "unknown";
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]