diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2018-08-27 04:08:18 -0400 |
---|---|---|
committer | Hans Verkuil <hans.verkuil@cisco.com> | 2018-08-31 04:20:40 -0400 |
commit | e86e894751f0420fbe05d834e02a6777c4b4ac3f (patch) | |
tree | 7fe43fbf396b379b22050ef106c1ebd24f95e178 | |
parent | 46094b2baeeb5e5fe113243e689a69d56f428ec8 (diff) |
drm/amdgpu: add DisplayPort CEC-Tunneling-over-AUX support
Add DisplayPort CEC-Tunneling-over-AUX support to amdgpu.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/de9586bb-151e-bae9-b8e3-14db107a60df@xs4all.nl
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 11d6dd23eeb8..af6adffba788 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | |||
@@ -896,6 +896,7 @@ amdgpu_dm_update_connector_after_detect(struct amdgpu_dm_connector *aconnector) | |||
896 | aconnector->dc_sink = sink; | 896 | aconnector->dc_sink = sink; |
897 | if (sink->dc_edid.length == 0) { | 897 | if (sink->dc_edid.length == 0) { |
898 | aconnector->edid = NULL; | 898 | aconnector->edid = NULL; |
899 | drm_dp_cec_unset_edid(&aconnector->dm_dp_aux.aux); | ||
899 | } else { | 900 | } else { |
900 | aconnector->edid = | 901 | aconnector->edid = |
901 | (struct edid *) sink->dc_edid.raw_edid; | 902 | (struct edid *) sink->dc_edid.raw_edid; |
@@ -903,10 +904,13 @@ amdgpu_dm_update_connector_after_detect(struct amdgpu_dm_connector *aconnector) | |||
903 | 904 | ||
904 | drm_connector_update_edid_property(connector, | 905 | drm_connector_update_edid_property(connector, |
905 | aconnector->edid); | 906 | aconnector->edid); |
907 | drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux, | ||
908 | aconnector->edid); | ||
906 | } | 909 | } |
907 | amdgpu_dm_add_sink_to_freesync_module(connector, aconnector->edid); | 910 | amdgpu_dm_add_sink_to_freesync_module(connector, aconnector->edid); |
908 | 911 | ||
909 | } else { | 912 | } else { |
913 | drm_dp_cec_unset_edid(&aconnector->dm_dp_aux.aux); | ||
910 | amdgpu_dm_remove_sink_from_freesync_module(connector); | 914 | amdgpu_dm_remove_sink_from_freesync_module(connector); |
911 | drm_connector_update_edid_property(connector, NULL); | 915 | drm_connector_update_edid_property(connector, NULL); |
912 | aconnector->num_modes = 0; | 916 | aconnector->num_modes = 0; |
@@ -1061,8 +1065,10 @@ static void handle_hpd_rx_irq(void *param) | |||
1061 | (dc_link->type == dc_connection_mst_branch)) | 1065 | (dc_link->type == dc_connection_mst_branch)) |
1062 | dm_handle_hpd_rx_irq(aconnector); | 1066 | dm_handle_hpd_rx_irq(aconnector); |
1063 | 1067 | ||
1064 | if (dc_link->type != dc_connection_mst_branch) | 1068 | if (dc_link->type != dc_connection_mst_branch) { |
1069 | drm_dp_cec_irq(&aconnector->dm_dp_aux.aux); | ||
1065 | mutex_unlock(&aconnector->hpd_lock); | 1070 | mutex_unlock(&aconnector->hpd_lock); |
1071 | } | ||
1066 | } | 1072 | } |
1067 | 1073 | ||
1068 | static void register_hpd_handlers(struct amdgpu_device *adev) | 1074 | static void register_hpd_handlers(struct amdgpu_device *adev) |
@@ -2731,6 +2737,7 @@ static void amdgpu_dm_connector_destroy(struct drm_connector *connector) | |||
2731 | dm->backlight_dev = NULL; | 2737 | dm->backlight_dev = NULL; |
2732 | } | 2738 | } |
2733 | #endif | 2739 | #endif |
2740 | drm_dp_cec_unregister_connector(&aconnector->dm_dp_aux.aux); | ||
2734 | drm_connector_unregister(connector); | 2741 | drm_connector_unregister(connector); |
2735 | drm_connector_cleanup(connector); | 2742 | drm_connector_cleanup(connector); |
2736 | kfree(connector); | 2743 | kfree(connector); |
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c index 9a300732ba37..18a3a6e5ffa0 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | |||
@@ -496,6 +496,8 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm, | |||
496 | aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc; | 496 | aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc; |
497 | 497 | ||
498 | drm_dp_aux_register(&aconnector->dm_dp_aux.aux); | 498 | drm_dp_aux_register(&aconnector->dm_dp_aux.aux); |
499 | drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux, | ||
500 | aconnector->base.name, dm->adev->dev); | ||
499 | aconnector->mst_mgr.cbs = &dm_mst_cbs; | 501 | aconnector->mst_mgr.cbs = &dm_mst_cbs; |
500 | drm_dp_mst_topology_mgr_init( | 502 | drm_dp_mst_topology_mgr_init( |
501 | &aconnector->mst_mgr, | 503 | &aconnector->mst_mgr, |