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
|
From 9783c01cb969c1c5310d2ceda0a62ea7d20a3f10 Mon Sep 17 00:00:00 2001
From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
Date: Tue, 2 Feb 2016 14:32:29 -0500
Subject: [PATCH 0762/1110] drm/amd/dal: Expose dig index, display_signal and
ddc to amdgpu
Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
---
.../gpu/drm/amd/dal/dc/adapter/adapter_service.c | 2 +-
drivers/gpu/drm/amd/dal/dc/core/dc.c | 44 ++++++++++++++++++++++
drivers/gpu/drm/amd/dal/dc/dc.h | 26 ++++++-------
3 files changed, 58 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c
index 3e07408..dd2f931 100644
--- a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c
+++ b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c
@@ -92,7 +92,7 @@ static struct feature_source_entry feature_entry_table[] = {
* Driver uses SW I2C.
* Make Test uses HW I2C.
*/
- {FEATURE_RESTORE_USAGE_I2C_SW_ENGINE, true, true},
+ {FEATURE_RESTORE_USAGE_I2C_SW_ENGINE, false, true},
{FEATURE_USE_MAX_DISPLAY_CLK, false, true},
{FEATURE_ALLOW_EDP_RESOURCE_SHARING, false, true},
{FEATURE_SUPPORT_DP_YUV, false, true},
diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc.c b/drivers/gpu/drm/amd/dal/dc/core/dc.c
index e6c7cac..0b8f158 100644
--- a/drivers/gpu/drm/amd/dal/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/dal/dc/core/dc.c
@@ -886,3 +886,47 @@ 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)
+{
+
+ 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;
+}
diff --git a/drivers/gpu/drm/amd/dal/dc/dc.h b/drivers/gpu/drm/amd/dal/dc/dc.h
index 1cd0883..61f13bd 100644
--- a/drivers/gpu/drm/amd/dal/dc/dc.h
+++ b/drivers/gpu/drm/amd/dal/dc/dc.h
@@ -430,20 +430,10 @@ void dc_resume(const struct dc *dc);
const struct ddc_service *dc_get_ddc_at_index(
struct dc *dc, uint32_t link_index);
-const struct dc_ddc* dc_get_ddc_from_sink(const struct dc_sink* sink);
-const struct dc_ddc* dc_get_ddc_from_link(const struct dc_link* link);
-bool dc_ddc_query_i2c(const struct dc_ddc* ddc,
- uint32_t address,
- uint8_t* write_buf,
- uint32_t write_size,
- uint8_t* read_buf,
- uint32_t read_size);
-bool dc_ddc_dpcd_read(const struct dc_ddc* ddc, uint32_t address,
- uint8_t* data, uint32_t len);
-bool dc_ddc_dpcd_write(const struct dc_ddc* ddc, uint32_t address,
- const uint8_t* data, uint32_t len);
-
+/*
+ * DPCD access interfaces
+ */
bool dc_read_dpcd(
struct dc *dc,
@@ -459,4 +449,14 @@ bool dc_write_dpcd(
const uint8_t *data,
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_ */
--
2.7.4
|