aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/display/dc/inc
diff options
context:
space:
mode:
authorHarry Wentland <harry.wentland@amd.com>2019-05-07 14:50:05 -0500
committerAlex Deucher <alexander.deucher@amd.com>2019-06-21 18:59:34 -0500
commitca4d9b3a5a3b70da5af1f48d36e181cdebe77e2c (patch)
treecd2953fc4e52b569556e5e6cbccbc4cf6f42a23c /drivers/gpu/drm/amd/display/dc/inc
parentdrm/amd/display: Add DCN2 changes to DML (diff)
downloadlinux-dev-ca4d9b3a5a3b70da5af1f48d36e181cdebe77e2c.tar.xz
linux-dev-ca4d9b3a5a3b70da5af1f48d36e181cdebe77e2c.zip
drm/amd/display: Add DCN2 DIO
Add support for the DIO (Display IO) block of DCN2, which entails our stream and link encoders. HW Blocks: +--------+ | DIO | +--------+ Signed-off-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/dc/inc')
-rw-r--r--drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h14
-rw-r--r--drivers/gpu/drm/amd/display/dc/inc/hw/stream_encoder.h24
2 files changed, 38 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h b/drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h
index ca162079a41b..46de4a00f61b 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h
@@ -113,8 +113,12 @@ struct link_encoder {
struct encoder_feature_support features;
enum transmitter transmitter;
enum hpd_source_id hpd_source;
+#ifdef CONFIG_DRM_AMD_DC_DCN2_0
+ bool usbc_combo_phy;
+#endif
};
+
struct link_encoder_funcs {
bool (*validate_output_with_stream)(
struct link_encoder *enc, const struct dc_stream_state *stream);
@@ -156,6 +160,16 @@ struct link_encoder_funcs {
bool (*is_dig_enabled)(struct link_encoder *enc);
unsigned int (*get_dig_frontend)(struct link_encoder *enc);
void (*destroy)(struct link_encoder **enc);
+
+#if defined(CONFIG_DRM_AMD_DC_DCN2_0)
+ void (*fec_set_enable)(struct link_encoder *enc,
+ bool enable);
+
+ void (*fec_set_ready)(struct link_encoder *enc,
+ bool ready);
+
+ bool (*fec_is_active)(struct link_encoder *enc);
+#endif
};
#endif /* LINK_ENCODER_H_ */
diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/stream_encoder.h b/drivers/gpu/drm/amd/display/dc/inc/hw/stream_encoder.h
index 74db1d82fa35..f84ce4de53ca 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/hw/stream_encoder.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/stream_encoder.h
@@ -65,11 +65,20 @@ struct audio_clock_info {
uint32_t cts_48khz;
};
+#if defined(CONFIG_DRM_AMD_DC_DCN2_0)
+enum dynamic_metadata_mode {
+ dmdata_dp,
+ dmdata_hdmi,
+ dmdata_dolby_vision
+};
+#endif
+
struct encoder_info_frame {
/* auxiliary video information */
struct dc_info_packet avi;
struct dc_info_packet gamut;
struct dc_info_packet vendor;
+ struct dc_info_packet hfvsif;
/* source product description */
struct dc_info_packet spd;
/* video stream configuration */
@@ -81,6 +90,9 @@ struct encoder_info_frame {
struct encoder_unblank_param {
struct dc_link_settings link_settings;
struct dc_crtc_timing timing;
+#ifdef CONFIG_DRM_AMD_DC_DCN2_0
+ bool odm;
+#endif
};
struct encoder_set_dp_phy_pattern_param {
@@ -97,6 +109,7 @@ struct stream_encoder {
enum engine_id id;
};
+
struct stream_encoder_funcs {
void (*dp_set_stream_attribute)(
struct stream_encoder *enc,
@@ -184,6 +197,17 @@ struct stream_encoder_funcs {
struct stream_encoder *enc,
int tg_inst);
+#if defined(CONFIG_DRM_AMD_DC_DCN2_0)
+
+ void (*set_dynamic_metadata)(struct stream_encoder *enc,
+ bool enable,
+ uint32_t hubp_requestor_id,
+ enum dynamic_metadata_mode dmdata_mode);
+
+ void (*dp_set_odm_combine)(
+ struct stream_encoder *enc,
+ bool odm_combine);
+#endif
};
#endif /* STREAM_ENCODER_H_ */