Skip to content

arm64: dts: qcom: x1e80100-denali-oled: enable front camera - #87

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

arm64: dts: qcom: x1e80100-denali-oled: enable front camera#87
ooaklee wants to merge 5 commits into
jglathe:jg/ubuntu-qcom-x1e-7.2.yfrom
ooaklee:x/sp11-camera-denali-graph

Conversation

@ooaklee

@ooaklee ooaklee commented Aug 31, 2026

Copy link
Copy Markdown

Summary

  • describe the Sony IMX681 front camera on the Surface Pro 11 OLED CCI1 I2C bus
  • add its MCLK4, reset, analog and I/O supplies, and privacy-indicator wiring
  • route the one-trio C-PHY endpoint through CSIPHY2 at the validated 1.203 GHz V4L2 link frequency
  • enable the required CAMSS, CCI1, and CSIPHY2 blocks only in the Denali OLED board file

Dependency and status

This PR is intended to target jg/ubuntu-qcom-x1e-7.2.y directly. Review it after #82, #83, and both preceding camera topics:

The head is stacked on x/sp11-camera-cphy, which is itself stacked on x/sp11-camera-imx681, so the GitHub diff is cumulative until both prerequisite topics are merged into the release branch. The board-graph-specific portion is the single commit after f8ef631fcdd4. It does not merge the broad -sp11 staging branch or replay the correction already merged through #81.

This PR is a draft. It completes the minimum cumulative path needed to exercise the split camera stack, but the exact branches still require the hardware checks below.

Containment

  • the incremental diff changes only x1e80100-microsoft-denali-oled.dts
  • it does not change the common Denali include, the X1P Surface Pro 11 description, or any non-Denali board
  • it enables only the front IMX681 path through CCI1 I2C bus 1, CSIPHY2, and CAMSS
  • the endpoint is fixed to one C-PHY trio on lane/trio 0 at the 1.203 GHz V4L2 link frequency
  • the board wiring is limited to MCLK4, reset GPIO 237, 2.8 V analog supply, 1.8 V I/O supply, and privacy-indicator GPIO 225
  • no rear/IR camera, shared-driver experiment, CCS change, VFE write-mode change, crop/drop engine, or diagnostic ABI is included
  • privacy-indicator polarity remains explicitly marked for hardware validation

Provenance

The Denali graph commit is authored by Leon Silcott, carries the authorized Signed-off-by: Leon Silcott <leon@boasi.io>, and preserves its source link to the final integration state in d915d679423e.

The graph and receiver topology derive from @turbineBMW's public camera review patch at immutable revision 05e5335bc724. @turbineBMW is explicitly credited, but no Signed-off-by or Co-authored-by trailer is attributed because the referenced source did not provide one for this rewritten commit.

Validation

  • git diff --check f8ef631fcdd4..HEAD for the incremental Denali graph topic
  • strict checkpatch for the board commit: no errors, warnings, or checks
  • DT binding/schema validation for the IMX681 binding used by the graph
  • qcom/x1e80100-microsoft-denali-oled.dtb builds successfully
  • selected CHECK_DTBS=y validation for the changed graph is clean; full-tree checking reports only pre-existing warnings outside this topic
  • inspection of the compiled DTB confirms C-PHY bus type, trio/lane 0, the 1.203 GHz link frequency, CSIPHY2 routing, supplies, reset, clock, and privacy-indicator references
  • the incremental diff contains no shared-driver or non-Denali DT change

Hardware checks still required

  • boot this exact cumulative branch on an X1E Surface Pro 11 OLED
  • verify IMX681 identification and the complete sensor-to-CSIPHY2-to-CSID0-to-VFE0 media graph
  • verify repeated and continuous 3840x2640 RAW10 capture at approximately 30 frames per second without CSID ECC/CRC or VFE transport errors
  • verify exposure/gain response, repeated stream start/stop, suspend/resume, and camera reopen
  • verify privacy-indicator polarity and that the indicator follows camera use
  • run a camera stream smoke test on a non-SP11 X1E D-PHY device because the cumulative prerequisite changes shared PHY/CAMSS code
  • confirm the X1P Surface Pro 11 and other non-OLED/non-Denali device trees gain no camera node from this board-only commit

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>
Describe the OLED Surface Pro 11 front camera as a Sony IMX681 on CCI1
with its MCLK4, reset, analog and I/O supplies, and privacy indicator.
Route the one-trio C-PHY endpoint through CSIPHY2 at the validated
1.203 GHz V4L2 link frequency.

Keep the graph and all board wiring in the Denali OLED DTS. This commit
depends on the standalone IMX681 driver and the separately reviewed
X1E80100 C-PHY receiver support; it does not change shared drivers.

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>
ooaklee added a commit to ooaklee/linux_ms_dev_kit-sp11 that referenced this pull request Sep 1, 2026
@jglathe
jglathe force-pushed the jg/ubuntu-qcom-x1e-7.2.y branch from 87bcf07 to 4943ee7 Compare September 3, 2026 10:32
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