diff options
author | Dave Airlie <airlied@redhat.com> | 2012-10-07 07:13:54 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-10-07 07:13:54 -0400 |
commit | 1f31c69dac71bebc0f00bc8534a6345782045501 (patch) | |
tree | 84797ce9d8c8b2c90130af5d6d4704e5df0dacee /include/drm | |
parent | a5a0fc67435599d9d787a8d7153967a70fed968e (diff) | |
parent | f8f2ac9a76b0f80a6763ca316116a7bab8486997 (diff) |
Merge branch 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel into drm-next
Daniel writes:
Bigger -fixes pile, mostly because I've included Ajax' DP dongle stuff,
as discussed on irc. Otherwise just small things:
- regression fix to finally make 6bpc auto-dither on dp work (Jani)
- reinstate an snb ctx w/a that accidentally got lost in a rework (Chris)
- fixup the DP train sequence, logic-goof-up uncovered by Coverty (Chris)
- fix set_caching locking (Ben)
- fix spurious segfault on con-current gtt mmap faulting (Dimitry and Mika)
- some pageflip correctness fixes (still hunting down some issues, but
these are the worst offenders of confused code that we've tracked down
thus far) from Chris and me
- fixup swizzling settings on vlv (Jesse)
- gt_mode w/a from Ben added, fixes snb gt1 rc6+hw ctx hangs.
* 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel:
drm/i915: Fix GT_MODE default value
drm/i915: don't frob the vblank ts in finish_page_flip
drm/i915: call drm_handle_vblank before finish_page_flip
drm/i915: print warning if vmi915_gem_fault error is not handled
drm/i915: EBUSY status handling added to i915_gem_fault().
drm/i915: Try harder to complete DP training pattern 1
drm/i915: set swizzling to none on VLV
drm/dp: Make sink count DP 1.2 aware
drm/dp: Document DP spec versions for various DPCD registers
drm/i915/dp: Be smarter about connection sense for branch devices
drm/i915/dp: Fetch downstream port info if needed during DPCD fetch
drm/dp: Update DPCD defines
drm: Export drm_probe_ddc()
drm/i915: Flush the pending flips on the CRTC before modification
drm/i915: Actually invalidate the TLB for the SandyBridge HW contexts w/a
drm/i915: Fix set_caching locking
drm/i915: use adjusted_mode instead of mode for checking the 6bpc force flag
Diffstat (limited to 'include/drm')
-rw-r--r-- | include/drm/drm_crtc.h | 1 | ||||
-rw-r--r-- | include/drm/drm_dp_helper.h | 101 |
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); | |||
878 | extern char *drm_get_tv_select_name(int val); | 878 | extern char *drm_get_tv_select_name(int val); |
879 | extern void drm_fb_release(struct drm_file *file_priv); | 879 | extern void drm_fb_release(struct drm_file *file_priv); |
880 | extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group); | 880 | extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group); |
881 | extern bool drm_probe_ddc(struct i2c_adapter *adapter); | ||
881 | extern struct edid *drm_get_edid(struct drm_connector *connector, | 882 | extern struct edid *drm_get_edid(struct drm_connector *connector, |
882 | struct i2c_adapter *adapter); | 883 | struct i2c_adapter *adapter); |
883 | extern int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid); | 884 | extern 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 |