Linux Media Controller development
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox