After integrating OLDI support[0], it is necessary to identify which VP
instances use OLDI, since the OLDI driver owns the video port clock
(as a serial clock). Clock operations on these VPs must be delegated to
the OLDI driver, not handled by the TIDSS driver. This issue also
emerged in upstream discussions when DSI-related clock management was
attempted in the TIDSS driver[1].
To address this, add an 'is_ext_vp_clk' array to the 'tidss_device'
structure, marking a VP as 'true' during 'tidss_oldi_init()' and as
'false' during 'tidss_oldi_deinit()'. TIDSS then uses 'is_ext_vp_clk'
to skip clock validation checks in 'dispc_vp_mode_valid()' for VPs
under OLDI control.
Since OLDI uses the DSS VP clock directly as a serial interface and
manages its own rate, mode validation should be implemented in the OLDI
bridge's 'mode_valid' hook. This patch adds that logic, ensuring proper
delegation and avoiding spurious clock handling in the TIDSS driver.
[0]: https://lore.kernel.org/all/20250528122544.817829-1-aradhya.bhatia@linux.dev/
[1]: https://lore.kernel.org/all/DA6TT575Z82D.3MPK8HG5GRL8U@kernel.org/
Fixes:
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| tidss_crtc.c | ||
| tidss_crtc.h | ||
| tidss_dispc.c | ||
| tidss_dispc.h | ||
| tidss_dispc_regs.h | ||
| tidss_drv.c | ||
| tidss_drv.h | ||
| tidss_encoder.c | ||
| tidss_encoder.h | ||
| tidss_irq.c | ||
| tidss_irq.h | ||
| tidss_kms.c | ||
| tidss_kms.h | ||
| tidss_oldi.c | ||
| tidss_oldi.h | ||
| tidss_plane.c | ||
| tidss_plane.h | ||
| tidss_scale_coefs.c | ||
| tidss_scale_coefs.h | ||