[Lunar Lake] Protocol Error (-71) and I2C Speed Bottleneck on OV08X40 via Synaptics SVP7500 Bridge

Aperta
#51 12 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
30/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
c, linux

Direzione di ricerca

Inizia riproducendo il malfunzionamento con i comandi media-ctl e v4l2-ctl elencati, quindi esamina i moduli intel_ipu7, i2c_usbio, ivsc-csi e ivsc-ace. Controlla /lib/firmware/intel/vsc/ per verificare la presenza dei blob OV08X40 e confronta la richiesta di 400 kHz con il limite di 100 kHz del bridge e l’avviso GPIO. Il lavoro è completato quando lo streaming riesce dopo STREAMON senza -71 né perdita del nodo del dispositivo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Hardware Environment

  • System: Dell Lunar Lake (Core Ultra Series 2 / Ultra 7 268V)
  • Bridge: Synaptics SVP7500 (USB-to-I2C/MIPI Bridge)
  • Sensor: OmniVision OV08X40 (ID: OVTI08F4:00)
  • Driver: intel_ipu7 (Staging) / i2c_usbio / ivsc-csi

Issue Description

Attempts to stream from the OV08X40 sensor result in a Protocol error (-71) at STREAMON. Following the error, the Synaptics USB bridge appears to reset or latch-up, causing the device nodes to disappear (No such device) until a full cold boot is performed.

New Findings: IVSC & Firmware Gaps

Investigation with Secure Boot disabled confirms that the Intel Vision Sensing Controller (IVSC) stack is present but non-functional due to missing sensor-specific firmware.

  1. Missing Firmware Blobs: /lib/firmware/intel/vsc/ contains firmware for other sensors but lacks ivsc_pkg_ovti08x40_0.bin and ivsc_skucfg_ovti08x40_0_1.bin.
  2. IVSC Idle State: While ivsc-csi and ivsc-ace modules load, they fail to bind to the sensor, leaving it to bind directly to intel_ipu7_isys. This bypasses the secure handshake/authentication required by the hardware.

Observed Critical Failures

1. I2C Clock Speed Cap (The "Smoking Gun")

The usbio-i2c bridge driver forces a downclock from 400kHz to 100kHz. This latency appears to prevent the sensor from being configured within the IPU7's MIPI timing window.

[17.229199] i2c_usbio.usbio-i2c usbio.usbio-i2c.0: Invalid speed 400000 adjusting to bus max 100000

  1. MIPI Link Timeout / Protocol Error

Even with manual resolution alignment (3856x2176), the CSI-2 receiver times out:

[17.779903] intel_ipu7_isys.isys intel_ipu7.isys.40: bind ov08x40 17-0036 nlanes is 2 port is 0
[20681.798345] intel_ipu7_isys.isys intel_ipu7.isys.40: enable streams Intel IPU7 CSI2 0 failed with -71

  1. Entity Mismatch (Resolution Padding)

The sensor defaults to 3856x2176, while the ISYS pipeline defaults to a 12MP or 1080p target, leading to initial Broken pipe errors before manual alignment via media-ctl.

  1. Firmware/GPIO Bug

The driver fails to map the physical reset line via the USB bridge:
Plaintext

[17.123913] gpio_usbio.usbio-gpio usbio.usbio-gpio.0: [Firmware Bug]: GPIO 4 is not in FW pins bitmap

Steps to Reproduce

(Optional) Disable Secure Boot and manually modprobe ivsc-csi.

Align pipeline to sensor native output: media-ctl -d /dev/media0 -V '"Intel IPU7 CSI2 0":0 [fmt:SGRBG10_1X10/3856x2176]'

Attempt capture: v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=1 --stream-to=test.raw

Result: VIDIOC_STREAMON returned -1 (Protocol error).

Analysis

The combination of a 100kHz I2C bottleneck on the Synaptics bridge and missing IVSC sensor firmware creates a fatal race condition. The sensor cannot transition to High-Speed MIPI mode fast enough to satisfy the IPU7's watchdog timer. Furthermore, the direct binding of the sensor to ISYS (bypassing the IVSC) likely leaves the MIPI physical lanes in a low-power or locked state.

Lingua principale
C
Stelle
14
Fork
39
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di intel/ipu7-drivers

Tutte le issue di intel/ipu7-drivers

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.