Re: [PATCH RFT 2/3] media: i2c: dw9719: Add DW9800W support

From: Chris Simpson

Date: Sat Oct 17 2026 - 17:47:23 EST


Hi Danila,

On Sat, 01 Aug 2026 21:04:15 +0300, Danila Tikhonov wrote:
> The DW9800W uses the same chip ID and register layout as the DW9800K,
> but requires different default VCM frequency value.

A data point for v2. The Microsoft Surface Pro 9 has a DW9800W on its
OV13858 rear camera module, at 0x0c on the sensor's I2C bus. INFO reads
0xF2 and register 7 powers up as 0x60, both matching the values in this
patch. The module is enumerated through ACPI, so ipu-bridge creates
the I2C client, not DT.

I ran this patch as posted, plus the one dw9719_id_table line
suggested below (without it the driver can't get the DW9800W model on
ACPI), on a 7.2.11 distro kernel with the linux-surface patches. My
ipu-bridge change, still to be posted, creates the "dw9800w" client
from the Surface's SSDB. The driver binds to that client, INFO reads
0xF2, so it goes through the DW9800_ID case, and the sensor gets its
ancillary link to the lens. With the camera streaming, register
readback shows CONTROL 0x02, MODE 0x40 and register 7 0x60, and
V4L2_CID_FOCUS_ABSOLUTE values 640, 1023 and 512 reach VCM_CURRENT. An
equivalent change has also run through runtime and system suspend on
the same tablet.

[...]

> { .compatible = "dongwoon,dw9800k", .data = (const void *)DW9800K },
> + { .compatible = "dongwoon,dw9800w", .data = (const void *)DW9800W },

ACPI users need the I2C id as well. As posted, an ACPI-instantiated
client can't get the DW9800W model:

- Named "dw9800w" with CONFIG_OF=n (Fedora's x86 config), it matches
nothing.
- Named "dw9800w" with CONFIG_OF=y, it binds through the i2c core's
compatible-name fallback. i2c_get_match_data() then returns NULL, so
the model is DW9718S and the INFO check is skipped.
- Named "dw9719", it gets model DW9719, and the DW9800_ID case returns
-ENODEV.

Could v2 add this to dw9719_id_table?

{ .name = "dw9800w", .driver_data = (kernel_ulong_t)DW9800W },

Also, that -ENODEV return leaves the regulator enabled, like the paths
Myeonghun Pak's patch fixes [1]. It would be worth routing it through
the same power-down path.

I understand v2 is waiting for the DW9800K rework. I'll test it on the
Pro 9 when it comes and send a Tested-by then. The ipu-bridge patch
for the Surface's VCM type would follow on top of it.

Thanks,
Chris

Made with AI assistance. Written by Claude Opus 5.5 (drafting), with
review by Claude Fable 5.1 and testing by Claude Opus 5.5, under the
direction of Chris Simpson <chris@xxxxxxxx>, who reviewed and approved
it.

[1] https://lore.kernel.org/all/20260913041828.28430-1-mhun512@xxxxxxxxx/