aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0777-drm-amd-dal-fix-dependency-on-DC.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0777-drm-amd-dal-fix-dependency-on-DC.patch')
-rw-r--r--common/recipes-kernel/linux/files/0777-drm-amd-dal-fix-dependency-on-DC.patch194
1 files changed, 194 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0777-drm-amd-dal-fix-dependency-on-DC.patch b/common/recipes-kernel/linux/files/0777-drm-amd-dal-fix-dependency-on-DC.patch
new file mode 100644
index 00000000..55060865
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0777-drm-amd-dal-fix-dependency-on-DC.patch
@@ -0,0 +1,194 @@
+From 7030579959edecd65fd7b6986191438cfcf0c8e6 Mon Sep 17 00:00:00 2001
+From: Mykola Lysenko <Mykola.Lysenko@amd.com>
+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 <Mykola.Lysenko@amd.com>
+Acked-by: Jordan Lazare <Jordan.Lazare@amd.com>
+---
+ 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
+