Skip to content

media: qcom: add X1E80100 C-PHY camera receive support - #86

Draft
ooaklee wants to merge 4 commits into
jglathe:jg/ubuntu-qcom-x1e-7.2.yfrom
ooaklee:x/sp11-camera-cphy
Draft

media: qcom: add X1E80100 C-PHY camera receive support#86
ooaklee wants to merge 4 commits into
jglathe:jg/ubuntu-qcom-x1e-7.2.yfrom
ooaklee:x/sp11-camera-cphy

Conversation

@ooaklee

@ooaklee ooaklee commented Aug 31, 2026

Copy link
Copy Markdown

Summary

  • add an explicit MIPI C-PHY mode to the generic PHY API and the Qualcomm X1E80100 combo PHY
  • program the bounded X1E80100 one-trio receive, interrupt-clear, and shutdown sequences at 2.406 Gsymbol/s
  • propagate the endpoint bus type through Qualcomm CAMSS CSIPHY and CSID
  • route the validated one-trio C-PHY path through the X1E80100 CAMSS clocks and CSID receiver fields

Dependency and status

This PR is intended to target jg/ubuntu-qcom-x1e-7.2.y directly. Review it after #82, #83, and the preceding IMX681 sensor topic:

The head is stacked on x/sp11-camera-imx681, so its GitHub diff is cumulative until the sensor topic is merged into the release branch. The C-PHY-specific portion is the two commits after ddc5bc6c2804. It does not merge the broad -sp11 staging branch or replay the correction already merged through #81.

This PR is a draft. The Denali OLED camera graph follows separately, and both the exact cumulative SP11 stack and an existing non-SP11 X1E D-PHY camera need hardware testing before this shared-driver topic is ready.

Containment

  • C-PHY endpoint acceptance is limited to the qcom,x1e80100-camss compatible
  • the Qualcomm combo-PHY sequence is selected only for the X1E80100 capability data, PHY_MODE_MIPI_CPHY, trio 0, one data lane/trio, and the exact 2.406 Gsymbol/s rate
  • CAMSS accepts only the matching 1.203 GHz V4L2 link frequency for this C-PHY path
  • the existing D-PHY endpoint parsing, clock selection, lane programming, receiver programming, and shutdown paths remain the default for existing devices
  • the generic PHY_MODE_MIPI_CPHY enum addition is inert until a consumer explicitly requests that mode
  • this topic adds no board device tree and no sensor driver beyond the cumulative prerequisite
  • the staging source's VFE write-mode, CSID crop/drop-engine, status-logging, CCS, and sensor-format experiments are excluded

Provenance

The two C-PHY commits are authored by Leon Silcott, carry the authorized Signed-off-by: Leon Silcott <leon@boasi.io>, and preserve source links to the final integration state in d915d679423e.

The receiver work builds on @turbineBMW's public camera review patch at immutable revision 05e5335bc724 and credits @geocausa's Windows/QTI parity analysis in the commit messages. These are source and analysis credits; no contributor Signed-off-by or Co-authored-by trailer has been invented for the rewritten commits.

Validation

  • git diff --check ddc5bc6c2804..HEAD for the incremental C-PHY topic
  • strict checkpatch: no errors or checks; only the generic new-file/MAINTAINERS prompt for the X1E80100 register-table header, which is covered by the existing QUALCOMM MIPI CSI2 PHY DRIVER entry
  • ARM64 ubuntu_x1e_defconfig W=1 builds of the two Qualcomm MIPI CSI-2 PHY objects and the four affected CAMSS/CSIPHY/CSID objects
  • source audit confirms C-PHY acceptance is limited to X1E80100 and the validated topology/rate
  • source audit confirms existing D-PHY endpoints continue through the pre-existing configuration paths
  • the cumulative series builds without the excluded VFE, crop/drop, CCS, logging, or sensor-format experiments

Hardware checks still required

  • boot the exact cumulative camera stack on an X1E Surface Pro 11 OLED and verify CSIPHY2/CSID0 C-PHY stream setup
  • verify repeated and continuous raw capture without CSIPHY, CSID ECC/CRC, or VFE transport errors
  • verify repeated stream start/stop and suspend/resume exercise the C-PHY shutdown and reconfiguration paths
  • run a camera stream smoke test on a non-SP11 X1E device that uses the existing D-PHY path
  • confirm that non-X1E CAMSS devices continue rejecting C-PHY endpoints and retain their existing D-PHY behavior

Document the Sony IMX681 image sensor and its currently validated
3840x2640 RAW10 profile. The profile uses a single CSI-2 C-PHY trio at
2406 Msymbol/s and an external 19.2 MHz clock.

List turbinebmw as maintainer, following the original public camera
review series from which the sensor work was developed.

Link: https://github.com/turbineBMW/surface-pro-11-linux/blob/05e5335bc72476d44390336701cf03efa5fd0165/kernel/sp11-camera-review.patch
Link: d915d67
Signed-off-by: Leon Silcott <leon@boasi.io>
Add a standalone V4L2 driver for the IMX681 front-camera mode validated
on the Surface Pro 11. The driver programs 3840x2640 RAW10 at about
30 frames per second and supports frame length, 24-bit exposure, analog
gain, and digital gain controls.

Reject firmware descriptions other than the validated one-trio C-PHY
topology, 1.203 GHz V4L2 link frequency, and 19.2 MHz input clock before
powering the sensor. This keeps the observed register sequence scoped to
the hardware profile on which it was tested.

The register tables and initial driver were developed from turbinebmw's
public camera review series, then corrected and runtime-validated in the
SP11 integration branch.

Link: https://github.com/turbineBMW/surface-pro-11-linux/blob/05e5335bc72476d44390336701cf03efa5fd0165/kernel/sp11-camera-review.patch
Link: d915d67
Signed-off-by: Leon Silcott <leon@boasi.io>
Add an explicit MIPI C-PHY mode and teach the X1E80100 combo PHY to
accept only the validated one-trio, 2.406-Gsymbol/s receiver profile.
Program the bounded X1E register sequence, clear its interrupt state,
and apply its shutdown sequence while the PHY clocks remain available.

Keep the existing D-PHY configuration and shutdown paths unchanged.
The C-PHY clock vote, interrupt, programming, and shutdown paths are
selected only after the consumer requests C-PHY and the X1E capability
data accepts trio 0 and the exact symbol rate.

The register observations were independently transcribed from runtime
MMIO activity on the Surface Pro 11. This port builds on turbineBMW's
public CAMSS review series and geocausa's Windows/QTI parity analysis.

Link: https://github.com/turbineBMW/surface-pro-11-linux/blob/05e5335bc72476d44390336701cf03efa5fd0165/kernel/sp11-camera-review.patch
Link: d915d67
Signed-off-by: Leon Silcott <leon@boasi.io>
Accept C-PHY endpoints only for X1E80100 CAMSS and only for the
validated one-trio topology at the 1.203-GHz V4L2 link frequency.
Propagate the bus type through CSIPHY and CSID, select the X1E receive
clocks, and program the CSID C-PHY receiver fields.

Leave the existing D-PHY clock, lane, and receiver programming paths
unchanged. This re-lift excludes the source integration's VFE write-mode,
CSID crop and drop-engine changes, status logging, and sensor-specific
format handling. Non-SP11 D-PHY hardware testing remains required.

The receiver routing builds on turbineBMW's public CAMSS review series
and geocausa's Windows/QTI parity analysis.

Link: https://github.com/turbineBMW/surface-pro-11-linux/blob/05e5335bc72476d44390336701cf03efa5fd0165/kernel/sp11-camera-review.patch
Link: d915d67
Signed-off-by: Leon Silcott <leon@boasi.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant