All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Angioli Samuele (gmail)" <angioli.samuele@gmail.com>
To: Marco Nenciarini <mnencia@kcore.it>, linux-media@vger.kernel.org
Cc: Hans de Goede <hansg@kernel.org>,
	ilpo.jarvinen@linux.intel.com,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	linux-kernel@vger.kernel.org,
	platform-driver-x86@vger.kernel.org
Subject: Re: [BUG] OV02C10 on Dell 16 Premium DA16250 (ARL): INT3472 handshake-derived "dvdd" regulator registered but never linked to sensor, sensor probe fails with -EREMOTEIO
Date: Mon, 15 Jun 2026 15:00:38 +0200	[thread overview]
Message-ID: <dee36707-3fc9-486e-b18b-d6a246edb67c@gmail.com> (raw)
In-Reply-To: <ai_TEj-_ije1XgYF@spark.kcore.it>

Marco,

The _STA read settles it, and not in our favour. Full int3472 _STA dump:

   INT3472:0c  \_SB.PC00.DSC0   status=15
   everything else (DSC1-5, LTH0-5, CLP0-5, and INT3472:00 = the I2C2
   TPS68470) status=0

So DSC0 is the only live INT3472 on the platform. DSC1's _STA is

   Method (_STA) { If (CL01) { If (C1TP == 1) Return(0x0F) }  Return(0) }

identical in shape to DSC0's (CL00 / C0TP==1, which is why DSC0 is 
live).CL01 and C1TP are NVS OperationRegion fields (8-bit, defined in 
the DSDT NVS block) that are only ever *read* in the ASL -- never 
assigned, and not inside any _OSI branch. The only _OSI use in the 
tables is the standard OS-version detection; it does not feed the camera 
gating. So this is a BIOS/NVS camera-config gate, not OS-gated: acpi_osi 
spoofing can't flip it.

C1TP is also the field CDEP keys on (==1 -> DSCn, ==5 -> LTHn, >1 -> 
CLPn), and with DSC1/LTH1/CLP1 all _STA=0, camera 1 (the OV02C10) has no 
live PMIC instance at all. And even if DSC1 were on, its _DSM only 
exposes func 0x12 (dvdd handshake) + func 0x0D (privacy LED) -- no 
avdd/dovdd/reset/clock.
DSC0's is the same shape (dvdd + 0x02 strobe). So none of the discrete
instances ever carried the sensor's avdd/dovdd/reset/clock; those come 
from a path that is entirely _STA=0 here.

The factory Windows install runs the RGB camera fine, so the hardware is
present -- Windows just powers it through its IPU6/PMIC stack, 
independent of these _STA-gated INT3472 devices. Linux's int3472/ov02c10 
path depends on them, and the DA16250 firmware leaves the whole RGB-side 
PMIC topology _STA=0 in NVS.

Conclusion: the second_sensor dvdd quirk is correct and worth landing 
for boards where the relevant DSC is enabled, but it cannot bring this 
camera up. The OV02C10's avdd/dovdd/reset/clock have no live provider to 
re-key to, and the disable is a firmware NVS config, not something the 
kernel can satisfy. Short of Dell enabling the RGB PMIC instances in 
firmware, the only in-tree path would be a full DA16250-specific quirk 
that hardcodes fixed regulators for avdd/dovdd and sources reset/clock 
directly -- which needs the board schematic and only works if those 
rails are actually software-controllable. I suspect that's not worth it 
for one SKU; this looks like a Dell firmware bug to report upstream to them.

Thanks for walking through it -- happy to file the dvdd second_sensor
quirk on its own if you still want it in for the general case.

Thanks,
Samuele

Il 15/06/26 12:25, Marco Nenciarini ha scritto:
> Samuele,
> 
> Thanks. The dvdd re-key worked (post-patch ov02c10 only logs "not
> found" for dovdd/avdd, not dvdd, so it did attach to DSC0's dvdd), but
> as you found it can't bring the sensor up: the rails it still needs
> (avdd, dovdd, its reset GPIO and clock) would have come from DSC1, and
> DSC1 is _STA=0, so nothing live provides them.
> 
> So before any kernel change is worth considering, the question is
> whether DSC1 is off by firmware design. _STA=0 is what you get from a
> device that is BIOS-disabled, OS-gated, or simply not fitted on this
> SKU, and the asymmetry fits: DSC0 (the IR camera) is live, only DSC1
> (the RGB sensor) is dead. If DSC1 is meant to be off here, there is
> nothing for int3472 to fix and no quirk worth writing, so I'd rather
> confirm that than build around it.
> 
> The way to tell is to read DSC1's _STA from the firmware tables.
> acpidump's multi-table dump won't feed iasl -d directly, so read the
> raw tables from sysfs:
> 
>      cp /sys/firmware/acpi/tables/DSDT dsdt.dat
>      cp /sys/firmware/acpi/tables/SSDT* .
>      iasl -d dsdt.dat SSDT*
> 
> then grep the *.dsl for DSC1 (the DSC blocks often live in an SSDT, not
> the DSDT) and read its _STA. If it returns a flat zero, or gates on
> _OSI("Windows ..."), or reads a manufacturing/setup variable, the
> sensor is disabled by firmware and that is the end of the kernel angle.
> If instead it depends on something a live instance could satisfy, then
> there's a kernel path worth pursuing and we look again.
> 
> If you still have the factory Windows install, whether the RGB camera
> works there is a useful cross-check (works in Windows means gated, not
> absent), but the _STA read is the real signal.
> 
> Thanks,
> Marco

      reply	other threads:[~2026-06-15 13:00 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-01 14:06 [BUG] OV02C10 on Dell 16 Premium DA16250 (ARL): INT3472 handshake-derived "dvdd" regulator registered but never linked to sensor, sensor probe fails with -EREMOTEIO Angioli Samuele (gmail)
2026-06-03  7:26 ` Marco Nenciarini
2026-06-12 16:09   ` Angioli Samuele (gmail)
2026-06-13 17:01     ` Marco Nenciarini
2026-06-14 14:29       ` Angioli Samuele (gmail)
2026-06-14 20:23         ` Marco Nenciarini
2026-06-15  8:21           ` Angioli Samuele (gmail)
2026-06-15 10:25             ` Marco Nenciarini
2026-06-15 13:00               ` Angioli Samuele (gmail) [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=dee36707-3fc9-486e-b18b-d6a246edb67c@gmail.com \
    --to=angioli.samuele@gmail.com \
    --cc=hansg@kernel.org \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mnencia@kcore.it \
    --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.