* 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
2026-06-03 7:26 ` Marco Nenciarini
@ 2026-06-12 16:09 ` Angioli Samuele (gmail)
2026-06-13 17:01 ` Marco Nenciarini
0 siblings, 1 reply; 4+ messages in thread
From: Angioli Samuele (gmail) @ 2026-06-12 16:09 UTC (permalink / raw)
To: Marco Nenciarini, linux-media
Cc: Hans de Goede, ilpo.jarvinen, Sakari Ailus, Israel Cepeda,
linux-kernel, platform-driver-x86
[-- Attachment #1: Type: text/plain, Size: 7197 bytes --]
Hi Marco,
Sorry for the slow reply - I was away from the office until the 10th.
regulator_summary settles it - this is a missing consumer map, not an
ordering race.
INT3472:0c = \_SB.PC00.DSC0. Its _DEP is only the bridge gpiochip:
Name (_DEP, Package (){ ^XHCI.RHUB.HS09.VGPO })
so it defers ~28 times (t=5.816..6.127) until INTC10B2:00 appears
(t=6.135), then binds. Its _DSM (79234640-9e10-4fea-a5c1-b5aa8b19756f),
decoded with TYPE=[7:0], PIN=[15:8], SENSOR_ON=[31:24]:
func 2 -> 0x01000112 type 0x12 (handshake), pin 1, on=1 -> dvdd
func 3 -> 0x01000002 type 0x02 (strobe), pin 0, on=1 -> IR flood
The dvdd GPIO (func 2) is handled before the strobe (func 3), so it is
already processed by the time the "GPIO type 0x02 unknown" warning
fires at t=6.143.
regulator_summary shows the result:
INT3472:0c-dvdd 0 0 0 unknown 0mV ... (use=0 open=0)
The dvdd regulator IS registered, but with zero consumers - no supply
map to i2c-OVTI02C1:00 was ever created. So when ov02c10 probes at
t=6.468 (0.32s AFTER INT3472:0c bound and after the dvdd GPIO was
handled), regulator_get(dvdd) returns -ENODEV regardless of timing:
[6.468] ov02c10 i2c-OVTI02C1:00: supply dvdd not found, using dummy
regulator
[6.471] ov02c10 i2c-OVTI02C1:00: Error reading reg 0x300a: -121
[6.471] ov02c10 ... probe with driver ov02c10 failed with error -121
The dummy enable is a no-op, the rail stays down, the 0x300a read
fails -EREMOTEIO, and that hard error is never retried.
This means the handshake-derived regulator path registers the provider
without planting the consumer supply map the way the GPIO power-enable
path does in skl_int3472_register_regulator(). Adding that map
(dev_name "i2c-OVTI02C1:00", supply "dvdd") for the handshake type
should be enough; an -EPROBE_DEFER "supply coming later" signal would
not help here since the map is never created at all.
For completeness on the ordering side: LNK1's _DEP never references
DSC0 in any branch (ARLP -> {CVSS, HS09.VIC1}; non-ARLP -> {DSC1,
HS09.VIC1}), so there is also no serialization between DSC0 and the
sensor - but that is moot given the map is absent.
Tested on 7.0.10-1-MANJARO. Attached: decompiled
LNK1/DSC0 blocks, timestamped dmesg, and regulator_summary. Full
acpidump available on request (zip 1Mb).
Thanks,
Samuele
Il 03/06/26 09:26, Marco Nenciarini ha scritto:
> Hi Samuele,
>
> Thanks for the thorough report, the dmesg and the detail you included
> made this easy to trace.
>
> Both of your hypotheses turn out not to be the mechanism. The naming is
> fine and the fwnode path is not shadowing anything. The dummy dvdd in
> your log is real and is the key clue, but the interesting question is
> how the sensor reached a regulator_get for dvdd at all.
>
>> (a) fwnode/of-based supply matching in the regulator core now takes
>> precedence over the legacy dev_name-based supply_map lookups
>
> It does not shadow it. regulator_dev_lookup() tries the DT/fwnode path
> first, but regulator_dt_lookup() only does anything when
> dev_of_node(dev) is non-NULL. On ACPI there is no of_node, so it
> returns NULL and the function falls through to the legacy
> regulator_map_list walk. A software_node sensor with no regulator
> phandle is therefore fine, provided the map entry exists at lookup
> time.
>
>> (b) The sensor i2c_client created via ipu-bridge has a slightly
>> different dev_name
>
> It does not. int3472->sensor_name is built as "i2c-" +
> acpi_dev_name(sensor), i.e. "i2c-OVTI02C1:00", and that exact string
> is planted into supply_map[].dev_name in
> skl_int3472_register_regulator(). ACPI-enumerated i2c clients are named
> the same way (dev_set_name(&client->dev, "i2c-%s", acpi_dev_name(adev))),
> so the consumer dev_name is byte-identical. No mismatch.
>
> What the log actually tells us. The line
>
> ov02c10 i2c-OVTI02C1:00: supply dvdd not found, using dummy regulator
>
> is emitted from a single site in _regulator_get_common(), on the
> have_full_constraints() == true, NORMAL_GET path, and only after the
> dummy_regulator_rdev existence check. So it means precisely this: at
> the instant ov02c10 called devm_regulator_bulk_get(), the lookup for
> "i2c-OVTI02C1:00"/dvdd returned -ENODEV, i.e. no INT3472:0c-dvdd
> consumer map entry existed yet. int3472 publishes that map while
> registering the regulator, during its own probe, and its whole probe
> defers (the ~30 retries in your log) until the USB-IO bridge gpiochip
> appears, because the dvdd HANDSHAKE GPIO lives on that chip. So
> ov02c10 took a dummy dvdd before int3472 had registered the real one.
> Under NORMAL_GET with full constraints that dummy is permanent, the
> no-op enable leaves the rail unpowered, and the 0x300a read fails
> with -EREMOTEIO, a hard error that is not placed on the deferred-probe
> list and so is never retried when the real regulator appears later. It
> is also consistent with regulator_summary showing INT3472:0c-dvdd with
> no children after the fact.
>
> (avdd and dovdd also fall back to dummies. If those rails are
> always-on in hardware that is probably benign. dvdd is the one
> INT3472:0c is meant to gate through the handshake pin, so that is the
> one that matters here.)
>
> Here is the part that needs your input, because it should not be
> possible. INT3472 is in acpi_honor_dep_ids, so a sensor whose _DEP
> references the INT3472 device is held out of enumeration entirely
> (acpi_dev_ready_for_enumeration() returns false, the i2c client is not
> even created) until int3472 clears the dependency. int3472-discrete
> clears it with acpi_dev_clear_dependencies() as the last step of its
> probe, after int3472_discrete_parse_crs() has registered every
> regulator including dvdd. So in the normal flow, by the time OVTI02C1
> can be enumerated at all, the dvdd map is already published and the
> sensor binds the real rail. The fact that you got a dummy means that
> gate did not serialize them on this board.
>
> The most likely explanation is that OVTI02C1's _DEP does not carry an
> honored dependency on the INT3472:0c instance that registers dvdd (or
> there is more than one INT3472 instance and the depended-on one is not
> the dvdd provider). To confirm, could you send:
>
> - the OVTI02C1 _DEP (an acpidump or DSDT extract), so we can see
> whether INT3472:0c is actually listed;
> - a dmesg with timestamps showing the order of the int3472-discrete
> bind, the i2c-OVTI02C1:00 device creation, and the dummy-regulator
> warning;
> - the INT3472:0c _CRS plus the _DSM result for the GPIO at
> \_SB.PC00.XHCI.RHUB.HS09.VGPO pin 1, as you offered.
>
> Hans, Sakari, this is where I would like your read. If the _DEP on
> this board is indeed missing the INT3472:0c instance, is the right fix
> a board quirk, or is it worth giving the ACPI consumer path a "supply
> coming later" signal the way the DT path has one?
> of_regulator_dev_lookup() returns -EPROBE_DEFER when the phandle
> target is not registered yet; the legacy consumer_supplies/dev_name
> map has no equivalent, so once the _DEP gate is out of the picture
> there is nothing left to make the sensor wait.
>
> Thanks,
> Marco
[-- Attachment #2: 02_dmesg-filtered.txt --]
[-- Type: text/plain, Size: 5814 bytes --]
938:[ 5.799818] intel-ipu6 0000:00:05.0: enabling device (0000 -> 0002)
942:[ 5.816292] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
943:[ 5.816646] intel-ipu6 0000:00:05.0: Found supported sensor OVTI02C1:00
944:[ 5.816717] intel-ipu6 0000:00:05.0: Connected 1 cameras
946:[ 5.821653] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE
948:[ 5.831222] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
951:[ 5.839669] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
956:[ 5.848704] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
958:[ 5.854569] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
959:[ 5.858057] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE
961:[ 5.867711] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
962:[ 5.869356] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
963:[ 5.872391] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
964:[ 5.874753] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
972:[ 5.880972] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
973:[ 5.881864] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
976:[ 5.885536] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
978:[ 5.907393] intel-ipu6 0000:00:05.0: CSE authenticate_run done
979:[ 5.907401] intel-ipu6 0000:00:05.0: IPU6-v4[7d19] hardware version 6
980:[ 5.908399] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
995:[ 5.981768] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
999:[ 6.013643] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
1002:[ 6.028494] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
1006:[ 6.033725] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
1008:[ 6.034112] spi-nor spi0.0: supply vcc not found, using dummy regulator
1015:[ 6.054208] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
1019:[ 6.060858] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
1024:[ 6.064831] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
1040:[ 6.127023] int3472-discrete INT3472:0c: cannot find GPIO chip INTC10B2:00, deferring
1043:[ 6.143628] int3472-discrete INT3472:0c: GPIO type 0x02 unknown; the sensor may not work
1063:[ 6.468766] ov02c10 i2c-OVTI02C1:00: supply dovdd not found, using dummy regulator
1064:[ 6.469299] ov02c10 i2c-OVTI02C1:00: supply avdd not found, using dummy regulator
1065:[ 6.469394] ov02c10 i2c-OVTI02C1:00: supply dvdd not found, using dummy regulator
1071:[ 6.471215] ov02c10 i2c-OVTI02C1:00: Error reading reg 0x300a: -121
1072:[ 6.471217] ov02c10 i2c-OVTI02C1:00: failed to find sensor: -121
1073:[ 6.471292] ov02c10 i2c-OVTI02C1:00: probe with driver ov02c10 failed with error -121
1133:[ 6.627389] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-p not found, using dummy regulator
1134:[ 6.627415] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-d not found, using dummy regulator
1135:[ 6.627419] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-a not found, using dummy regulator
1136:[ 6.627422] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-io not found, using dummy regulator
1137:[ 6.627431] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-cp not found, using dummy regulator
1138:[ 6.638460] cs35l56 sdw:0:2:01fa:3556:01:2: supply VDD_P not found, using dummy regulator
1139:[ 6.638493] cs35l56 sdw:0:2:01fa:3556:01:2: supply VDD_IO not found, using dummy regulator
1140:[ 6.638499] cs35l56 sdw:0:2:01fa:3556:01:2: supply VDD_A not found, using dummy regulator
1141:[ 6.638925] cs35l56 sdw:0:2:01fa:3556:01:3: supply VDD_P not found, using dummy regulator
1142:[ 6.638946] cs35l56 sdw:0:2:01fa:3556:01:3: supply VDD_IO not found, using dummy regulator
1143:[ 6.638954] cs35l56 sdw:0:2:01fa:3556:01:3: supply VDD_A not found, using dummy regulator
1144:[ 6.639284] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_P not found, using dummy regulator
1145:[ 6.639317] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_IO not found, using dummy regulator
1146:[ 6.639327] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_A not found, using dummy regulator
1147:[ 6.639617] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_P not found, using dummy regulator
1148:[ 6.639637] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_IO not found, using dummy regulator
1149:[ 6.639649] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_A not found, using dummy regulator
1157:[ 6.819995] cs42l43-codec cs42l43-codec: supply vdd-amp not found, using dummy regulator
1160:[ 6.821481] sof_sdw sof_sdw: ASoC: Parent card not yet available, widget card binding deferred
1161:[ 6.821538] cs35l56 sdw:0:2:01fa:3556:01:2: supply VDD_B not found, using dummy regulator
1162:[ 6.821545] cs35l56 sdw:0:2:01fa:3556:01:2: supply VDD_AMP not found, using dummy regulator
1163:[ 6.822184] cs35l56 sdw:0:2:01fa:3556:01:3: supply VDD_B not found, using dummy regulator
1164:[ 6.822192] cs35l56 sdw:0:2:01fa:3556:01:3: supply VDD_AMP not found, using dummy regulator
1165:[ 6.823069] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_B not found, using dummy regulator
1166:[ 6.823076] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_AMP not found, using dummy regulator
1167:[ 6.823700] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_B not found, using dummy regulator
1168:[ 6.823708] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_AMP not found, using dummy regulator
[-- Attachment #3: 03_regulator_summary.txt --]
[-- Type: text/plain, Size: 293 bytes --]
sudo grep -iE 'regulator|INT3472|dvdd|ov02c10' /sys/kernel/debug/regulator/regulator_summary | grep -iA3 -B1 dvdd
regulator-dummy 19 27 0 unknown 0mV 0mA 0mV 0mV
INT3472:0c-dvdd 0 0 0 unknown 0mV 0mA 0mV 0mV
[-- Attachment #4: 04_lnk1.dsl --]
[-- Type: text/x-dsl, Size: 5947 bytes --]
Device (LNK1)
{
Name (CVSB, Package (0x02)
{
"\\_SB.PC00.CVSS",
"\\_SB.PC00.XHCI.RHUB.HS09.VIC1"
})
Name (PUSB, Package (0x02)
{
"\\_SB.PC00.DSC1",
"\\_SB.PC00.XHCI.RHUB.HS09.VIC1"
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (L1EN)
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (_SUB, 0, NotSerialized) // _SUB: Subsystem ID
{
Return (ToString (CERD, Ones))
}
Method (_DEP, 0, NotSerialized) // _DEP: Dependencies
{
If (L1EN)
{
If (ARLP)
{
Return (CVSB) /* \_SB_.PC00.LNK1.CVSB */
}
Else
{
Return (PUSB) /* \_SB_.PC00.LNK1.PUSB */
}
}
Else
{
Return (Package (0x01)
{
PC00
})
}
}
Name (_UID, One) // _UID: Unique ID
Method (_HID, 0, NotSerialized) // _HID: Hardware ID
{
Return (HCID (One))
}
Method (_CID, 0, NotSerialized) // _CID: Compatible ID
{
Return (HCID (One))
}
Method (_DDN, 0, NotSerialized) // _DDN: DOS Device Name
{
Name (BUF, Buffer (0x10){})
BUF [Zero] = L1M0 /* \L1M0 */
BUF [One] = L1M1 /* \L1M1 */
BUF [0x02] = L1M2 /* \L1M2 */
BUF [0x03] = L1M3 /* \L1M3 */
BUF [0x04] = L1M4 /* \L1M4 */
BUF [0x05] = L1M5 /* \L1M5 */
BUF [0x06] = L1M6 /* \L1M6 */
BUF [0x07] = L1M7 /* \L1M7 */
BUF [0x08] = L1M8 /* \L1M8 */
BUF [0x09] = L1M9 /* \L1M9 */
BUF [0x0A] = L1MA /* \L1MA */
BUF [0x0B] = L1MB /* \L1MB */
BUF [0x0C] = L1MC /* \L1MC */
BUF [0x0D] = L1MD /* \L1MD */
BUF [0x0E] = L1ME /* \L1ME */
BUF [0x0F] = L1MF /* \L1MF */
Return (ToString (BUF, Ones))
}
Method (_PLD, 0, Serialized) // _PLD: Physical Location of Device
{
Name (PLDB, Package (0x01)
{
Buffer (0x14)
{
/* 0000 */ 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0008 */ 0x69, 0x0E, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // i.......
/* 0010 */ 0xFF, 0xFF, 0xFF, 0xFF // ....
}
})
CreateByteField (DerefOf (PLDB [Zero]), 0x08, BPOS)
CreateField (DerefOf (PLDB [Zero]), 0x73, 0x04, RPOS)
BPOS = L1PL /* \L1PL */
RPOS = L1DG /* \L1DG */
Return (PLDB) /* \_SB_.PC00.LNK1._PLD.PLDB */
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Local0 = VIIC (L1A0, One)
If ((L1DI > One))
{
Local1 = VIIC (L1A1, One)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
If ((L1DI > 0x02))
{
Local1 = VIIC (L1A2, One)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
Return (Local0)
}
Method (SSDB, 0, NotSerialized)
{
Name (PAR, Buffer (0x6C)
{
/* 0000 */ 0x00, 0x00, 0x69, 0x56, 0x39, 0x8A, 0xF7, 0x11, // ..iV9...
/* 0008 */ 0xA9, 0x4E, 0x9C, 0x7D, 0x20, 0xEE, 0x0A, 0xB5, // .N.} ...
/* 0010 */ 0xCA, 0x40, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, // .@......
/* 0018 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0020 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0028 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0030 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0038 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0040 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0048 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0050 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ........
/* 0058 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0060 */ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ........
/* 0068 */ 0x00, 0x00, 0x00, 0x00 // ....
})
PAR [Zero] = L1DV /* \L1DV */
PAR [One] = L1CV /* \L1CV */
PAR [0x18] = L1LC /* \L1LC */
PAR [0x1C] = L1LU /* \L1LU */
PAR [0x1D] = L1NL /* \L1NL */
PAR [0x4E] = L1EE /* \L1EE */
PAR [0x4F] = L1VC /* \L1VC */
PAR [0x52] = L1FS /* \L1FS */
PAR [0x53] = L1LE /* \L1LE */
PAR [0x54] = CDEG (L1DG)
[-- Attachment #5: 05_dsc0.dsl --]
[-- Type: text/x-dsl, Size: 6765 bytes --]
Device (DSC0)
{
Name (_HID, "INT3472") // _HID: Hardware ID
Name (_CID, "INT3472") // _CID: Compatible ID
Name (_DDN, "PMIC-CRDG") // _DDN: DOS Device Name
Name (_UID, Zero) // _UID: Unique ID
Name (_DEP, Package (0x01) // _DEP: Dependencies
{
^XHCI.RHUB.HS09.VGPO
})
Method (_SUB, 0, NotSerialized) // _SUB: Subsystem ID
{
Return (ToString (CERD, Ones))
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Local0 = VPIN (One)
If ((C0GP > Zero))
{
Local1 = PINR (C0P0, C0C0, C0G0)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
If ((C0GP > One))
{
Local1 = PINR (C0P1, C0C1, C0G1)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
If ((C0GP > 0x02))
{
Local1 = PINR (C0P2, C0C2, C0G2)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
If ((C0GP > 0x03))
{
Local1 = PINR (C0P3, C0C3, C0G3)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
If ((C0GP > 0x04))
{
Local1 = PINR (C0P4, C0C4, C0G4)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
If ((C0GP > 0x05))
{
Local1 = PINR (C0P5, C0C5, C0G5)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
Return (Local0)
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (CL00)
{
If ((C0TP == One))
{
Return (0x0F)
}
}
Return (Zero)
}
Method (CLDB, 0, NotSerialized)
{
Name (PAR, Buffer (0x20)
{
/* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, // ........
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0018 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // ........
})
PAR [Zero] = C0VE /* \C0VE */
PAR [One] = C0TP /* \C0TP */
PAR [0x03] = C0CV /* \C0CV */
PAR [0x04] = C0IC /* \C0IC */
PAR [0x06] = C0SP /* \C0SP */
PAR [0x08] = C0W0 /* \C0W0 */
PAR [0x09] = C0W1 /* \C0W1 */
PAR [0x0A] = C0W2 /* \C0W2 */
PAR [0x0B] = C0W3 /* \C0W3 */
PAR [0x0C] = C0W4 /* \C0W4 */
PAR [0x0D] = C0W5 /* \C0W5 */
PAR [0x0E] = C0CS /* \C0CS */
Return (PAR) /* \_SB_.PC00.DSC0.CLDB.PAR_ */
}
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("79234640-9e10-4fea-a5c1-b5aa8b19756f") /* Unknown UUID */))
{
If ((Arg2 == Zero))
{
Return (Buffer (One)
{
0x3F // ?
})
}
If ((Arg2 == One))
{
Return ((One + C0GP))
}
If ((Arg2 == 0x02))
{
Return (0x01000112)
}
If ((Arg2 == 0x03))
{
Return (0x01000002)
}
If ((Arg2 == 0x04))
{
Return (Zero)
}
If ((Arg2 == 0x05))
{
Return (Zero)
}
If ((Arg2 == 0x06))
{
Return (Zero)
}
If ((Arg2 == 0x07))
{
Return (Zero)
}
Return (Buffer (One)
{
0x00 // .
})
}
If ((PCHS != 0x04)){}
Return (Buffer (One)
{
0x00 // .
})
}
}
Device (DSC1)
{
Name (_HID, "INT3472") // _HID: Hardware ID
Name (_CID, "INT3472") // _CID: Compatible ID
Name (_DDN, "PMIC-CRDG") // _DDN: DOS Device Name
Name (_UID, One) // _UID: Unique ID
Method (_SUB, 0, NotSerialized) // _SUB: Subsystem ID
{
Return (ToString (CERD, Ones))
}
If ((C1GP != Zero))
{
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Local0 = VPIN (Zero)
Local1 = VPIN (0x02)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
If ((C1GP > Zero))
{
Local1 = PINR (C1P1, C1C1, C1G1)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
If ((C1GP > One))
{
Local1 = PINR (C1P1, C1C1, C1G1)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
If ((C1GP > 0x02))
{
Local1 = PINR (C1P2, C1C2, C1G2)
ConcatenateResTemplate (Local0, Local1, Local2)
Local0 = Local2
}
^ permalink raw reply [flat|nested] 4+ messages in thread