aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0777-drm-amd-dal-fix-dependency-on-DC.patch
blob: 550608652682c3834ebb72264ddc4dc6ee600896 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
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