From 7030579959edecd65fd7b6986191438cfcf0c8e6 Mon Sep 17 00:00:00 2001 From: Mykola Lysenko Date: Fri, 5 Feb 2016 09:35:55 -0500 Subject: [PATCH 0777/1110] drm/amd/dal: fix dependency on DC Signed-off-by: Mykola Lysenko Acked-by: Jordan Lazare --- drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c | 2 ++ drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h | 1 + drivers/gpu/drm/amd/dal/dc/core/dc.c | 44 +++------------------------ drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 8 +++++ drivers/gpu/drm/amd/dal/dc/dc.h | 22 ++++++++------ drivers/gpu/drm/amd/dal/dc/inc/core_types.h | 2 ++ 6 files changed, 30 insertions(+), 49 deletions(-) diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c index c758fc6..6329658 100644 --- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c @@ -1474,3 +1474,5 @@ bool amdgpu_dm_release_dal_lock(struct amdgpu_display_manager *dm) /* TODO */ return true; } + + diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h index c4ae90b..4a9b1c3 100644 --- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h +++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h @@ -47,6 +47,7 @@ */ #include "irq_types.h" +#include "signal_types.h" /* Forward declarations */ struct amdgpu_device; diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc.c b/drivers/gpu/drm/amd/dal/dc/core/dc.c index 0af63f8..d788917 100644 --- a/drivers/gpu/drm/amd/dal/dc/core/dc.c +++ b/drivers/gpu/drm/amd/dal/dc/core/dc.c @@ -887,46 +887,10 @@ void dc_link_remove_remote_sink(const struct dc_link *link, const struct dc_sink } } -uint8_t dc_get_dig_index(const struct dc_stream *stream) -{ - - struct core_stream *core_stream = DC_STREAM_TO_CORE(stream); - - switch (core_stream->stream_enc->id) { - case ENGINE_ID_DIGA: - return 0; - case ENGINE_ID_DIGB: - return 1; - case ENGINE_ID_DIGC: - return 2; - case ENGINE_ID_DIGD: - return 3; - case ENGINE_ID_DIGE: - return 4; - case ENGINE_ID_DIGF: - return 5; - case ENGINE_ID_DIGG: - return 6; - default: - return -1; - } - - return 0; -} - -enum gpio_ddc_line dc_get_ddc_line( - const struct dc_stream *stream) +const struct dc_stream_status *dc_stream_get_status( + const struct dc_stream *dc_stream) { + struct core_stream *stream = DC_STREAM_TO_CORE(dc_stream); - struct core_sink *core_sink = DC_SINK_TO_CORE(stream->sink); - struct ddc *ddc_line = dal_ddc_service_get_ddc_pin( - core_sink->link->ddc); - - return dal_ddc_get_line(ddc_line); -} - -enum signal_type dc_get_display_signal( - const struct dc_stream *stream) -{ - return stream->sink->sink_signal; + return &stream->status; } diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c index 9e04b45..84ee1b4 100644 --- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c +++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c @@ -977,6 +977,10 @@ static bool construct( ddc_service_init_data.id = link->link_id; link->ddc = dal_ddc_service_create(&ddc_service_init_data); + link->public.ddc_hw_inst = + dal_ddc_get_line( + dal_ddc_service_get_ddc_pin(link->ddc)); + if (NULL == link->ddc) { DC_ERROR("Failed to create ddc_service!\n"); goto create_fail; @@ -999,6 +1003,8 @@ static bool construct( goto create_fail; } + link->public.link_enc_hw_inst = link->link_enc->transmitter; + dal_adapter_service_get_integrated_info(as, &info); for (i = 0; ; i++) { @@ -1621,6 +1627,7 @@ void core_link_enable_stream( } dc->hwss.enable_stream(stream); + stream->status.link = &link->public; if (stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST) allocate_mst_payload(stream); @@ -1635,6 +1642,7 @@ void core_link_disable_stream( if (stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST) deallocate_mst_payload(stream); + stream->status.link = NULL; dc->hwss.disable_stream(stream); disable_link(stream); diff --git a/drivers/gpu/drm/amd/dal/dc/dc.h b/drivers/gpu/drm/amd/dal/dc/dc.h index c09af66..cc3395d 100644 --- a/drivers/gpu/drm/amd/dal/dc/dc.h +++ b/drivers/gpu/drm/amd/dal/dc/dc.h @@ -264,6 +264,16 @@ void dc_stream_release(struct dc_stream *dc_stream); void dc_update_stream(const struct dc_stream *dc_stream, struct rect *src, struct rect *dst); +struct dc_stream_status { + /* + * link this stream passes through + */ + const struct dc_link *link; +}; + +const struct dc_stream_status *dc_stream_get_status( + const struct dc_stream *dc_stream); + /******************************************************************************* * Link Interfaces ******************************************************************************/ @@ -289,6 +299,9 @@ struct dc_link { struct dc_link_settings max_link_setting; struct dc_link_settings cur_link_settings; struct dc_lane_settings cur_lane_setting; + + uint8_t ddc_hw_inst; + uint8_t link_enc_hw_inst; }; /* @@ -460,13 +473,4 @@ bool dc_write_dpcd( uint32_t size); -uint8_t dc_get_dig_index(const struct dc_stream *stream); - -enum signal_type dc_get_display_signal( - const struct dc_stream *stream); - -enum gpio_ddc_line dc_get_ddc_line( - const struct dc_stream *stream); - - #endif /* DC_INTERFACE_H_ */ diff --git a/drivers/gpu/drm/amd/dal/dc/inc/core_types.h b/drivers/gpu/drm/amd/dal/dc/inc/core_types.h index bd7bd2b..866853b 100644 --- a/drivers/gpu/drm/amd/dal/dc/inc/core_types.h +++ b/drivers/gpu/drm/amd/dal/dc/inc/core_types.h @@ -128,6 +128,8 @@ struct core_stream { struct audio_output audio_output; struct dc_context *ctx; + + struct dc_stream_status status; }; -- 2.7.4