All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] media: Add the ST VD55G0 global shutter sensor
@ 2026-11-03 10:32 Sergey Lebedev
  2026-11-03 10:32 ` [PATCH v2 1/4] dt-bindings: media: i2c: st,vd55g1: Add ST VD55G0 Sergey Lebedev
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Sergey Lebedev @ 2026-11-03 10:32 UTC (permalink / raw)
  To: Sakari Ailus, Benjamin Mugnier, Sylvain Petinot,
	Mauro Carvalho Chehab
  Cc: Dan Scally, Hans de Goede, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Peter Marshall, George Neacsu, Hao Yao,
	Fernando Rimoli, D. Manresa, linux-media, devicetree,
	linux-kernel

The ST VD55G0 is a 644x604 monochrome global shutter sensor. It is the
infrared camera of the Microsoft Surface Pro 11 for Business with Intel
(Lunar Lake, IPU7) and of the Surface Pro 9 (Alder Lake, IPU6), ACPI
device SMO55F0. Without a driver the camera does not appear at all.

  1/4  dt-bindings: media: i2c: st,vd55g1: Add ST VD55G0
  2/4  media: i2c: Add ST VD55G0 global shutter sensor driver
  3/4  media: ipu-bridge: Add ST VD55G0
  4/4  media: ipu-bridge: Add the Surface Pro 9 and 11 infrared illuminator

The driver is a port of ST's own downstream driver, firmware patch
included, as vd55g1 carries its own:
https://github.com/STMicroelectronics/vd55g0-linux-driver
Benjamin reviewed it off-list before v1; 2/4 carries his
Co-developed-by, and its clock tree is based on his.

Changes since v1:
- 1/4: the VD55G0 joins st,vd55g1.yaml instead of a file of its own,
  with its 375 MHz link-frequency minimum in an if/then, as Krzysztof
  pointed to. Benjamin's Co-developed-by went with the separate file.
- 2/4: no code change; MAINTAINERS no longer lists a binding for it.
- 4/4: the st,leds name and GPIO numbers now live in the bridge's own
  structs, as the software nodes outlive the module (Fernando). With
  v1, unloading ipu-bridge and rebinding the sensor froze the machine.
  Adds the Surface Pro 9, which strobes from the same GPIO (Fernando).
- Rebased on v7.4-rc1.

On both machines the sensor needs Hao Yao's int3472 fix: the SSDB asks
for 24 MHz, but INT3472 enables the clock at 19.2 MHz, so without it the
sensor runs at four fifths of every rate this series computes:
https://lore.kernel.org/all/20251208035122.2147678-1-hao.yao@intel.com/
Its v2 fixes the Surface Pro 11. On the Alder Lake Surface Pro 9 the
_DSM takes 0 for 24 MHz rather than 3, as Fernando measured, so its v3
has to choose the value per platform.

On IPU6, frames come out corrupted unless a CPU latency bound is held
while streaming; that is the ISYS, not this sensor (Fernando, on v1).

v1: https://lore.kernel.org/all/20261019162722.25587-1-lsa.uz@pm.me/

Tested on the Surface Pro 11 for Business, on v7.4-rc1 with Hao Yao's
int3472 v2, D. Manresa's ipu-bridge 1/2 for the unload test, KASAN with
KASAN_VMALLOC, and lockdep, IPU7 run by the ipu6 driver:
- probe defers until ipu-bridge has made the endpoint, then binds;
- every mode runs at 59.14 fps, as the controls give, in Y8 and Y10 at
  all four sizes and in Y10 packed at full size;
- under auto exposure, exposure and the gains read back what the sensor
  applies, and carry over to manual mode;
- the illuminator through led_mode;
- v4l2-compliance 46 of 46, and 54 of 54 through the media device,
  with two warnings for the read-only crop;
- unloading the IPU stack and ipu-bridge, then unbinding and binding the
  sensor, is clean; with v1 it froze the machine;
- no KASAN, lockdep or Oops report; the only WARNING is the ipu6
  driver's lockdep_assert_held() at each stream start, as with v1;
- W=1 and sparse clean; dt_binding_check clean, and it refuses a VD55G0
  example at 125 MHz.
The Surface Pro 9 entry is not tested here.

Sergey Lebedev (4):
  dt-bindings: media: i2c: st,vd55g1: Add ST VD55G0
  media: i2c: Add ST VD55G0 global shutter sensor driver
  media: ipu-bridge: Add ST VD55G0
  media: ipu-bridge: Add the Surface Pro 9 and 11 infrared illuminator

 .../bindings/media/i2c/st,vd55g1.yaml         |   27 +-
 MAINTAINERS                                   |    9 +
 drivers/media/i2c/Kconfig                     |   11 +
 drivers/media/i2c/Makefile                    |    1 +
 drivers/media/i2c/vd55g0.c                    | 2434 +++++++++++++++++
 drivers/media/pci/intel/ipu-bridge.c          |   70 +-
 include/media/ipu-bridge.h                    |    6 +-
 7 files changed, 2551 insertions(+), 7 deletions(-)
 create mode 100644 drivers/media/i2c/vd55g0.c


base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
-- 
2.54.0



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2026-11-05 20:05 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-03 10:32 [PATCH v2 0/4] media: Add the ST VD55G0 global shutter sensor Sergey Lebedev
2026-11-03 10:32 ` [PATCH v2 1/4] dt-bindings: media: i2c: st,vd55g1: Add ST VD55G0 Sergey Lebedev
2026-11-03 10:32 ` [PATCH v2 2/4] media: i2c: Add ST VD55G0 global shutter sensor driver Sergey Lebedev
2026-11-03 11:11   ` sashiko-bot
2026-11-03 12:13   ` Sergey Lebedev
2026-11-05 19:19   ` [PATCH] media: i2c: vd55g0: register through the sensor helper Jizhou Tong
2026-11-05 20:05     ` Sergey Lebedev
2026-11-03 10:33 ` [PATCH v2 3/4] media: ipu-bridge: Add ST VD55G0 Sergey Lebedev
2026-11-03 10:33 ` [PATCH v2 4/4] media: ipu-bridge: Add the Surface Pro 9 and 11 infrared illuminator Sergey Lebedev
2026-11-05  0:43 ` [PATCH v2 0/4] media: Add the ST VD55G0 global shutter sensor Fernando Rimoli

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.