Rev 3746 | Rev 4280 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3746 | Rev 4104 | ||
---|---|---|---|
Line 24... | Line 24... | ||
24 | */ |
24 | */ |
25 | #ifndef __INTEL_DRV_H__ |
25 | #ifndef __INTEL_DRV_H__ |
26 | #define __INTEL_DRV_H__ |
26 | #define __INTEL_DRV_H__ |
Line 27... | Line 27... | ||
27 | 27 | ||
- | 28 | #include |
|
28 | #include |
29 | #include |
29 | #include |
30 | #include |
30 | #include "i915_drv.h" |
31 | #include "i915_drv.h" |
31 | #include |
32 | #include |
32 | #include |
33 | #include |
Line 62... | Line 63... | ||
62 | } \ |
63 | } \ |
63 | } \ |
64 | } \ |
64 | ret__; \ |
65 | ret__; \ |
65 | }) |
66 | }) |
Line 66... | Line -... | ||
66 | - | ||
67 | #define wait_for_atomic_us(COND, US) ({ \ |
- | |
68 | unsigned long timeout__ = GetTimerTicks() + usecs_to_jiffies(US); \ |
- | |
69 | int ret__ = 0; \ |
- | |
70 | while (!(COND)) { \ |
- | |
71 | if (time_after(GetTimerTicks(), timeout__)) { \ |
- | |
72 | ret__ = -ETIMEDOUT; \ |
- | |
73 | break; \ |
- | |
74 | } \ |
- | |
75 | cpu_relax(); \ |
- | |
76 | } \ |
- | |
77 | ret__; \ |
- | |
78 | }) |
- | |
79 | 67 | ||
80 | #define wait_for(COND, MS) _wait_for(COND, MS, 1) |
68 | #define wait_for(COND, MS) _wait_for(COND, MS, 1) |
81 | #define wait_for_atomic(COND, MS) _wait_for(COND, MS, 0) |
- | |
82 | 69 | #define wait_for_atomic(COND, MS) _wait_for(COND, MS, 0) |
|
83 | #define MSLEEP(x) do { \ |
- | |
84 | if (in_dbg_master()) \ |
70 | #define wait_for_atomic_us(COND, US) _wait_for((COND), \ |
85 | mdelay(x); \ |
- | |
86 | else \ |
- | |
87 | msleep(x); \ |
- | |
Line 88... | Line 71... | ||
88 | } while(0) |
71 | DIV_ROUND_UP((US), 1000), 0) |
89 | 72 | ||
Line 90... | Line 73... | ||
90 | #define KHz(x) (1000*x) |
73 | #define KHz(x) (1000*x) |
Line 141... | Line 124... | ||
141 | * base->crtc while a modeset is in progress. |
124 | * base->crtc while a modeset is in progress. |
142 | */ |
125 | */ |
143 | struct intel_crtc *new_crtc; |
126 | struct intel_crtc *new_crtc; |
Line 144... | Line 127... | ||
144 | 127 | ||
145 | int type; |
- | |
146 | bool needs_tv_clock; |
128 | int type; |
147 | /* |
129 | /* |
148 | * Intel hw has only one MUX where encoders could be clone, hence a |
130 | * Intel hw has only one MUX where encoders could be clone, hence a |
149 | * simple flag is enough to compute the possible_clones mask. |
131 | * simple flag is enough to compute the possible_clones mask. |
150 | */ |
132 | */ |
Line 161... | Line 143... | ||
161 | void (*post_disable)(struct intel_encoder *); |
143 | void (*post_disable)(struct intel_encoder *); |
162 | /* Read out the current hw state of this connector, returning true if |
144 | /* Read out the current hw state of this connector, returning true if |
163 | * the encoder is active. If the encoder is enabled it also set the pipe |
145 | * the encoder is active. If the encoder is enabled it also set the pipe |
164 | * it is connected to in the pipe parameter. */ |
146 | * it is connected to in the pipe parameter. */ |
165 | bool (*get_hw_state)(struct intel_encoder *, enum pipe *pipe); |
147 | bool (*get_hw_state)(struct intel_encoder *, enum pipe *pipe); |
- | 148 | /* Reconstructs the equivalent mode flags for the current hardware |
|
- | 149 | * state. This must be called _after_ display->get_pipe_config has |
|
- | 150 | * pre-filled the pipe config. Note that intel_encoder->base.crtc must |
|
- | 151 | * be set correctly before calling this function. */ |
|
- | 152 | void (*get_config)(struct intel_encoder *, |
|
- | 153 | struct intel_crtc_config *pipe_config); |
|
166 | int crtc_mask; |
154 | int crtc_mask; |
167 | enum hpd_pin hpd_pin; |
155 | enum hpd_pin hpd_pin; |
168 | }; |
156 | }; |
Line 169... | Line 157... | ||
169 | 157 | ||
Line 198... | Line 186... | ||
198 | /* since POLL and HPD connectors may use the same HPD line keep the native |
186 | /* since POLL and HPD connectors may use the same HPD line keep the native |
199 | state of connector->polled in case hotplug storm detection changes it */ |
187 | state of connector->polled in case hotplug storm detection changes it */ |
200 | u8 polled; |
188 | u8 polled; |
201 | }; |
189 | }; |
Line -... | Line 190... | ||
- | 190 | ||
- | 191 | typedef struct dpll { |
|
- | 192 | /* given values */ |
|
- | 193 | int n; |
|
- | 194 | int m1, m2; |
|
- | 195 | int p1, p2; |
|
- | 196 | /* derived values */ |
|
- | 197 | int dot; |
|
- | 198 | int vco; |
|
- | 199 | int m; |
|
- | 200 | int p; |
|
- | 201 | } intel_clock_t; |
|
202 | 202 | ||
- | 203 | struct intel_crtc_config { |
|
- | 204 | /** |
|
- | 205 | * quirks - bitfield with hw state readout quirks |
|
- | 206 | * |
|
- | 207 | * For various reasons the hw state readout code might not be able to |
|
- | 208 | * completely faithfully read out the current state. These cases are |
|
- | 209 | * tracked with quirk flags so that fastboot and state checker can act |
|
- | 210 | * accordingly. |
|
- | 211 | */ |
|
- | 212 | #define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS (1<<0) /* unreliable sync mode.flags */ |
|
- | 213 | unsigned long quirks; |
|
203 | struct intel_crtc_config { |
214 | |
204 | struct drm_display_mode requested_mode; |
215 | struct drm_display_mode requested_mode; |
205 | struct drm_display_mode adjusted_mode; |
- | |
206 | /* This flag must be set by the encoder's compute_config callback if it |
- | |
207 | * changes the crtc timings in the mode to prevent the crtc fixup from |
- | |
208 | * overwriting them. Currently only lvds needs that. */ |
- | |
209 | bool timings_set; |
216 | struct drm_display_mode adjusted_mode; |
210 | /* Whether to set up the PCH/FDI. Note that we never allow sharing |
217 | /* Whether to set up the PCH/FDI. Note that we never allow sharing |
211 | * between pch encoders and cpu encoders. */ |
218 | * between pch encoders and cpu encoders. */ |
Line 212... | Line 219... | ||
212 | bool has_pch_encoder; |
219 | bool has_pch_encoder; |
Line 222... | Line 229... | ||
222 | bool limited_color_range; |
229 | bool limited_color_range; |
Line 223... | Line 230... | ||
223 | 230 | ||
224 | /* DP has a bunch of special case unfortunately, so mark the pipe |
231 | /* DP has a bunch of special case unfortunately, so mark the pipe |
225 | * accordingly. */ |
232 | * accordingly. */ |
- | 233 | bool has_dp_encoder; |
|
- | 234 | ||
- | 235 | /* |
|
- | 236 | * Enable dithering, used when the selected pipe bpp doesn't match the |
|
- | 237 | * plane bpp. |
|
226 | bool has_dp_encoder; |
238 | */ |
Line 227... | Line 239... | ||
227 | bool dither; |
239 | bool dither; |
228 | 240 | ||
Line -... | Line 241... | ||
- | 241 | /* Controls for the clock computation, to override various stages. */ |
|
- | 242 | bool clock_set; |
|
- | 243 | ||
- | 244 | /* SDVO TV has a bunch of special case. To make multifunction encoders |
|
- | 245 | * work correctly, we need to track this at runtime.*/ |
|
- | 246 | bool sdvo_tv_clock; |
|
- | 247 | ||
- | 248 | /* |
|
- | 249 | * crtc bandwidth limit, don't increase pipe bpp or clock if not really |
|
- | 250 | * required. This is set in the 2nd loop of calling encoder's |
|
- | 251 | * ->compute_config if the first pick doesn't work out. |
|
229 | /* Controls for the clock computation, to override various stages. */ |
252 | */ |
230 | bool clock_set; |
253 | bool bw_constrained; |
231 | 254 | ||
- | 255 | /* Settings for the intel dpll used on pretty much everything but |
|
232 | /* Settings for the intel dpll used on pretty much everything but |
256 | * haswell. */ |
233 | * haswell. */ |
257 | struct dpll dpll; |
- | 258 | ||
234 | struct dpll { |
259 | /* Selected dpll when shared or DPLL_ID_PRIVATE. */ |
235 | unsigned n; |
260 | enum intel_dpll_id shared_dpll; |
Line 236... | Line 261... | ||
236 | unsigned m1, m2; |
261 | |
237 | unsigned p1, p2; |
262 | /* Actual register state of the dpll, for shared dpll cross-checking. */ |
- | 263 | struct intel_dpll_hw_state dpll_hw_state; |
|
238 | } dpll; |
264 | |
239 | 265 | int pipe_bpp; |
|
240 | int pipe_bpp; |
266 | struct intel_link_m_n dp_m_n; |
241 | struct intel_link_m_n dp_m_n; |
- | |
242 | /** |
267 | |
243 | * This is currently used by DP and HDMI encoders since those can have a |
268 | /* |
- | 269 | * Frequence the dpll for the port should run at. Differs from the |
|
244 | * target pixel clock != the port link clock (which is currently stored |
270 | * adjusted dotclock e.g. for DP or 12bpc hdmi mode. |
245 | * in adjusted_mode->clock). |
271 | */ |
- | 272 | int port_clock; |
|
- | 273 | ||
- | 274 | /* Used by SDVO (and if we ever fix it, HDMI). */ |
|
- | 275 | unsigned pixel_multiplier; |
|
- | 276 | ||
- | 277 | /* Panel fitter controls for gen2-gen4 + VLV */ |
|
- | 278 | struct { |
|
- | 279 | u32 control; |
|
- | 280 | u32 pgm_ratios; |
|
- | 281 | u32 lvds_border_bits; |
|
- | 282 | } gmch_pfit; |
|
- | 283 | ||
- | 284 | /* Panel fitter placement and size for Ironlake+ */ |
|
- | 285 | struct { |
|
- | 286 | u32 pos; |
|
- | 287 | u32 size; |
|
- | 288 | bool enabled; |
|
- | 289 | } pch_pfit; |
|
- | 290 | ||
- | 291 | /* FDI configuration, only valid if has_pch_encoder is set. */ |
|
246 | */ |
292 | int fdi_lanes; |
Line 247... | Line 293... | ||
247 | int pixel_target_clock; |
293 | struct intel_link_m_n fdi_m_n; |
248 | /* Used by SDVO (and if we ever fix it, HDMI). */ |
294 | |
249 | unsigned pixel_multiplier; |
295 | bool ips_enabled; |
Line 263... | Line 309... | ||
263 | bool eld_vld; |
309 | bool eld_vld; |
264 | bool primary_disabled; /* is the crtc obscured by a plane? */ |
310 | bool primary_disabled; /* is the crtc obscured by a plane? */ |
265 | bool lowfreq_avail; |
311 | bool lowfreq_avail; |
266 | struct intel_overlay *overlay; |
312 | struct intel_overlay *overlay; |
267 | struct intel_unpin_work *unpin_work; |
313 | struct intel_unpin_work *unpin_work; |
268 | int fdi_lanes; |
- | |
Line 269... | Line 314... | ||
269 | 314 | ||
Line 270... | Line 315... | ||
270 | atomic_t unpin_work_count; |
315 | atomic_t unpin_work_count; |
271 | 316 | ||
Line 280... | Line 325... | ||
280 | int16_t cursor_width, cursor_height; |
325 | int16_t cursor_width, cursor_height; |
281 | bool cursor_visible; |
326 | bool cursor_visible; |
Line 282... | Line 327... | ||
282 | 327 | ||
Line 283... | Line -... | ||
283 | struct intel_crtc_config config; |
- | |
284 | - | ||
285 | /* We can share PLLs across outputs if the timings match */ |
328 | struct intel_crtc_config config; |
Line 286... | Line 329... | ||
286 | struct intel_pch_pll *pch_pll; |
329 | |
287 | uint32_t ddi_pll_sel; |
330 | uint32_t ddi_pll_sel; |
- | 331 | ||
- | 332 | /* reset counter value when the last flip was submitted */ |
|
- | 333 | unsigned int reset_counter; |
|
- | 334 | ||
- | 335 | /* Access to these should be protected by dev_priv->irq_lock. */ |
|
- | 336 | bool cpu_fifo_underrun_disabled; |
|
- | 337 | bool pch_fifo_underrun_disabled; |
|
- | 338 | }; |
|
- | 339 | ||
- | 340 | struct intel_plane_wm_parameters { |
|
- | 341 | uint32_t horiz_pixels; |
|
288 | 342 | uint8_t bytes_per_pixel; |
|
Line 289... | Line 343... | ||
289 | /* reset counter value when the last flip was submitted */ |
343 | bool enabled; |
290 | unsigned int reset_counter; |
344 | bool scaled; |
291 | }; |
345 | }; |
Line 300... | Line 354... | ||
300 | u32 lut_r[1024], lut_g[1024], lut_b[1024]; |
354 | u32 lut_r[1024], lut_g[1024], lut_b[1024]; |
301 | int crtc_x, crtc_y; |
355 | int crtc_x, crtc_y; |
302 | unsigned int crtc_w, crtc_h; |
356 | unsigned int crtc_w, crtc_h; |
303 | uint32_t src_x, src_y; |
357 | uint32_t src_x, src_y; |
304 | uint32_t src_w, src_h; |
358 | uint32_t src_w, src_h; |
- | 359 | ||
- | 360 | /* Since we need to change the watermarks before/after |
|
- | 361 | * enabling/disabling the planes, we need to store the parameters here |
|
- | 362 | * as the other pieces of the struct may not reflect the values we want |
|
- | 363 | * for the watermark calculations. Currently only Haswell uses this. |
|
- | 364 | */ |
|
- | 365 | struct intel_plane_wm_parameters wm; |
|
- | 366 | ||
305 | void (*update_plane)(struct drm_plane *plane, |
367 | void (*update_plane)(struct drm_plane *plane, |
- | 368 | struct drm_crtc *crtc, |
|
306 | struct drm_framebuffer *fb, |
369 | struct drm_framebuffer *fb, |
307 | struct drm_i915_gem_object *obj, |
370 | struct drm_i915_gem_object *obj, |
308 | int crtc_x, int crtc_y, |
371 | int crtc_x, int crtc_y, |
309 | unsigned int crtc_w, unsigned int crtc_h, |
372 | unsigned int crtc_w, unsigned int crtc_h, |
310 | uint32_t x, uint32_t y, |
373 | uint32_t x, uint32_t y, |
311 | uint32_t src_w, uint32_t src_h); |
374 | uint32_t src_w, uint32_t src_h); |
312 | void (*disable_plane)(struct drm_plane *plane); |
375 | void (*disable_plane)(struct drm_plane *plane, |
- | 376 | struct drm_crtc *crtc); |
|
313 | int (*update_colorkey)(struct drm_plane *plane, |
377 | int (*update_colorkey)(struct drm_plane *plane, |
314 | struct drm_intel_sprite_colorkey *key); |
378 | struct drm_intel_sprite_colorkey *key); |
315 | void (*get_colorkey)(struct drm_plane *plane, |
379 | void (*get_colorkey)(struct drm_plane *plane, |
316 | struct drm_intel_sprite_colorkey *key); |
380 | struct drm_intel_sprite_colorkey *key); |
317 | }; |
381 | }; |
Line 339... | Line 403... | ||
339 | #define to_intel_connector(x) container_of(x, struct intel_connector, base) |
403 | #define to_intel_connector(x) container_of(x, struct intel_connector, base) |
340 | #define to_intel_encoder(x) container_of(x, struct intel_encoder, base) |
404 | #define to_intel_encoder(x) container_of(x, struct intel_encoder, base) |
341 | #define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base) |
405 | #define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base) |
342 | #define to_intel_plane(x) container_of(x, struct intel_plane, base) |
406 | #define to_intel_plane(x) container_of(x, struct intel_plane, base) |
Line 343... | Line -... | ||
343 | - | ||
344 | #define DIP_HEADER_SIZE 5 |
- | |
345 | - | ||
346 | #define DIP_TYPE_AVI 0x82 |
- | |
347 | #define DIP_VERSION_AVI 0x2 |
- | |
348 | #define DIP_LEN_AVI 13 |
- | |
349 | #define DIP_AVI_PR_1 0 |
- | |
350 | #define DIP_AVI_PR_2 1 |
- | |
351 | #define DIP_AVI_RGB_QUANT_RANGE_DEFAULT (0 << 2) |
- | |
352 | #define DIP_AVI_RGB_QUANT_RANGE_LIMITED (1 << 2) |
- | |
353 | #define DIP_AVI_RGB_QUANT_RANGE_FULL (2 << 2) |
- | |
354 | - | ||
355 | #define DIP_TYPE_SPD 0x83 |
- | |
356 | #define DIP_VERSION_SPD 0x1 |
- | |
357 | #define DIP_LEN_SPD 25 |
- | |
358 | #define DIP_SPD_UNKNOWN 0 |
- | |
359 | #define DIP_SPD_DSTB 0x1 |
- | |
360 | #define DIP_SPD_DVDP 0x2 |
- | |
361 | #define DIP_SPD_DVHS 0x3 |
- | |
362 | #define DIP_SPD_HDDVR 0x4 |
- | |
363 | #define DIP_SPD_DVC 0x5 |
- | |
364 | #define DIP_SPD_DSC 0x6 |
- | |
365 | #define DIP_SPD_VCD 0x7 |
- | |
366 | #define DIP_SPD_GAME 0x8 |
- | |
367 | #define DIP_SPD_PC 0x9 |
- | |
368 | #define DIP_SPD_BD 0xa |
- | |
369 | #define DIP_SPD_SCD 0xb |
- | |
370 | - | ||
371 | struct dip_infoframe { |
- | |
372 | uint8_t type; /* HB0 */ |
- | |
373 | uint8_t ver; /* HB1 */ |
- | |
374 | uint8_t len; /* HB2 - body len, not including checksum */ |
- | |
375 | uint8_t ecc; /* Header ECC */ |
- | |
376 | uint8_t checksum; /* PB0 */ |
- | |
377 | union { |
- | |
378 | struct { |
- | |
379 | /* PB1 - Y 6:5, A 4:4, B 3:2, S 1:0 */ |
- | |
380 | uint8_t Y_A_B_S; |
- | |
381 | /* PB2 - C 7:6, M 5:4, R 3:0 */ |
- | |
382 | uint8_t C_M_R; |
- | |
383 | /* PB3 - ITC 7:7, EC 6:4, Q 3:2, SC 1:0 */ |
- | |
384 | uint8_t ITC_EC_Q_SC; |
- | |
385 | /* PB4 - VIC 6:0 */ |
- | |
386 | uint8_t VIC; |
- | |
387 | /* PB5 - YQ 7:6, CN 5:4, PR 3:0 */ |
- | |
388 | uint8_t YQ_CN_PR; |
- | |
389 | /* PB6 to PB13 */ |
- | |
390 | uint16_t top_bar_end; |
- | |
391 | uint16_t bottom_bar_start; |
- | |
392 | uint16_t left_bar_end; |
- | |
393 | uint16_t right_bar_start; |
- | |
394 | } __attribute__ ((packed)) avi; |
- | |
395 | struct { |
- | |
396 | uint8_t vn[8]; |
- | |
397 | uint8_t pd[16]; |
- | |
398 | uint8_t sdi; |
- | |
399 | } __attribute__ ((packed)) spd; |
- | |
400 | uint8_t payload[27]; |
- | |
401 | } __attribute__ ((packed)) body; |
- | |
402 | } __attribute__((packed)); |
- | |
403 | 407 | ||
404 | struct intel_hdmi { |
408 | struct intel_hdmi { |
405 | u32 hdmi_reg; |
409 | u32 hdmi_reg; |
406 | int ddc_bus; |
410 | int ddc_bus; |
407 | uint32_t color_range; |
411 | uint32_t color_range; |
408 | bool color_range_auto; |
412 | bool color_range_auto; |
409 | bool has_hdmi_sink; |
413 | bool has_hdmi_sink; |
410 | bool has_audio; |
414 | bool has_audio; |
411 | enum hdmi_force_audio force_audio; |
415 | enum hdmi_force_audio force_audio; |
412 | bool rgb_quant_range_selectable; |
416 | bool rgb_quant_range_selectable; |
413 | void (*write_infoframe)(struct drm_encoder *encoder, |
417 | void (*write_infoframe)(struct drm_encoder *encoder, |
- | 418 | enum hdmi_infoframe_type type, |
|
414 | struct dip_infoframe *frame); |
419 | const uint8_t *frame, ssize_t len); |
415 | void (*set_infoframes)(struct drm_encoder *encoder, |
420 | void (*set_infoframes)(struct drm_encoder *encoder, |
416 | struct drm_display_mode *adjusted_mode); |
421 | struct drm_display_mode *adjusted_mode); |
Line 417... | Line 422... | ||
417 | }; |
422 | }; |
Line 429... | Line 434... | ||
429 | uint32_t color_range; |
434 | uint32_t color_range; |
430 | bool color_range_auto; |
435 | bool color_range_auto; |
431 | uint8_t link_bw; |
436 | uint8_t link_bw; |
432 | uint8_t lane_count; |
437 | uint8_t lane_count; |
433 | uint8_t dpcd[DP_RECEIVER_CAP_SIZE]; |
438 | uint8_t dpcd[DP_RECEIVER_CAP_SIZE]; |
- | 439 | uint8_t psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE]; |
|
434 | uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS]; |
440 | uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS]; |
435 | struct i2c_adapter adapter; |
441 | struct i2c_adapter adapter; |
436 | struct i2c_algo_dp_aux_data algo; |
442 | struct i2c_algo_dp_aux_data algo; |
437 | bool is_pch_edp; |
- | |
438 | uint8_t train_set[4]; |
443 | uint8_t train_set[4]; |
439 | int panel_power_up_delay; |
444 | int panel_power_up_delay; |
440 | int panel_power_down_delay; |
445 | int panel_power_down_delay; |
441 | int panel_power_cycle_delay; |
446 | int panel_power_cycle_delay; |
442 | int backlight_on_delay; |
447 | int backlight_on_delay; |
443 | int backlight_off_delay; |
448 | int backlight_off_delay; |
444 | struct delayed_work panel_vdd_work; |
449 | struct delayed_work panel_vdd_work; |
445 | bool want_panel_vdd; |
450 | bool want_panel_vdd; |
- | 451 | bool psr_setup_done; |
|
446 | struct intel_connector *attached_connector; |
452 | struct intel_connector *attached_connector; |
447 | }; |
453 | }; |
Line 448... | Line 454... | ||
448 | 454 | ||
449 | struct intel_digital_port { |
455 | struct intel_digital_port { |
450 | struct intel_encoder base; |
456 | struct intel_encoder base; |
451 | enum port port; |
457 | enum port port; |
452 | u32 port_reversal; |
458 | u32 saved_port_bits; |
453 | struct intel_dp dp; |
459 | struct intel_dp dp; |
454 | struct intel_hdmi hdmi; |
460 | struct intel_hdmi hdmi; |
Line -... | Line 461... | ||
- | 461 | }; |
|
- | 462 | ||
- | 463 | static inline int |
|
- | 464 | vlv_dport_to_channel(struct intel_digital_port *dport) |
|
- | 465 | { |
|
- | 466 | switch (dport->port) { |
|
- | 467 | case PORT_B: |
|
- | 468 | return 0; |
|
- | 469 | case PORT_C: |
|
- | 470 | return 1; |
|
- | 471 | default: |
|
- | 472 | BUG(); |
|
- | 473 | } |
|
455 | }; |
474 | } |
456 | 475 | ||
457 | static inline struct drm_crtc * |
476 | static inline struct drm_crtc * |
458 | intel_get_crtc_for_pipe(struct drm_device *dev, int pipe) |
477 | intel_get_crtc_for_pipe(struct drm_device *dev, int pipe) |
459 | { |
478 | { |
Line 479... | Line 498... | ||
479 | #define INTEL_FLIP_PENDING 1 |
498 | #define INTEL_FLIP_PENDING 1 |
480 | #define INTEL_FLIP_COMPLETE 2 |
499 | #define INTEL_FLIP_COMPLETE 2 |
481 | bool enable_stall_check; |
500 | bool enable_stall_check; |
482 | }; |
501 | }; |
Line 483... | Line -... | ||
483 | - | ||
484 | struct intel_fbc_work { |
- | |
485 | struct delayed_work work; |
- | |
486 | struct drm_crtc *crtc; |
- | |
487 | struct drm_framebuffer *fb; |
- | |
488 | int interval; |
- | |
489 | }; |
- | |
490 | 502 | ||
Line 491... | Line 503... | ||
491 | int intel_pch_rawclk(struct drm_device *dev); |
503 | int intel_pch_rawclk(struct drm_device *dev); |
492 | 504 | ||
493 | int intel_connector_update_modes(struct drm_connector *connector, |
505 | int intel_connector_update_modes(struct drm_connector *connector, |
Line 494... | Line 506... | ||
494 | struct edid *edid); |
506 | struct edid *edid); |
495 | int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter); |
507 | int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter); |
Line -... | Line 508... | ||
- | 508 | ||
496 | 509 | extern void intel_attach_force_audio_property(struct drm_connector *connector); |
|
497 | extern void intel_attach_force_audio_property(struct drm_connector *connector); |
510 | extern void intel_attach_broadcast_rgb_property(struct drm_connector *connector); |
498 | extern void intel_attach_broadcast_rgb_property(struct drm_connector *connector); |
511 | |
499 | 512 | extern bool intel_pipe_has_type(struct drm_crtc *crtc, int type); |
|
500 | extern void intel_crt_init(struct drm_device *dev); |
513 | extern void intel_crt_init(struct drm_device *dev); |
501 | extern void intel_hdmi_init(struct drm_device *dev, |
514 | extern void intel_hdmi_init(struct drm_device *dev, |
502 | int hdmi_reg, enum port port); |
515 | int hdmi_reg, enum port port); |
503 | extern void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, |
516 | extern void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, |
504 | struct intel_connector *intel_connector); |
- | |
505 | extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); |
517 | struct intel_connector *intel_connector); |
506 | extern bool intel_hdmi_compute_config(struct intel_encoder *encoder, |
518 | extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); |
507 | struct intel_crtc_config *pipe_config); |
519 | extern bool intel_hdmi_compute_config(struct intel_encoder *encoder, |
508 | extern void intel_dip_infoframe_csum(struct dip_infoframe *avi_if); |
520 | struct intel_crtc_config *pipe_config); |
509 | extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, |
521 | extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, |
510 | bool is_sdvob); |
522 | bool is_sdvob); |
- | 523 | extern void intel_dvo_init(struct drm_device *dev); |
|
511 | extern void intel_dvo_init(struct drm_device *dev); |
524 | extern void intel_tv_init(struct drm_device *dev); |
512 | extern void intel_tv_init(struct drm_device *dev); |
525 | extern void intel_mark_busy(struct drm_device *dev); |
513 | extern void intel_mark_busy(struct drm_device *dev); |
526 | extern void intel_mark_fb_busy(struct drm_i915_gem_object *obj, |
514 | extern void intel_mark_fb_busy(struct drm_i915_gem_object *obj); |
527 | struct intel_ring_buffer *ring); |
515 | extern void intel_mark_idle(struct drm_device *dev); |
528 | extern void intel_mark_idle(struct drm_device *dev); |
516 | extern bool intel_lvds_init(struct drm_device *dev); |
529 | extern void intel_lvds_init(struct drm_device *dev); |
517 | extern bool intel_is_dual_link_lvds(struct drm_device *dev); |
530 | extern bool intel_is_dual_link_lvds(struct drm_device *dev); |
518 | extern void intel_dp_init(struct drm_device *dev, int output_reg, |
531 | extern void intel_dp_init(struct drm_device *dev, int output_reg, |
519 | enum port port); |
532 | enum port port); |
520 | extern void intel_dp_init_connector(struct intel_digital_port *intel_dig_port, |
533 | extern bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port, |
521 | struct intel_connector *intel_connector); |
534 | struct intel_connector *intel_connector); |
Line 533... | Line 546... | ||
533 | extern void ironlake_edp_backlight_off(struct intel_dp *intel_dp); |
546 | extern void ironlake_edp_backlight_off(struct intel_dp *intel_dp); |
534 | extern void ironlake_edp_panel_on(struct intel_dp *intel_dp); |
547 | extern void ironlake_edp_panel_on(struct intel_dp *intel_dp); |
535 | extern void ironlake_edp_panel_off(struct intel_dp *intel_dp); |
548 | extern void ironlake_edp_panel_off(struct intel_dp *intel_dp); |
536 | extern void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp); |
549 | extern void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp); |
537 | extern void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); |
550 | extern void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); |
538 | extern bool intel_encoder_is_pch_edp(struct drm_encoder *encoder); |
- | |
539 | extern int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane); |
551 | extern int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane); |
540 | extern void intel_flush_display_plane(struct drm_i915_private *dev_priv, |
552 | extern void intel_flush_display_plane(struct drm_i915_private *dev_priv, |
541 | enum plane plane); |
553 | enum plane plane); |
Line 542... | Line 554... | ||
542 | 554 | ||
543 | /* intel_panel.c */ |
555 | /* intel_panel.c */ |
544 | extern int intel_panel_init(struct intel_panel *panel, |
556 | extern int intel_panel_init(struct intel_panel *panel, |
545 | struct drm_display_mode *fixed_mode); |
557 | struct drm_display_mode *fixed_mode); |
Line 546... | Line 558... | ||
546 | extern void intel_panel_fini(struct intel_panel *panel); |
558 | extern void intel_panel_fini(struct intel_panel *panel); |
547 | 559 | ||
548 | extern void intel_fixed_panel_mode(struct drm_display_mode *fixed_mode, |
560 | extern void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode, |
- | 561 | struct drm_display_mode *adjusted_mode); |
|
549 | struct drm_display_mode *adjusted_mode); |
562 | extern void intel_pch_panel_fitting(struct intel_crtc *crtc, |
- | 563 | struct intel_crtc_config *pipe_config, |
|
550 | extern void intel_pch_panel_fitting(struct drm_device *dev, |
564 | int fitting_mode); |
551 | int fitting_mode, |
565 | extern void intel_gmch_panel_fitting(struct intel_crtc *crtc, |
552 | const struct drm_display_mode *mode, |
566 | struct intel_crtc_config *pipe_config, |
553 | struct drm_display_mode *adjusted_mode); |
567 | int fitting_mode); |
554 | extern u32 intel_panel_get_max_backlight(struct drm_device *dev); |
568 | extern void intel_panel_set_backlight(struct drm_device *dev, |
555 | extern void intel_panel_set_backlight(struct drm_device *dev, u32 level); |
569 | u32 level, u32 max); |
556 | extern int intel_panel_setup_backlight(struct drm_connector *connector); |
570 | extern int intel_panel_setup_backlight(struct drm_connector *connector); |
557 | extern void intel_panel_enable_backlight(struct drm_device *dev, |
571 | extern void intel_panel_enable_backlight(struct drm_device *dev, |
558 | enum pipe pipe); |
572 | enum pipe pipe); |
Line 566... | Line 580... | ||
566 | 580 | ||
567 | bool fb_changed; |
581 | bool fb_changed; |
568 | bool mode_changed; |
582 | bool mode_changed; |
Line 569... | Line -... | ||
569 | }; |
- | |
570 | - | ||
571 | extern int intel_set_mode(struct drm_crtc *crtc, struct drm_display_mode *mode, |
- | |
572 | int x, int y, struct drm_framebuffer *old_fb); |
583 | }; |
573 | extern void intel_modeset_disable(struct drm_device *dev); |
584 | |
574 | extern void intel_crtc_restore_mode(struct drm_crtc *crtc); |
585 | extern void intel_crtc_restore_mode(struct drm_crtc *crtc); |
575 | extern void intel_crtc_load_lut(struct drm_crtc *crtc); |
586 | extern void intel_crtc_load_lut(struct drm_crtc *crtc); |
576 | extern void intel_crtc_update_dpms(struct drm_crtc *crtc); |
- | |
577 | extern void intel_encoder_destroy(struct drm_encoder *encoder); |
- | |
578 | extern void intel_encoder_dpms(struct intel_encoder *encoder, int mode); |
587 | extern void intel_crtc_update_dpms(struct drm_crtc *crtc); |
579 | extern bool intel_encoder_check_is_cloned(struct intel_encoder *encoder); |
588 | extern void intel_encoder_destroy(struct drm_encoder *encoder); |
580 | extern void intel_connector_dpms(struct drm_connector *, int mode); |
589 | extern void intel_connector_dpms(struct drm_connector *, int mode); |
581 | extern bool intel_connector_get_hw_state(struct intel_connector *connector); |
590 | extern bool intel_connector_get_hw_state(struct intel_connector *connector); |
- | 591 | extern void intel_modeset_check_state(struct drm_device *dev); |
|
Line 582... | Line 592... | ||
582 | extern void intel_modeset_check_state(struct drm_device *dev); |
592 | extern void intel_plane_restore(struct drm_plane *plane); |
583 | extern void intel_plane_restore(struct drm_plane *plane); |
593 | extern void intel_plane_disable(struct drm_plane *plane); |
584 | 594 | ||
585 | 595 | ||
Line 586... | Line -... | ||
586 | static inline struct intel_encoder *intel_attached_encoder(struct drm_connector *connector) |
- | |
587 | { |
- | |
588 | return to_intel_connector(connector)->encoder; |
- | |
589 | } |
- | |
590 | - | ||
591 | static inline struct intel_dp *enc_to_intel_dp(struct drm_encoder *encoder) |
- | |
592 | { |
- | |
593 | struct intel_digital_port *intel_dig_port = |
596 | static inline struct intel_encoder *intel_attached_encoder(struct drm_connector *connector) |
594 | container_of(encoder, struct intel_digital_port, base.base); |
597 | { |
595 | return &intel_dig_port->dp; |
598 | return to_intel_connector(connector)->encoder; |
596 | } |
599 | } |
597 | 600 | ||
Line -... | Line 601... | ||
- | 601 | static inline struct intel_digital_port * |
|
- | 602 | enc_to_dig_port(struct drm_encoder *encoder) |
|
- | 603 | { |
|
- | 604 | return container_of(encoder, struct intel_digital_port, base.base); |
|
- | 605 | } |
|
598 | static inline struct intel_digital_port * |
606 | |
599 | enc_to_dig_port(struct drm_encoder *encoder) |
607 | static inline struct intel_dp *enc_to_intel_dp(struct drm_encoder *encoder) |
600 | { |
608 | { |
601 | return container_of(encoder, struct intel_digital_port, base.base); |
609 | return &enc_to_dig_port(encoder)->dp; |
602 | } |
610 | } |
Line 628... | Line 636... | ||
628 | intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, |
636 | intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, |
629 | enum pipe pipe); |
637 | enum pipe pipe); |
630 | extern void intel_wait_for_vblank(struct drm_device *dev, int pipe); |
638 | extern void intel_wait_for_vblank(struct drm_device *dev, int pipe); |
631 | extern void intel_wait_for_pipe_off(struct drm_device *dev, int pipe); |
639 | extern void intel_wait_for_pipe_off(struct drm_device *dev, int pipe); |
632 | extern int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp); |
640 | extern int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp); |
- | 641 | extern void vlv_wait_port_ready(struct drm_i915_private *dev_priv, int port); |
|
Line 633... | Line 642... | ||
633 | 642 | ||
634 | struct intel_load_detect_pipe { |
643 | struct intel_load_detect_pipe { |
635 | struct drm_framebuffer *release_fb; |
644 | struct drm_framebuffer *release_fb; |
636 | bool load_detect_temp; |
645 | bool load_detect_temp; |
Line 640... | Line 649... | ||
640 | struct drm_display_mode *mode, |
649 | struct drm_display_mode *mode, |
641 | struct intel_load_detect_pipe *old); |
650 | struct intel_load_detect_pipe *old); |
642 | extern void intel_release_load_detect_pipe(struct drm_connector *connector, |
651 | extern void intel_release_load_detect_pipe(struct drm_connector *connector, |
643 | struct intel_load_detect_pipe *old); |
652 | struct intel_load_detect_pipe *old); |
Line 644... | Line -... | ||
644 | - | ||
645 | extern void intelfb_restore(void); |
653 | |
646 | extern void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, |
654 | extern void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, |
647 | u16 blue, int regno); |
655 | u16 blue, int regno); |
648 | extern void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, |
656 | extern void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, |
649 | u16 *blue, int regno); |
- | |
Line 650... | Line 657... | ||
650 | extern void intel_enable_clock_gating(struct drm_device *dev); |
657 | u16 *blue, int regno); |
651 | 658 | ||
652 | extern int intel_pin_and_fence_fb_obj(struct drm_device *dev, |
659 | extern int intel_pin_and_fence_fb_obj(struct drm_device *dev, |
653 | struct drm_i915_gem_object *obj, |
660 | struct drm_i915_gem_object *obj, |
Line 654... | Line 661... | ||
654 | struct intel_ring_buffer *pipelined); |
661 | struct intel_ring_buffer *pipelined); |
655 | extern void intel_unpin_fb_obj(struct drm_i915_gem_object *obj); |
662 | extern void intel_unpin_fb_obj(struct drm_i915_gem_object *obj); |
656 | 663 | ||
657 | extern int intel_framebuffer_init(struct drm_device *dev, |
664 | extern int intel_framebuffer_init(struct drm_device *dev, |
- | 665 | struct intel_framebuffer *ifb, |
|
658 | struct intel_framebuffer *ifb, |
666 | struct drm_mode_fb_cmd2 *mode_cmd, |
659 | struct drm_mode_fb_cmd2 *mode_cmd, |
667 | struct drm_i915_gem_object *obj); |
660 | struct drm_i915_gem_object *obj); |
668 | extern void intel_framebuffer_fini(struct intel_framebuffer *fb); |
661 | extern int intel_fbdev_init(struct drm_device *dev); |
669 | extern int intel_fbdev_init(struct drm_device *dev); |
662 | extern void intel_fbdev_initial_config(struct drm_device *dev); |
670 | extern void intel_fbdev_initial_config(struct drm_device *dev); |
Line 675... | Line 683... | ||
675 | struct drm_file *file_priv); |
683 | struct drm_file *file_priv); |
Line 676... | Line 684... | ||
676 | 684 | ||
677 | extern void intel_fb_output_poll_changed(struct drm_device *dev); |
685 | extern void intel_fb_output_poll_changed(struct drm_device *dev); |
Line -... | Line 686... | ||
- | 686 | extern void intel_fb_restore_mode(struct drm_device *dev); |
|
- | 687 | ||
- | 688 | struct intel_shared_dpll * |
|
- | 689 | intel_crtc_to_shared_dpll(struct intel_crtc *crtc); |
|
- | 690 | ||
- | 691 | void assert_shared_dpll(struct drm_i915_private *dev_priv, |
|
- | 692 | struct intel_shared_dpll *pll, |
|
- | 693 | bool state); |
|
- | 694 | #define assert_shared_dpll_enabled(d, p) assert_shared_dpll(d, p, true) |
|
- | 695 | #define assert_shared_dpll_disabled(d, p) assert_shared_dpll(d, p, false) |
|
- | 696 | void assert_pll(struct drm_i915_private *dev_priv, |
|
- | 697 | enum pipe pipe, bool state); |
|
- | 698 | #define assert_pll_enabled(d, p) assert_pll(d, p, true) |
|
- | 699 | #define assert_pll_disabled(d, p) assert_pll(d, p, false) |
|
- | 700 | void assert_fdi_rx_pll(struct drm_i915_private *dev_priv, |
|
- | 701 | enum pipe pipe, bool state); |
|
678 | extern void intel_fb_restore_mode(struct drm_device *dev); |
702 | #define assert_fdi_rx_pll_enabled(d, p) assert_fdi_rx_pll(d, p, true) |
679 | 703 | #define assert_fdi_rx_pll_disabled(d, p) assert_fdi_rx_pll(d, p, false) |
|
680 | extern void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, |
704 | extern void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, |
681 | bool state); |
705 | bool state); |
Line 682... | Line 706... | ||
682 | #define assert_pipe_enabled(d, p) assert_pipe(d, p, true) |
706 | #define assert_pipe_enabled(d, p) assert_pipe(d, p, true) |
- | 707 | #define assert_pipe_disabled(d, p) assert_pipe(d, p, false) |
|
683 | #define assert_pipe_disabled(d, p) assert_pipe(d, p, false) |
708 | |
684 | 709 | extern void intel_init_clock_gating(struct drm_device *dev); |
|
685 | extern void intel_init_clock_gating(struct drm_device *dev); |
- | |
686 | extern void intel_write_eld(struct drm_encoder *encoder, |
- | |
687 | struct drm_display_mode *mode); |
- | |
688 | extern void intel_cpt_verify_modeset(struct drm_device *dev, int pipe); |
- | |
689 | extern void intel_cpu_transcoder_set_m_n(struct intel_crtc *crtc, |
- | |
690 | struct intel_link_m_n *m_n); |
710 | extern void intel_suspend_hw(struct drm_device *dev); |
691 | extern void intel_pch_transcoder_set_m_n(struct intel_crtc *crtc, |
711 | extern void intel_write_eld(struct drm_encoder *encoder, |
692 | struct intel_link_m_n *m_n); |
712 | struct drm_display_mode *mode); |
Line 693... | Line 713... | ||
693 | extern void intel_prepare_ddi(struct drm_device *dev); |
713 | extern void intel_prepare_ddi(struct drm_device *dev); |
694 | extern void hsw_fdi_link_train(struct drm_crtc *crtc); |
714 | extern void hsw_fdi_link_train(struct drm_crtc *crtc); |
695 | extern void intel_ddi_init(struct drm_device *dev, enum port port); |
715 | extern void intel_ddi_init(struct drm_device *dev, enum port port); |
696 | 716 | ||
697 | /* For use by IVB LP watermark workaround in intel_sprite.c */ |
717 | /* For use by IVB LP watermark workaround in intel_sprite.c */ |
698 | extern void intel_update_watermarks(struct drm_device *dev); |
- | |
699 | extern void intel_update_sprite_watermarks(struct drm_device *dev, int pipe, |
718 | extern void intel_update_watermarks(struct drm_device *dev); |
Line 700... | Line 719... | ||
700 | uint32_t sprite_width, |
719 | extern void intel_update_sprite_watermarks(struct drm_plane *plane, |
701 | int pixel_size); |
720 | struct drm_crtc *crtc, |
702 | extern void intel_update_linetime_watermarks(struct drm_device *dev, int pipe, |
721 | uint32_t sprite_width, int pixel_size, |
703 | struct drm_display_mode *mode); |
722 | bool enabled, bool scaled); |
Line 710... | Line 729... | ||
710 | extern int intel_sprite_set_colorkey(struct drm_device *dev, void *data, |
729 | extern int intel_sprite_set_colorkey(struct drm_device *dev, void *data, |
711 | struct drm_file *file_priv); |
730 | struct drm_file *file_priv); |
712 | extern int intel_sprite_get_colorkey(struct drm_device *dev, void *data, |
731 | extern int intel_sprite_get_colorkey(struct drm_device *dev, void *data, |
713 | struct drm_file *file_priv); |
732 | struct drm_file *file_priv); |
Line 714... | Line -... | ||
714 | - | ||
715 | extern u32 intel_dpio_read(struct drm_i915_private *dev_priv, int reg); |
- | |
716 | 733 | ||
717 | /* Power-related functions, located in intel_pm.c */ |
734 | /* Power-related functions, located in intel_pm.c */ |
718 | extern void intel_init_pm(struct drm_device *dev); |
735 | extern void intel_init_pm(struct drm_device *dev); |
719 | /* FBC */ |
736 | /* FBC */ |
720 | extern bool intel_fbc_enabled(struct drm_device *dev); |
- | |
721 | extern void intel_enable_fbc(struct drm_crtc *crtc, unsigned long interval); |
737 | extern bool intel_fbc_enabled(struct drm_device *dev); |
722 | extern void intel_update_fbc(struct drm_device *dev); |
738 | extern void intel_update_fbc(struct drm_device *dev); |
723 | /* IPS */ |
739 | /* IPS */ |
724 | extern void intel_gpu_ips_init(struct drm_i915_private *dev_priv); |
740 | extern void intel_gpu_ips_init(struct drm_i915_private *dev_priv); |
Line -... | Line 741... | ||
- | 741 | extern void intel_gpu_ips_teardown(void); |
|
725 | extern void intel_gpu_ips_teardown(void); |
742 | |
- | 743 | /* Power well */ |
|
- | 744 | extern int i915_init_power_well(struct drm_device *dev); |
|
- | 745 | extern void i915_remove_power_well(struct drm_device *dev); |
|
- | 746 | ||
726 | 747 | extern bool intel_display_power_enabled(struct drm_device *dev, |
|
727 | extern bool intel_using_power_well(struct drm_device *dev); |
748 | enum intel_display_power_domain domain); |
728 | extern void intel_init_power_well(struct drm_device *dev); |
749 | extern void intel_init_power_well(struct drm_device *dev); |
729 | extern void intel_set_power_well(struct drm_device *dev, bool enable); |
750 | extern void intel_set_power_well(struct drm_device *dev, bool enable); |
730 | extern void intel_enable_gt_powersave(struct drm_device *dev); |
- | |
731 | extern void intel_disable_gt_powersave(struct drm_device *dev); |
751 | extern void intel_enable_gt_powersave(struct drm_device *dev); |
- | 752 | extern void intel_disable_gt_powersave(struct drm_device *dev); |
|
Line 732... | Line 753... | ||
732 | extern void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv); |
753 | extern void ironlake_teardown_rc6(struct drm_device *dev); |
733 | extern void ironlake_teardown_rc6(struct drm_device *dev); |
754 | void gen6_update_ring_freq(struct drm_device *dev); |
734 | 755 | ||
735 | extern bool intel_ddi_get_hw_state(struct intel_encoder *encoder, |
756 | extern bool intel_ddi_get_hw_state(struct intel_encoder *encoder, |
Line 740... | Line 761... | ||
740 | extern void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv, |
761 | extern void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv, |
741 | enum transcoder cpu_transcoder); |
762 | enum transcoder cpu_transcoder); |
742 | extern void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc); |
763 | extern void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc); |
743 | extern void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc); |
764 | extern void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc); |
744 | extern void intel_ddi_setup_hw_pll_state(struct drm_device *dev); |
765 | extern void intel_ddi_setup_hw_pll_state(struct drm_device *dev); |
745 | extern bool intel_ddi_pll_mode_set(struct drm_crtc *crtc, int clock); |
766 | extern bool intel_ddi_pll_mode_set(struct drm_crtc *crtc); |
746 | extern void intel_ddi_put_crtc_pll(struct drm_crtc *crtc); |
767 | extern void intel_ddi_put_crtc_pll(struct drm_crtc *crtc); |
747 | extern void intel_ddi_set_pipe_settings(struct drm_crtc *crtc); |
768 | extern void intel_ddi_set_pipe_settings(struct drm_crtc *crtc); |
748 | extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder); |
769 | extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder); |
749 | extern bool |
770 | extern bool |
750 | intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); |
771 | intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); |
751 | extern void intel_ddi_fdi_disable(struct drm_crtc *crtc); |
772 | extern void intel_ddi_fdi_disable(struct drm_crtc *crtc); |
Line 752... | Line 773... | ||
752 | 773 | ||
- | 774 | extern void intel_display_handle_reset(struct drm_device *dev); |
|
- | 775 | extern bool intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev, |
|
- | 776 | enum pipe pipe, |
|
- | 777 | bool enable); |
|
- | 778 | extern bool intel_set_pch_fifo_underrun_reporting(struct drm_device *dev, |
|
- | 779 | enum transcoder pch_transcoder, |
|
- | 780 | bool enable); |
|
- | 781 | ||
- | 782 | extern void intel_edp_psr_enable(struct intel_dp *intel_dp); |
|
- | 783 | extern void intel_edp_psr_disable(struct intel_dp *intel_dp); |
|
- | 784 | extern void intel_edp_psr_update(struct drm_device *dev); |
|
- | 785 | extern void hsw_disable_lcpll(struct drm_i915_private *dev_priv, |
|
- | 786 | bool switch_to_fclk, bool allow_power_down); |
|
- | 787 | extern void hsw_restore_lcpll(struct drm_i915_private *dev_priv); |
|
- | 788 | extern void ilk_enable_gt_irq(struct drm_i915_private *dev_priv, uint32_t mask); |
|
- | 789 | extern void ilk_disable_gt_irq(struct drm_i915_private *dev_priv, |
|
- | 790 | uint32_t mask); |
|
- | 791 | extern void snb_enable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask); |
|
- | 792 | extern void snb_disable_pm_irq(struct drm_i915_private *dev_priv, |
|
- | 793 | uint32_t mask); |
|
- | 794 | extern void hsw_enable_pc8_work(struct work_struct *__work); |
|
- | 795 | extern void hsw_enable_package_c8(struct drm_i915_private *dev_priv); |
|
- | 796 | extern void hsw_disable_package_c8(struct drm_i915_private *dev_priv); |
|
- | 797 | extern void hsw_pc8_disable_interrupts(struct drm_device *dev); |
|
- | 798 | extern void hsw_pc8_restore_interrupts(struct drm_device *dev); |
|
- | 799 | extern void intel_aux_display_runtime_get(struct drm_i915_private *dev_priv); |
|
Line 753... | Line 800... | ||
753 | extern void intel_display_handle_reset(struct drm_device *dev); |
800 | extern void intel_aux_display_runtime_put(struct drm_i915_private *dev_priv); |