From: Hans de Goede <hansg@kernel.org>
To: "Jakob Berg Jespersen" <dev@berg.pm>,
"Daniel Scally" <dan.scally@ideasonboard.com>,
"Sakari Ailus" <sakari.ailus@linux.intel.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Cc: platform-driver-x86@vger.kernel.org, linux-media@vger.kernel.org,
linux-kernel@vger.kernel.org,
Tooraj Taraz <tooraj.taraz@yahoo.com>,
"Joseph V. Lavigne" <jlavig88@gmail.com>,
"D. Manresa" <dmanresa@gmail.com>
Subject: Re: [PATCH v3] platform/x86: int3472: support the POWER1 GPIO type
Date: Sun, 30 Aug 2026 14:30:48 +0200 [thread overview]
Message-ID: <619cbfad-5c9d-4491-bc21-229107d90223@kernel.org> (raw)
In-Reply-To: <20260829-sp7plus-int3472-v3-1-454b50485ce2@berg.pm>
Hi,
On 29-Aug-26 10:29, Jakob Berg Jespersen wrote:
> INT3472 can describe a second sensor power rail as a GPIO of type
> POWER1 (0x08), which the driver does not recognise, so the rail is left
> unmapped and never enabled:
>
> int3472-discrete INT3472:01: GPIO type 0x08 unknown; the sensor may
> not work
>
> On the Microsoft Surface Pro 7+ the rear camera's INT3472 (INT347A,
> ov8865) has such a pin; without it the ov8865 "dvdd" supply resolves to
> a dummy regulator and the sensor never probes.
>
> Define the POWER0 (0x07) and POWER1 (0x08) GPIO types and map POWER1 to
> a regulator with con_id "dvdd" for all devices, the supply the in-tree
> ov8865 driver already requests. POWER0 is defined but left unmapped, as
> no device that uses it is known.
>
> Out-of-tree work approached the same rail by exposing it to the sensor
> as a new "pwr1" supply (linux-surface PR #1867 for the Surface Pro 9,
> PR #2201 for the Pro 7+ ov8865); mapping POWER1 to the existing "dvdd"
> keeps the change contained to int3472.
>
> With this change the Surface Pro 7+ rear camera probes and streams
> reliably.
>
> Link: https://github.com/linux-surface/linux-surface/pull/1867
> Link: https://github.com/linux-surface/linux-surface/pull/2201
> Suggested-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> Signed-off-by: Jakob Berg Jespersen <dev@berg.pm>
Thanks, patch looks good to me:
Reviewed-by: Hans de Goede <johannes.goede@oss.qualcomm.com>
Regards,
Hans
> ---
> Changes in v3:
> - No functional changes; the patch is identical to v2, rebased onto
> current pdx86/for-next (which has since gained the multi-HID GPIO map
> entries and the IMX471 "vana" entries).
> - Resent with linux-media@vger.kernel.org on Cc, as requested.
> - Link to v2: https://patch.msgid.link/20260729-sp7plus-int3472-v2-1-cdfaf97ac3ad@berg.pm
>
> Changes in v2:
>
> - Reworked from a per-device INT347A quirk into a generic mapping of the
> POWER1 (0x08) GPIO type to "dvdd" for all devices, per review.
> - Added INT3472_GPIO_TYPE_POWER0 (0x07) and POWER1 (0x08) definitions;
> POWER0 is defined but left unmapped for now.
> - Retested on the Surface Pro 7+ (kernel 7.1.5): the rear ov8865 probes,
> instantiates its VCM, and streams.
> - Link to v1: https://patch.msgid.link/20260719-sp7plus-int3472-v1-1-521a43f5c191@berg.pm
> ---
> drivers/platform/x86/intel/int3472/discrete.c | 8 ++++++++
> include/linux/platform_data/x86/int3472.h | 2 ++
> 2 files changed, 10 insertions(+)
>
> diff --git a/drivers/platform/x86/intel/int3472/discrete.c b/drivers/platform/x86/intel/int3472/discrete.c
> index 6c729fcfce5d..6ab8e589fcd3 100644
> --- a/drivers/platform/x86/intel/int3472/discrete.c
> +++ b/drivers/platform/x86/intel/int3472/discrete.c
> @@ -266,6 +266,10 @@ static void int3472_get_con_id_and_polarity(struct int3472_discrete_device *int3
> *con_id = "avdd";
> *gpio_flags = GPIO_ACTIVE_HIGH;
> break;
> + case INT3472_GPIO_TYPE_POWER1:
> + *con_id = "dvdd";
> + *gpio_flags = GPIO_ACTIVE_HIGH;
> + break;
> case INT3472_GPIO_TYPE_DOVDD:
> *con_id = "dovdd";
> *gpio_flags = GPIO_ACTIVE_HIGH;
> @@ -296,6 +300,8 @@ static void int3472_get_con_id_and_polarity(struct int3472_discrete_device *int3
> * 0x00 Reset
> * 0x01 Power down
> * 0x02 Strobe
> + * 0x07 Power 0
> + * 0x08 Power 1
> * 0x0b Power enable
> * 0x0c Clock enable
> * 0x0d Privacy LED
> @@ -382,6 +388,7 @@ static int skl_int3472_handle_gpio_resources(struct acpi_resource *ares,
> case INT3472_GPIO_TYPE_PRIVACY_LED:
> case INT3472_GPIO_TYPE_STROBE:
> case INT3472_GPIO_TYPE_POWER_ENABLE:
> + case INT3472_GPIO_TYPE_POWER1:
> case INT3472_GPIO_TYPE_DOVDD:
> case INT3472_GPIO_TYPE_HANDSHAKE:
> gpio = skl_int3472_gpiod_get_from_temp_lookup(int3472, agpio, con_id, gpio_flags);
> @@ -408,6 +415,7 @@ static int skl_int3472_handle_gpio_resources(struct acpi_resource *ares,
> case INT3472_GPIO_TYPE_POWER_ENABLE:
> second_sensor = int3472->quirks.avdd_second_sensor;
> fallthrough;
> + case INT3472_GPIO_TYPE_POWER1:
> case INT3472_GPIO_TYPE_DOVDD:
> case INT3472_GPIO_TYPE_HANDSHAKE:
> ret = skl_int3472_register_regulator(int3472, gpio, enable_time_us,
> diff --git a/include/linux/platform_data/x86/int3472.h b/include/linux/platform_data/x86/int3472.h
> index a73841dfae27..b1040e36deb8 100644
> --- a/include/linux/platform_data/x86/int3472.h
> +++ b/include/linux/platform_data/x86/int3472.h
> @@ -25,6 +25,8 @@
> #define INT3472_GPIO_TYPE_RESET 0x00
> #define INT3472_GPIO_TYPE_POWERDOWN 0x01
> #define INT3472_GPIO_TYPE_STROBE 0x02
> +#define INT3472_GPIO_TYPE_POWER0 0x07
> +#define INT3472_GPIO_TYPE_POWER1 0x08
> #define INT3472_GPIO_TYPE_POWER_ENABLE 0x0b
> #define INT3472_GPIO_TYPE_CLK_ENABLE 0x0c
> #define INT3472_GPIO_TYPE_PRIVACY_LED 0x0d
>
> ---
> base-commit: 5b05bb3f6c5716fab6911e12d60dd1f43ad9806a
> change-id: 20260719-sp7plus-int3472-8f014b8de79c
>
> Best regards,
> --
> Jakob Berg Jespersen <dev@berg.pm>
>
next prev parent reply other threads:[~2026-08-30 12:30 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-29 8:29 [PATCH v3] platform/x86: int3472: support the POWER1 GPIO type Jakob Berg Jespersen
2026-08-30 12:30 ` Hans de Goede [this message]
2026-09-01 6:33 ` D. Manresa
-- strict thread matches above, loose matches on Subject: below --
2026-08-30 13:41 Sergey Lebedev
2026-08-31 9:21 ` Jakob Berg Jespersen
2026-08-31 9:34 ` Hans de Goede
2026-08-31 9:40 ` Jakob Berg Jespersen
2026-08-31 9:39 ` Hans de Goede
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=619cbfad-5c9d-4491-bc21-229107d90223@kernel.org \
--to=hansg@kernel.org \
--cc=dan.scally@ideasonboard.com \
--cc=dev@berg.pm \
--cc=dmanresa@gmail.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jlavig88@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=tooraj.taraz@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.