Some DSI panels require multiple DSC slices to be transmitted within
a single DSC packet. The DSI host will only correctly program its
registers and avoid display corruption if the dsc_slice_per_pkt
parameter is provided.

Since dsc_slice_per_pkt is not part of the VESA DSC standard, it should
not be added to struct drm_dsc_config. Instead, introduce a new field
in struct mipi_dsi_device so that panel drivers can specify the required
number of slices per packet, and DSI host drivers can retrieve it
accordingly.

Originally, this change was part of a single patch that also included
the DSI host modification. This patch splits out the mipi_dsi_device
changes. The corresponding DSI host patch for Qualcomm MSM, along with
a panel driver that makes use of this field, will be submitted
separately.

Co-developed-by: Jonathan Marek <[email protected]>
Signed-off-by: Jonathan Marek <[email protected]>
Signed-off-by: Jun Nie <[email protected]>
Signed-off-by: Junjie Cao <[email protected]>
---
 include/drm/drm_mipi_dsi.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
index 3aba7b380..a6357e8c2 100644
--- a/include/drm/drm_mipi_dsi.h
+++ b/include/drm/drm_mipi_dsi.h
@@ -180,6 +180,7 @@ struct mipi_dsi_device_info {
  * be set to the real limits of the hardware, zero is only accepted for
  * legacy drivers
  * @dsc: panel/bridge DSC pps payload to be sent
+ * @dsc_slice_per_pkt: number of DSC slices to be sent in a single packet
  */
 struct mipi_dsi_device {
        struct mipi_dsi_host *host;
@@ -194,6 +195,7 @@ struct mipi_dsi_device {
        unsigned long hs_rate;
        unsigned long lp_rate;
        struct drm_dsc_config *dsc;
+       unsigned int dsc_slice_per_pkt;
 };
 
 /**
-- 
2.51.0

Reply via email to