Skip to content

media: intel/ipu-bridge: fix OVTID858 link frequencies - #174

Open
zR-JB wants to merge 1 commit into
linux-surface:v6.19-surface-develfrom
zR-JB:ovtid858-link-frequencies
Open

media: intel/ipu-bridge: fix OVTID858 link frequencies#174
zR-JB wants to merge 1 commit into
linux-surface:v6.19-surface-develfrom
zR-JB:ovtid858-link-frequencies

Conversation

@zR-JB

@zR-JB zR-JB commented Aug 12, 2026

Copy link
Copy Markdown

Summary

Fix the OVTID858 / OV13858 entry in ipu-bridge to publish the two link frequencies supported by the OV13858 driver.

The existing entry is:

/* Omnivision OV13858 - Surface Pro 9 */
IPU_SENSOR_CONFIG("OVTID858", 4, 540000000),

The second argument to IPU_SENSOR_CONFIG() is nr_link_freqs, not the CSI lane count. The bridge obtains the actual lane count separately from firmware SSDB.

The OV13858 driver itself exposes exactly two link frequencies, 540 MHz and 270 MHz, in its LINK_FREQ control menu, and uses those two entries across its supported modes

/* Mode configs */
static const struct ov13858_mode supported_modes[] = {
{
.width = 4224,
.height = 3136,
.vts_def = OV13858_VTS_30FPS,
.vts_min = OV13858_VTS_30FPS,
.reg_list = {
.num_of_regs = ARRAY_SIZE(mode_4224x3136_regs),
.regs = mode_4224x3136_regs,
},
.link_freq_index = OV13858_LINK_FREQ_INDEX_0,
},
{
.width = 2112,
.height = 1568,
.vts_def = OV13858_VTS_30FPS,
.vts_min = 1608,
.reg_list = {
.num_of_regs = ARRAY_SIZE(mode_2112x1568_regs),
.regs = mode_2112x1568_regs,
},
.link_freq_index = OV13858_LINK_FREQ_INDEX_1,
},
{
.width = 2112,
.height = 1188,
.vts_def = OV13858_VTS_30FPS,
.vts_min = 1608,
.reg_list = {
.num_of_regs = ARRAY_SIZE(mode_2112x1188_regs),
.regs = mode_2112x1188_regs,
},
.link_freq_index = OV13858_LINK_FREQ_INDEX_1,
},
{
.width = 1056,
.height = 784,
.vts_def = OV13858_VTS_30FPS,
.vts_min = 804,
.reg_list = {
.num_of_regs = ARRAY_SIZE(mode_1056x784_regs),
.regs = mode_1056x784_regs,
},
.link_freq_index = OV13858_LINK_FREQ_INDEX_1,
}
};

Reflect that in the bridge configuration:

/* Omnivision OV13858 */
IPU_SENSOR_CONFIG("OVTID858", 2, 540000000, 270000000),

The entry was originally annotated for Surface Pro 9, but OVTID858 is also used by later Surface Pro generations, so make the comment device-independent.

Testing

The 540/270 MHz configuration was independently used successfully while enabling the OV13858 rear camera on Surface Pro 12 Intel.

The existing linux-surface OV13858 support was also separately confirmed to probe and stream the same camera on Surface Pro 12 Intel.

Related Surface Pro 12 enablement tracking: linux-surface/linux-surface#2144.

Related Surface Pro 12 camera work

The OVTID858 configuration currently sets nr_link_freqs to 4 while providing only a single 540 MHz value. The second IPU_SENSOR_CONFIG argument is the number of link frequencies, not the CSI lane count; the lane count is obtained separately from firmware SSDB.

The OV13858 driver exposes two link frequencies, 540 MHz and 270 MHz, and uses both across its supported modes. Publish those two frequencies in the OVTID858 bridge configuration instead.

The entry was originally annotated for Surface Pro 9, but OVTID858 is also used by later Surface Pro generations, so make the sensor comment device-independent.

The 540/270 MHz configuration was independently tested successfully with the OV13858 rear camera on Surface Pro 12 Intel.

Signed-off-by: Jan Baisch <jan.baisch@protonmail.com>
Link: linux-surface#174
Patchset: cameras
@zR-JB
zR-JB force-pushed the ovtid858-link-frequencies branch from 0085f0f to 3574c89 Compare August 12, 2026 21:37
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