summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/display/dc/inc/link_hwss.h
diff options
context:
space:
mode:
authorWenjing Liu <wenjing.liu@amd.com>2022-01-19 16:24:39 +0800
committerAlex Deucher <alexander.deucher@amd.com>2022-01-25 18:00:34 -0500
commit5279e091616b74ff0e4a24e220e0552b10d88d46 (patch)
treebd53bb45f98fd99c88e1483a4626307137867354 /drivers/gpu/drm/amd/display/dc/inc/link_hwss.h
parentd9eb8fea6862e63421f7b9c93e32bef348488c41 (diff)
downloadlinux-5279e091616b74ff0e4a24e220e0552b10d88d46.tar.gz
linux-5279e091616b74ff0e4a24e220e0552b10d88d46.tar.bz2
linux-5279e091616b74ff0e4a24e220e0552b10d88d46.zip
drm/amd/display: abstract encoder related hwseq across different types
[why] Current we have hundreds of if/else or switch statement to check encoder type in dc_link level. The reason is because depending on the type of encoder dc_link needs to perform similar programming task but with different encoder interfaces. The story is to abstract these interfaces so dc_link can just perform the programming task without knowing the detail of which encoder it's dealing with. Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Reviewed-by: Aric Cyr <Aric.Cyr@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Wenjing Liu <wenjing.liu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/dc/inc/link_hwss.h')
-rw-r--r--drivers/gpu/drm/amd/display/dc/inc/link_hwss.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/inc/link_hwss.h b/drivers/gpu/drm/amd/display/dc/inc/link_hwss.h
index 69d63763a10e..bd3b2b807431 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/link_hwss.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/link_hwss.h
@@ -72,4 +72,23 @@ void dp_retrain_link_dp_test(struct dc_link *link,
struct dc_link_settings *link_setting,
bool skip_video_pattern);
+struct dc_link;
+struct link_resource;
+struct fixed31_32;
+struct pipe_ctx;
+
+struct dc_link_hwss {
+ void (*set_throttled_vcp_size)(struct pipe_ctx *pipe_ctx,
+ struct fixed31_32 throttled_vcp_size);
+
+ /* function pointers below this point require check for NULL
+ * *********************************************************************
+ */
+ void (*set_hblank_min_symbol_width)(struct pipe_ctx *pipe_ctx,
+ const struct dc_link_settings *link_settings,
+ struct fixed31_32 throttled_vcp_size);
+};
+
+const struct dc_link_hwss *dc_link_hwss_get(const struct dc_link *link, const struct link_resource *link_res);
+
#endif /* __DC_LINK_HWSS_H__ */