All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] platform/x86: int3472: Increase handshake GPIO delay to 200 ms
@ 2026-08-18 12:14 Hans de Goede
  2026-08-18 12:22 ` Hans de Goede
  2026-09-12 23:34 ` James Alexander
  0 siblings, 2 replies; 3+ messages in thread
From: Hans de Goede @ 2026-08-18 12:14 UTC (permalink / raw)
  To: Ilpo Järvinen, Daniel Scally, Sakari Ailus
  Cc: Hans de Goede, platform-driver-x86, linux-media, James Alexander,
	stable

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/20260816204247.2844986-1-opensource@inspiredexperts.com/
Reported-by: James Alexander <opensource@inspiredexperts.com>
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2333331
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2333647
Cc: stable@vger.kernel.org
Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com>
---
 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 115bb37577a1..f9e42959647e 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>
 
 /*
@@ -157,13 +158,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 */
-		.hid = "OVTI08F4",
-		.type_from = INT3472_GPIO_TYPE_HANDSHAKE,
-		.type_to = INT3472_GPIO_TYPE_HANDSHAKE,
-		.con_id = "dvdd",
-		.enable_time_us = 45 * USEC_PER_MSEC,
-	},
 };
 
 static void int3472_get_con_id_and_polarity(struct int3472_discrete_device *int3472, u8 *type,
@@ -234,8 +228,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";
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] platform/x86: int3472: Increase handshake GPIO delay to 200 ms
  2026-08-18 12:14 [PATCH] platform/x86: int3472: Increase handshake GPIO delay to 200 ms Hans de Goede
@ 2026-08-18 12:22 ` Hans de Goede
  2026-09-12 23:34 ` James Alexander
  1 sibling, 0 replies; 3+ messages in thread
From: Hans de Goede @ 2026-08-18 12:22 UTC (permalink / raw)
  To: Ilpo Järvinen, Daniel Scally, Sakari Ailus
  Cc: platform-driver-x86, linux-media, James Alexander, stable

Hi,

On 18-Aug-26 14:14, 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/20260816204247.2844986-1-opensource@inspiredexperts.com/
> Reported-by: James Alexander <opensource@inspiredexperts.com>
> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2333331
> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2333647
> Cc: stable@vger.kernel.org
> Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com>

This does not apply cleanly on media-committers/next, let me send a v2
with this fixed.

James, assuming you are not running a -next kernel, if you want to give
this a test run you can use this v1 for testing.

Regards,

Hans


> ---
>  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 115bb37577a1..f9e42959647e 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>
>  
>  /*
> @@ -157,13 +158,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 */
> -		.hid = "OVTI08F4",
> -		.type_from = INT3472_GPIO_TYPE_HANDSHAKE,
> -		.type_to = INT3472_GPIO_TYPE_HANDSHAKE,
> -		.con_id = "dvdd",
> -		.enable_time_us = 45 * USEC_PER_MSEC,
> -	},
>  };
>  
>  static void int3472_get_con_id_and_polarity(struct int3472_discrete_device *int3472, u8 *type,
> @@ -234,8 +228,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";


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] platform/x86: int3472: Increase handshake GPIO delay to 200 ms
  2026-08-18 12:14 [PATCH] platform/x86: int3472: Increase handshake GPIO delay to 200 ms Hans de Goede
  2026-08-18 12:22 ` Hans de Goede
@ 2026-09-12 23:34 ` James Alexander
  1 sibling, 0 replies; 3+ messages in thread
From: James Alexander @ 2026-09-12 23:34 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Ilpo Järvinen, Daniel Scally, Sakari Ailus,
	platform-driver-x86, linux-media, stable

Tested on the affected HP Spectre x360 14-eu0xxx after backporting to 
Ubuntu's 7.0.14 kernel. The sensor probed successfully across multiple 
reboots with no recurrence of the -121 chip-ID error.

Tested-by: James Alexander <opensource@inspiredexperts.com>

On 2026-08-18 06:14, 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/20260816204247.2844986-1-opensource@inspiredexperts.com/
> Reported-by: James Alexander <opensource@inspiredexperts.com>
> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2333331
> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2333647
> Cc: stable@vger.kernel.org
> Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com>
> ---
>  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 115bb37577a1..f9e42959647e 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>
> 
>  /*
> @@ -157,13 +158,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 
> */
> -		.hid = "OVTI08F4",
> -		.type_from = INT3472_GPIO_TYPE_HANDSHAKE,
> -		.type_to = INT3472_GPIO_TYPE_HANDSHAKE,
> -		.con_id = "dvdd",
> -		.enable_time_us = 45 * USEC_PER_MSEC,
> -	},
>  };
> 
>  static void int3472_get_con_id_and_polarity(struct 
> int3472_discrete_device *int3472, u8 *type,
> @@ -234,8 +228,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";

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-09-12 23:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-18 12:14 [PATCH] platform/x86: int3472: Increase handshake GPIO delay to 200 ms Hans de Goede
2026-08-18 12:22 ` Hans de Goede
2026-09-12 23:34 ` James Alexander

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.