summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorVinod Koul <vkoul@kernel.org>2020-03-04 11:22:14 +0530
committerVinod Koul <vkoul@kernel.org>2021-05-20 14:19:26 +0530
commitb3e5dbd2fa70e0303983cf735c20b3929047c5c5 (patch)
tree4945a7174895ffd5d33135d0d348f3d290085eea /drivers
parent355c2a46893ea7972f8013757a31095f02717d93 (diff)
drm: panel: sw43408: Add DSC support
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/panel/panel-lg-sw43408.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
index 34b22b02f47f..e0c80b12b06d 100644
--- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
+++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
@@ -20,6 +20,7 @@
#include <drm/drm_modes.h>
#include <drm/drm_panel.h>
#include <drm/drm_print.h>
+#include <drm/drm_dsc.h>
#include <video/mipi_display.h>
@@ -399,6 +400,7 @@ poweroff:
static int lg_panel_enable(struct drm_panel *panel)
{
struct panel_info *pinfo = to_panel_info(panel);
+ struct drm_dsi_dsc_infoframe pps;
int ret;
if (pinfo->enabled)
@@ -411,6 +413,22 @@ pr_err("In sw43408 panel_enable\n");
return ret;
}
+ if (panel->dsc) {
+ /* this panel uses DSC so send the pps */
+ drm_dsc_dsi_pps_header_init(&pps.dsc_header);
+ drm_dsc_compute_rc_parameters(panel->dsc);
+ drm_dsc_pps_payload_pack(&pps.pps_payload, panel->dsc);
+ pr_err("VK: in %s doing pps write now\n", __func__);
+ ret = mipi_dsi_dcs_write(pinfo->link,
+ MIPI_DSI_PICTURE_PARAMETER_SET,
+ &pps, 135);
+ if (ret < 0) {
+ DRM_DEV_ERROR(panel->dev,
+ "failed to set pps: %d\n", ret);
+ return ret;
+ }
+ }
+
pinfo->enabled = true;
return 0;