提交 7e9cc175 编写于 作者: V Vinod Koul 提交者: Dmitry Baryshkov

drm/msm/disp/dpu1: Add support for DSC in topology

For DSC to work we typically need a 2,2,1 configuration. This should
suffice for resolutions up to 4k. For more resolutions like 8k this won't
work.

Also, it is better to use 2 LMs and DSC instances as half width results
in lesser power consumption as compared to single LM, DSC at full width.

The panel has been tested only with 2,2,1 configuration, so for
now we blindly create 2,2,1 topology when DSC is enabled
Co-developed-by: NAbhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: NAbhinav Kumar <quic_abhinavk@quicinc.com>
Reviewed-by: NDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: NVinod Koul <vkoul@kernel.org>
Patchwork: https://patchwork.freedesktop.org/patch/480925/
Link: https://lore.kernel.org/r/20220406094031.1027376-11-vkoul@kernel.orgSigned-off-by: NDmitry Baryshkov <dmitry.baryshkov@linaro.org>
上级 1d6fe0b7
...@@ -577,8 +577,21 @@ static struct msm_display_topology dpu_encoder_get_topology( ...@@ -577,8 +577,21 @@ static struct msm_display_topology dpu_encoder_get_topology(
topology.num_enc = 0; topology.num_enc = 0;
topology.num_intf = intf_count; topology.num_intf = intf_count;
if (dpu_enc->dsc) {
/* In case of Display Stream Compression (DSC), we would use
* 2 encoders, 2 layer mixers and 1 interface
* this is power optimal and can drive up to (including) 4k
* screens
*/
topology.num_enc = 2;
topology.num_dsc = 2;
topology.num_intf = 1;
topology.num_lm = 2;
}
return topology; return topology;
} }
static int dpu_encoder_virt_atomic_check( static int dpu_encoder_virt_atomic_check(
struct drm_encoder *drm_enc, struct drm_encoder *drm_enc,
struct drm_crtc_state *crtc_state, struct drm_crtc_state *crtc_state,
......
...@@ -93,12 +93,14 @@ enum msm_event_wait { ...@@ -93,12 +93,14 @@ enum msm_event_wait {
* @num_enc: number of compression encoder blocks used * @num_enc: number of compression encoder blocks used
* @num_intf: number of interfaces the panel is mounted on * @num_intf: number of interfaces the panel is mounted on
* @num_dspp: number of dspp blocks used * @num_dspp: number of dspp blocks used
* @num_dsc: number of Display Stream Compression (DSC) blocks used
*/ */
struct msm_display_topology { struct msm_display_topology {
u32 num_lm; u32 num_lm;
u32 num_enc; u32 num_enc;
u32 num_intf; u32 num_intf;
u32 num_dspp; u32 num_dspp;
u32 num_dsc;
}; };
/* Commit/Event thread specific structure */ /* Commit/Event thread specific structure */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册