aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm
diff options
context:
space:
mode:
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/drm_crtc.h1
-rw-r--r--include/drm/drm_dp_helper.h101
2 files changed, 84 insertions, 18 deletions
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 1816bb31273a..3fa18b7e9497 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -878,6 +878,7 @@ extern char *drm_get_tv_subconnector_name(int val);
878extern char *drm_get_tv_select_name(int val); 878extern char *drm_get_tv_select_name(int val);
879extern void drm_fb_release(struct drm_file *file_priv); 879extern void drm_fb_release(struct drm_file *file_priv);
880extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group); 880extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group);
881extern bool drm_probe_ddc(struct i2c_adapter *adapter);
881extern struct edid *drm_get_edid(struct drm_connector *connector, 882extern struct edid *drm_get_edid(struct drm_connector *connector,
882 struct i2c_adapter *adapter); 883 struct i2c_adapter *adapter);
883extern int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid); 884extern int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid);
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 1744b18c06b3..fe061489f91f 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -26,7 +26,19 @@
26#include <linux/types.h> 26#include <linux/types.h>
27#include <linux/i2c.h> 27#include <linux/i2c.h>
28 28
29/* From the VESA DisplayPort spec */ 29/*
30 * Unless otherwise noted, all values are from the DP 1.1a spec. Note that
31 * DP and DPCD versions are independent. Differences from 1.0 are not noted,
32 * 1.0 devices basically don't exist in the wild.
33 *
34 * Abbreviations, in chronological order:
35 *
36 * eDP: Embedded DisplayPort version 1
37 * DPI: DisplayPort Interoperability Guideline v1.1a
38 * 1.2: DisplayPort 1.2
39 *
40 * 1.2 formally includes both eDP and DPI definitions.
41 */
30 42
31#define AUX_NATIVE_WRITE 0x8 43#define AUX_NATIVE_WRITE 0x8
32#define AUX_NATIVE_READ 0x9 44#define AUX_NATIVE_READ 0x9
@@ -53,7 +65,7 @@
53 65
54#define DP_MAX_LANE_COUNT 0x002 66#define DP_MAX_LANE_COUNT 0x002
55# define DP_MAX_LANE_COUNT_MASK 0x1f 67# define DP_MAX_LANE_COUNT_MASK 0x1f
56# define DP_TPS3_SUPPORTED (1 << 6) 68# define DP_TPS3_SUPPORTED (1 << 6) /* 1.2 */
57# define DP_ENHANCED_FRAME_CAP (1 << 7) 69# define DP_ENHANCED_FRAME_CAP (1 << 7)
58 70
59#define DP_MAX_DOWNSPREAD 0x003 71#define DP_MAX_DOWNSPREAD 0x003
@@ -69,19 +81,33 @@
69/* 10b = TMDS or HDMI */ 81/* 10b = TMDS or HDMI */
70/* 11b = Other */ 82/* 11b = Other */
71# define DP_FORMAT_CONVERSION (1 << 3) 83# define DP_FORMAT_CONVERSION (1 << 3)
84# define DP_DETAILED_CAP_INFO_AVAILABLE (1 << 4) /* DPI */
72 85
73#define DP_MAIN_LINK_CHANNEL_CODING 0x006 86#define DP_MAIN_LINK_CHANNEL_CODING 0x006
74 87
75#define DP_DOWN_STREAM_PORT_COUNT 0x007 88#define DP_DOWN_STREAM_PORT_COUNT 0x007
76#define DP_PORT_COUNT_MASK 0x0f 89# define DP_PORT_COUNT_MASK 0x0f
77#define DP_OUI_SUPPORT (1 << 7) 90# define DP_MSA_TIMING_PAR_IGNORED (1 << 6) /* eDP */
78 91# define DP_OUI_SUPPORT (1 << 7)
79#define DP_EDP_CONFIGURATION_CAP 0x00d 92
80#define DP_TRAINING_AUX_RD_INTERVAL 0x00e 93#define DP_I2C_SPEED_CAP 0x00c /* DPI */
81 94# define DP_I2C_SPEED_1K 0x01
82#define DP_PSR_SUPPORT 0x070 95# define DP_I2C_SPEED_5K 0x02
96# define DP_I2C_SPEED_10K 0x04
97# define DP_I2C_SPEED_100K 0x08
98# define DP_I2C_SPEED_400K 0x10
99# define DP_I2C_SPEED_1M 0x20
100
101#define DP_EDP_CONFIGURATION_CAP 0x00d /* XXX 1.2? */
102#define DP_TRAINING_AUX_RD_INTERVAL 0x00e /* XXX 1.2? */
103
104/* Multiple stream transport */
105#define DP_MSTM_CAP 0x021 /* 1.2 */
106# define DP_MST_CAP (1 << 0)
107
108#define DP_PSR_SUPPORT 0x070 /* XXX 1.2? */
83# define DP_PSR_IS_SUPPORTED 1 109# define DP_PSR_IS_SUPPORTED 1
84#define DP_PSR_CAPS 0x071 110#define DP_PSR_CAPS 0x071 /* XXX 1.2? */
85# define DP_PSR_NO_TRAIN_ON_EXIT 1 111# define DP_PSR_NO_TRAIN_ON_EXIT 1
86# define DP_PSR_SETUP_TIME_330 (0 << 1) 112# define DP_PSR_SETUP_TIME_330 (0 << 1)
87# define DP_PSR_SETUP_TIME_275 (1 << 1) 113# define DP_PSR_SETUP_TIME_275 (1 << 1)
@@ -93,11 +119,36 @@
93# define DP_PSR_SETUP_TIME_MASK (7 << 1) 119# define DP_PSR_SETUP_TIME_MASK (7 << 1)
94# define DP_PSR_SETUP_TIME_SHIFT 1 120# define DP_PSR_SETUP_TIME_SHIFT 1
95 121
122/*
123 * 0x80-0x8f describe downstream port capabilities, but there are two layouts
124 * based on whether DP_DETAILED_CAP_INFO_AVAILABLE was set. If it was not,
125 * each port's descriptor is one byte wide. If it was set, each port's is
126 * four bytes wide, starting with the one byte from the base info. As of
127 * DP interop v1.1a only VGA defines additional detail.
128 */
129
130/* offset 0 */
131#define DP_DOWNSTREAM_PORT_0 0x80
132# define DP_DS_PORT_TYPE_MASK (7 << 0)
133# define DP_DS_PORT_TYPE_DP 0
134# define DP_DS_PORT_TYPE_VGA 1
135# define DP_DS_PORT_TYPE_DVI 2
136# define DP_DS_PORT_TYPE_HDMI 3
137# define DP_DS_PORT_TYPE_NON_EDID 4
138# define DP_DS_PORT_HPD (1 << 3)
139/* offset 1 for VGA is maximum megapixels per second / 8 */
140/* offset 2 */
141# define DP_DS_VGA_MAX_BPC_MASK (3 << 0)
142# define DP_DS_VGA_8BPC 0
143# define DP_DS_VGA_10BPC 1
144# define DP_DS_VGA_12BPC 2
145# define DP_DS_VGA_16BPC 3
146
96/* link configuration */ 147/* link configuration */
97#define DP_LINK_BW_SET 0x100 148#define DP_LINK_BW_SET 0x100
98# define DP_LINK_BW_1_62 0x06 149# define DP_LINK_BW_1_62 0x06
99# define DP_LINK_BW_2_7 0x0a 150# define DP_LINK_BW_2_7 0x0a
100# define DP_LINK_BW_5_4 0x14 151# define DP_LINK_BW_5_4 0x14 /* 1.2 */
101 152
102#define DP_LANE_COUNT_SET 0x101 153#define DP_LANE_COUNT_SET 0x101
103# define DP_LANE_COUNT_MASK 0x0f 154# define DP_LANE_COUNT_MASK 0x0f
@@ -107,7 +158,7 @@
107# define DP_TRAINING_PATTERN_DISABLE 0 158# define DP_TRAINING_PATTERN_DISABLE 0
108# define DP_TRAINING_PATTERN_1 1 159# define DP_TRAINING_PATTERN_1 1
109# define DP_TRAINING_PATTERN_2 2 160# define DP_TRAINING_PATTERN_2 2
110# define DP_TRAINING_PATTERN_3 3 161# define DP_TRAINING_PATTERN_3 3 /* 1.2 */
111# define DP_TRAINING_PATTERN_MASK 0x3 162# define DP_TRAINING_PATTERN_MASK 0x3
112 163
113# define DP_LINK_QUAL_PATTERN_DISABLE (0 << 2) 164# define DP_LINK_QUAL_PATTERN_DISABLE (0 << 2)
@@ -148,24 +199,38 @@
148 199
149#define DP_DOWNSPREAD_CTRL 0x107 200#define DP_DOWNSPREAD_CTRL 0x107
150# define DP_SPREAD_AMP_0_5 (1 << 4) 201# define DP_SPREAD_AMP_0_5 (1 << 4)
202# define DP_MSA_TIMING_PAR_IGNORE_EN (1 << 7) /* eDP */
151 203
152#define DP_MAIN_LINK_CHANNEL_CODING_SET 0x108 204#define DP_MAIN_LINK_CHANNEL_CODING_SET 0x108
153# define DP_SET_ANSI_8B10B (1 << 0) 205# define DP_SET_ANSI_8B10B (1 << 0)
154 206
155#define DP_PSR_EN_CFG 0x170 207#define DP_I2C_SPEED_CONTROL_STATUS 0x109 /* DPI */
208/* bitmask as for DP_I2C_SPEED_CAP */
209
210#define DP_EDP_CONFIGURATION_SET 0x10a /* XXX 1.2? */
211
212#define DP_MSTM_CTRL 0x111 /* 1.2 */
213# define DP_MST_EN (1 << 0)
214# define DP_UP_REQ_EN (1 << 1)
215# define DP_UPSTREAM_IS_SRC (1 << 2)
216
217#define DP_PSR_EN_CFG 0x170 /* XXX 1.2? */
156# define DP_PSR_ENABLE (1 << 0) 218# define DP_PSR_ENABLE (1 << 0)
157# define DP_PSR_MAIN_LINK_ACTIVE (1 << 1) 219# define DP_PSR_MAIN_LINK_ACTIVE (1 << 1)
158# define DP_PSR_CRC_VERIFICATION (1 << 2) 220# define DP_PSR_CRC_VERIFICATION (1 << 2)
159# define DP_PSR_FRAME_CAPTURE (1 << 3) 221# define DP_PSR_FRAME_CAPTURE (1 << 3)
160 222
223#define DP_SINK_COUNT 0x200
224/* prior to 1.2 bit 7 was reserved mbz */
225# define DP_GET_SINK_COUNT(x) ((((x) & 0x80) >> 1) | ((x) & 0x3f))
226# define DP_SINK_CP_READY (1 << 6)
227
161#define DP_DEVICE_SERVICE_IRQ_VECTOR 0x201 228#define DP_DEVICE_SERVICE_IRQ_VECTOR 0x201
162# define DP_REMOTE_CONTROL_COMMAND_PENDING (1 << 0) 229# define DP_REMOTE_CONTROL_COMMAND_PENDING (1 << 0)
163# define DP_AUTOMATED_TEST_REQUEST (1 << 1) 230# define DP_AUTOMATED_TEST_REQUEST (1 << 1)
164# define DP_CP_IRQ (1 << 2) 231# define DP_CP_IRQ (1 << 2)
165# define DP_SINK_SPECIFIC_IRQ (1 << 6) 232# define DP_SINK_SPECIFIC_IRQ (1 << 6)
166 233
167#define DP_EDP_CONFIGURATION_SET 0x10a
168
169#define DP_LANE0_1_STATUS 0x202 234#define DP_LANE0_1_STATUS 0x202
170#define DP_LANE2_3_STATUS 0x203 235#define DP_LANE2_3_STATUS 0x203
171# define DP_LANE_CR_DONE (1 << 0) 236# define DP_LANE_CR_DONE (1 << 0)
@@ -225,14 +290,14 @@
225# define DP_SET_POWER_D0 0x1 290# define DP_SET_POWER_D0 0x1
226# define DP_SET_POWER_D3 0x2 291# define DP_SET_POWER_D3 0x2
227 292
228#define DP_PSR_ERROR_STATUS 0x2006 293#define DP_PSR_ERROR_STATUS 0x2006 /* XXX 1.2? */
229# define DP_PSR_LINK_CRC_ERROR (1 << 0) 294# define DP_PSR_LINK_CRC_ERROR (1 << 0)
230# define DP_PSR_RFB_STORAGE_ERROR (1 << 1) 295# define DP_PSR_RFB_STORAGE_ERROR (1 << 1)
231 296
232#define DP_PSR_ESI 0x2007 297#define DP_PSR_ESI 0x2007 /* XXX 1.2? */
233# define DP_PSR_CAPS_CHANGE (1 << 0) 298# define DP_PSR_CAPS_CHANGE (1 << 0)
234 299
235#define DP_PSR_STATUS 0x2008 300#define DP_PSR_STATUS 0x2008 /* XXX 1.2? */
236# define DP_PSR_SINK_INACTIVE 0 301# define DP_PSR_SINK_INACTIVE 0
237# define DP_PSR_SINK_ACTIVE_SRC_SYNCED 1 302# define DP_PSR_SINK_ACTIVE_SRC_SYNCED 1
238# define DP_PSR_SINK_ACTIVE_RFB 2 303# define DP_PSR_SINK_ACTIVE_RFB 2