From: Hans de Goede <hansg@kernel.org>
To: diamondback <diamondback@cohunt.app>,
Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: "Alexander Patrakov" <patrakov@gmail.com>,
"Dan Scally" <dan.scally@ideasonboard.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
platform-driver-x86@vger.kernel.org,
"Linux Media Mailing List" <linux-media@vger.kernel.org>,
"Sahan Nissanka" <adee.sahan@gmail.com>
Subject: Re: int3472: GPIO type names disagree with Intel's Windows driver
Date: Tue, 13 Oct 2026 12:04:43 +0200 [thread overview]
Message-ID: <87ea0d84-0122-4302-973a-05a6880cf6d8@kernel.org> (raw)
In-Reply-To: <1ab8b696-efe2-44d7-a440-bd54bd705232@kernel.org>
Hi,
On 12-Oct-26 18:10, Hans de Goede wrote:
> Hi,
>
> On 10-Oct-26 10:01, diamondback wrote:
>> On Saturday, October 10th, 2026 at 12:36 AM, Sakari Ailus <sakari.ailus@linux.intel.com> wrote:
>>
>>> The GPIO naming in Windows drivers is also an abstraction while Linux
>>> drivers typically use datasheet names of regulators, which are sensor
>>> specific. The handshake GPIO shouldn't exist with the regulators so it
>>> should be possible to map the rest independently of that. Changing the
>>> default mapping would also be possible, in principle, but that'd still
>>> require ensuring all sensor drivers still get the required regulators. I'm
>>> not sure it's worth it.
>>
>> Answering Alexander's question to me from the first mail:
>>
>> On 09/10/2026 04:06, Alexander Patrakov wrote:
>>> Leif, do you remember what it was based on, and which other GPIO
>>> types that machine's INT3472 reports?
>>
>> It was based on inference. My notes from February only say "likely
>> DOVDD": the ov5675 driver asks for avdd, dovdd and dvdd, 0x0b and 0x12
>> already had avdd and dvdd, so 0x10 got the remaining name. v1 already
>> called it DOVDD; Hans only asked me to drop the OVTI5675 quirk entry and
>> spell the con_id "dovdd" instead of "vio". In hindsight, my commit
>> message should not have stated it so concretely.
>>
>> What the Fold declares (from _DSM and the BIOS pin fields):
>>
>> INT3472:00 (\_SB.PC00.DSC0), all sensor-on value 1:
>> 0x00 reset pin 335
>> 0x0b PowerEn pin 140
>> 0x10 Avdd pin 164
>> INT3472:01 (\_SB.PC00.DSC1): no _CRS, zero pins.
>>
>> No 0x0f, 0x11 or 0x12. And a correction: that INT3472 is not the
>> OV5675's. The OV5675's _DEP names only the IVSC device, it uses dummy
>> regulators for all three supplies, and the supply map shows both
>> regulators going to the IR sensor:
>>
>> INT3472:00-avdd -> i2c-SMO55F0:00.avdd
>> INT3472:00-dovdd -> i2c-SMO55F0:00.dovdd
>>
>> So 0x10 on the Fold is a VD55G0 pin, not an OV5675 one.
>
> Thank you for providing this information.
>
>> Dan's suggestion makes sense to me
> I'm afraid that Dan's suggestion to:
>
> "I think that what probably needs to happen, really, is for
> skl_int3472_register_regulator() to look up its array of consumer_supplies (which
> maps sensor device name to regulator name) based on DMI matching just as
> int3472_tps68470_get_board_data() does for the TPS68470 IC version of the INT3472"
>
> Is not going to scale we are seeing many many different laptop models using
> the discrete INT3472 devices, so we really need a generic solution here and
> so far the current code has been scaling reasonable well.
>
> The fact that currently we have a conflict between 0x0b poweren -> avdd
> and 0x10 Avdd -> dovdd is unfortunate. I would like to see 0x10 register
> the avdd regulator as per the Windows table, but that might cause
> breakage on some laptop models.
>
> For now the only laptop + sensor which we've seen use 0xf and 0x11 (+ 0x10)
> _DSM type GPIOs is Alexander's Lenovo Yoga Duet 7 13ITL6 with the OVTI5675
> sensor. The other laptop, diamond back's ThinkPad X1 Fold 16 Gen 1, which
> we know to use an OVTI5675 is behind a ivsc and does not claim any GPIOs at
> all.
>
> So for now I think it what should happen is:
>
>
> 1. An int3472 driver patch renaming INT3472_GPIO_TYPE_DOVDD to
> INT3472_GPIO_TYPE_AVDD, while keeping this mapped to dovdd with a remark
> that this is mapped to dovdd for historical reasons and cannot be easily
> changed because this might break support for some laptops
>
> + 2 new defines for DOVDD / DVDD, resulting in (combined)
>
> #define INT3472_GPIO_TYPE_DOVDD 0x0f
> #define INT3472_GPIO_TYPE_AVDD 0x10
> #define INT3472_GPIO_TYPE_DVDD 0x11
>
> So this basically syncs our defines with what we've learned from
> the Windows drivers, without changing any functionality.
>
>
> 2. A patch to add mappings for the new INT3472_GPIO_TYPE_DOVDD(0x0f) and
> INT3472_GPIO_TYPE_DVDD(0x11) values to dovdd resp dvdd regulators.
>
> This one just adds new mappings so should be safe to.
>
>
> 3. A patch adding an entry for the OVTI5675 to int3472_gpio_map[] to
> actually map the new INT3472_GPIO_TYPE_AVDD (0x10) the avdd (on the
> OVTI5675 only)
>
> This might cause breakage if there is a laptop not on our radar
> with a OVTI5675 sensor using 0x0b (power-enable) + 0x10 (avdd) gpio
> types at the same time. But there is only one way to find that out
> really.
>
>
> 4. A patch to change the mapping of the new INT3472_GPIO_TYPE_AVDD (0x10)
> to actually be mapped to avdd and mapping INT3472_GPIO_TYPE_POWER_ENABLE
> to dvdd instead of avdd + dropping the int3472_gpio_map[] added in
> the 3th patch.
> > Yes this undoes patch 3, the idea being that we can easily revert patch 4
> if necessary.
>
> Note patch 4 can cause 2 types of problems:
>
> 1. A name-conflict in the registered regulators. This would be a real
> problem and a reason to go with a revert.
Thinking more about this I remembered that some HP laptops use
both power-enable + handshake, see e.g.:
https://bugzilla-attachments.redhat.com/attachment.cgi?id=2111237
Where 'INT3472:01' registers both an avdd + dvdd with the old code,
so mapping INT3472_GPIO_TYPE_POWER_ENABLE to dvdd is going to cause
a conflict here.
ATM we have (note new fixed INT3472_GPIO_TYPE_AVDD define):
0x0b INT3472_GPIO_TYPE_POWER_ENABLE -> avdd
0x10 INT3472_GPIO_TYPE_AVDD -> dovdd
0x12 INT3472_GPIO_TYPE_HANDSHAKE -> dvdd
So new proposal for patch 4, swap the 0x0b and 0x10 mappings
resulting in:
0x0b INT3472_GPIO_TYPE_POWER_ENABLE -> dovdd
0x10 INT3472_GPIO_TYPE_AVDD -> avdd
0x12 INT3472_GPIO_TYPE_HANDSHAKE -> dvdd
Note please also rename avdd_second_sensor to power_enable_second_sensor.
This avoids any regulator name conflicts for all the supported
existing combos, leaving only "2." below as potential problem
with the suggested patch 4:
> 2. Some sensor drivers for sensors using INT3472_GPIO_TYPE_POWER_ENABLE
> GPIOs may only check for avdd and not dvdd (*), in that case we could
> extend the regulator handling in the sensor driver instead of reverting
> patch 4.
And as mentioned we can fix those by extending the supply handling in
the sensor driver.
Ok, so I decided to really do my homework and just checked all
sensor drivers listed in ipu-bridge.c and present in 7.3 (some
or only available out of tree so far) and all of them either do
not support any of avdd, dvdd + dovdd, or they support all of them.
So I think that just swapping avdd and dovdd in the current setup
so as to correctly map 0x10 -> INT3472_GPIO_TYPE_AVDD -> "avdd"
is the right thing to do and that also means we can just squash
patches 3 and 4.
Since I think I've this all figured out now, let me just turn this into
a patch-set.
I'll Cc everyone on this email-thread on the patch-set.
Regards,
Hans
prev parent reply other threads:[~2026-10-13 10:04 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-09 3:06 int3472: GPIO type names disagree with Intel's Windows driver Alexander Patrakov
2026-10-09 10:03 ` Dan Scally
2026-10-09 11:25 ` Alexander Patrakov
2026-10-09 12:31 ` Dan Scally
2026-10-09 22:36 ` Sakari Ailus
2026-10-10 8:01 ` diamondback
2026-10-12 16:10 ` Hans de Goede
2026-10-13 10:04 ` Hans de Goede [this message]
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=87ea0d84-0122-4302-973a-05a6880cf6d8@kernel.org \
--to=hansg@kernel.org \
--cc=adee.sahan@gmail.com \
--cc=dan.scally@ideasonboard.com \
--cc=diamondback@cohunt.app \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-media@vger.kernel.org \
--cc=patrakov@gmail.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=sakari.ailus@linux.intel.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.