[PATCH v2] media: ipu-bridge: Add Himax HM1092 IR sensor
Jake S <[email protected]> Thu, 30 Jul 2026 10:24:14 -0400
| Newsgroups | org.kernel.vger.linux-media |
|---|---|
| Message-ID | <[email protected]> |
From: Jake Steinman <[email protected]> The HM1092 is a mono IR sensor used for face unlock on Intel IPU6 and IPU7 laptops. Without an entry here the sensor endpoint is built with no link-frequencies property, the driver rejects every mode and the sensor never binds. Two frequencies are listed because the sensor is driven from a different external clock depending on the platform, with the PLL programmed to match: 180480000 Hz on Dell (19.2 MHz EXTCLK) and 180000000 Hz on ASUS (24 MHz). Assisted-by: Claude:claude-opus-5 Signed-off-by: Jake Steinman <[email protected]> --- Changes in v2: - drop thousands separators from numbers (Sakari) - move the derivation below the --- and shorten the commit message (Sakari) - add Assisted-by per Documentation/process/coding-assistants.rst (Sakari). Claude did the register-table extraction and the iteration on this patch; the analysis, hardware testing and review are mine, and the Signed-off-by is mine alone. This depends on the HM1092 sensor driver, currently in review as "[PATCH v6] media: i2c: Add HM1092 camera sensor driver", and should wait for it. Derivation of the two values, from the PLL registers each platform programs -- link_freq = EXTCLK * m / p, where m is 0x030f and p is 0x030d: Dell, IPU7 EXTCLK 19.2 MHz, p=10, m=94 -> 180480000 Hz ASUS, Qualcomm EXTCLK 24.0 MHz, p=12, m=90 -> 180000000 Hz Both are the CSI-2 DDR clock, so the per-lane bit rate is twice the value -- 360.96 and 360 Mbit/s respectively -- over one data lane. They differ by 0.27%, but are listed separately so each platform matches what its own firmware programs. Worth recording because published figures for this part have been wrong: V4L2_CID_LINK_FREQ is the DDR clock, while the vendor mode descriptors publish the per-lane bit rate, which is twice that. Taking the descriptor value verbatim gives 360960000; isys then runs the D-PHY at 721 Mbit/s against a sensor transmitting 361, and no frame is ever framed. Halving it produced the first frames captured from this sensor on Linux. Verified on a Dell XPS 16 DA16260 (IPU7, Panther Lake). The ASUS values come from the Qualcomm sensor module blob via Ramshouriesh R, who is submitting the sensor driver. drivers/media/pci/intel/ipu-bridge.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -50,6 +50,8 @@ * Please keep the list sorted by ACPI HID. */ static const struct ipu_sensor_config ipu_supported_sensors[] = { + /* Himax HM1092 */ + IPU_SENSOR_CONFIG("HIMX1092", 2, 180000000, 180480000), /* Himax HM11B1 */ IPU_SENSOR_CONFIG("HIMX11B1", 1, 384000000), /* Himax HM2170 */