diff options
author | Vinod Koul <vkoul@kernel.org> | 2020-03-04 11:22:14 +0530 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2021-05-20 14:19:26 +0530 |
commit | b3e5dbd2fa70e0303983cf735c20b3929047c5c5 (patch) | |
tree | 4945a7174895ffd5d33135d0d348f3d290085eea /drivers | |
parent | 355c2a46893ea7972f8013757a31095f02717d93 (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.c | 18 |
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; |