Rev 5354 | Rev 6283 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5354 | Rev 6084 | ||
---|---|---|---|
Line 33... | Line 33... | ||
33 | #include |
33 | #include |
34 | #include |
34 | #include |
35 | #include |
35 | #include |
36 | #include |
36 | #include |
37 | #include |
37 | #include |
38 | - | ||
39 | #define DIV_ROUND_CLOSEST_ULL(ll, d) \ |
38 | #include |
40 | ({ unsigned long long _tmp = (ll)+(d)/2; do_div(_tmp, d); _tmp; }) |
- | |
Line 41... | Line 39... | ||
41 | 39 | ||
42 | /** |
40 | /** |
43 | * _wait_for - magic (register) wait macro |
41 | * _wait_for - magic (register) wait macro |
44 | * |
42 | * |
Line 130... | Line 128... | ||
130 | int preferred_bpp; |
128 | int preferred_bpp; |
131 | }; |
129 | }; |
Line 132... | Line 130... | ||
132 | 130 | ||
133 | struct intel_encoder { |
131 | struct intel_encoder { |
134 | struct drm_encoder base; |
- | |
135 | /* |
- | |
136 | * The new crtc this encoder will be driven from. Only differs from |
- | |
137 | * base->crtc while a modeset is in progress. |
- | |
138 | */ |
- | |
Line 139... | Line 132... | ||
139 | struct intel_crtc *new_crtc; |
132 | struct drm_encoder base; |
140 | 133 | ||
141 | enum intel_output_type type; |
- | |
142 | unsigned int cloneable; |
134 | enum intel_output_type type; |
143 | bool connectors_active; |
135 | unsigned int cloneable; |
144 | void (*hot_plug)(struct intel_encoder *); |
136 | void (*hot_plug)(struct intel_encoder *); |
145 | bool (*compute_config)(struct intel_encoder *, |
137 | bool (*compute_config)(struct intel_encoder *, |
146 | struct intel_crtc_config *); |
138 | struct intel_crtc_state *); |
147 | void (*pre_pll_enable)(struct intel_encoder *); |
139 | void (*pre_pll_enable)(struct intel_encoder *); |
148 | void (*pre_enable)(struct intel_encoder *); |
140 | void (*pre_enable)(struct intel_encoder *); |
149 | void (*enable)(struct intel_encoder *); |
141 | void (*enable)(struct intel_encoder *); |
150 | void (*mode_set)(struct intel_encoder *intel_encoder); |
142 | void (*mode_set)(struct intel_encoder *intel_encoder); |
- | 143 | void (*disable)(struct intel_encoder *); |
|
151 | void (*disable)(struct intel_encoder *); |
144 | void (*post_disable)(struct intel_encoder *); |
152 | void (*post_disable)(struct intel_encoder *); |
145 | void (*post_pll_disable)(struct intel_encoder *); |
153 | /* Read out the current hw state of this connector, returning true if |
146 | /* Read out the current hw state of this connector, returning true if |
154 | * the encoder is active. If the encoder is enabled it also set the pipe |
147 | * the encoder is active. If the encoder is enabled it also set the pipe |
155 | * it is connected to in the pipe parameter. */ |
148 | * it is connected to in the pipe parameter. */ |
156 | bool (*get_hw_state)(struct intel_encoder *, enum pipe *pipe); |
149 | bool (*get_hw_state)(struct intel_encoder *, enum pipe *pipe); |
157 | /* Reconstructs the equivalent mode flags for the current hardware |
150 | /* Reconstructs the equivalent mode flags for the current hardware |
158 | * state. This must be called _after_ display->get_pipe_config has |
151 | * state. This must be called _after_ display->get_pipe_config has |
159 | * pre-filled the pipe config. Note that intel_encoder->base.crtc must |
152 | * pre-filled the pipe config. Note that intel_encoder->base.crtc must |
160 | * be set correctly before calling this function. */ |
153 | * be set correctly before calling this function. */ |
161 | void (*get_config)(struct intel_encoder *, |
154 | void (*get_config)(struct intel_encoder *, |
162 | struct intel_crtc_config *pipe_config); |
155 | struct intel_crtc_state *pipe_config); |
163 | /* |
156 | /* |
164 | * Called during system suspend after all pending requests for the |
157 | * Called during system suspend after all pending requests for the |
165 | * encoder are flushed (for example for DP AUX transactions) and |
158 | * encoder are flushed (for example for DP AUX transactions) and |
Line 182... | Line 175... | ||
182 | u32 min; |
175 | u32 min; |
183 | u32 max; |
176 | u32 max; |
184 | bool enabled; |
177 | bool enabled; |
185 | bool combination_mode; /* gen 2/4 only */ |
178 | bool combination_mode; /* gen 2/4 only */ |
186 | bool active_low_pwm; |
179 | bool active_low_pwm; |
- | 180 | ||
- | 181 | /* PWM chip */ |
|
- | 182 | bool util_pin_active_low; /* bxt+ */ |
|
- | 183 | u8 controller; /* bxt+ only */ |
|
- | 184 | struct pwm_device *pwm; |
|
- | 185 | ||
187 | struct backlight_device *device; |
186 | struct backlight_device *device; |
188 | } backlight; |
- | |
Line -... | Line 187... | ||
- | 187 | ||
- | 188 | /* Connector and platform specific backlight functions */ |
|
- | 189 | int (*setup)(struct intel_connector *connector, enum pipe pipe); |
|
- | 190 | uint32_t (*get)(struct intel_connector *connector); |
|
- | 191 | void (*set)(struct intel_connector *connector, uint32_t level); |
|
- | 192 | void (*disable)(struct intel_connector *connector); |
|
- | 193 | void (*enable)(struct intel_connector *connector); |
|
- | 194 | uint32_t (*hz_to_pwm)(struct intel_connector *connector, |
|
189 | 195 | uint32_t hz); |
|
- | 196 | void (*power)(struct intel_connector *, bool enable); |
|
190 | void (*backlight_power)(struct intel_connector *, bool enable); |
197 | } backlight; |
Line 191... | Line 198... | ||
191 | }; |
198 | }; |
192 | 199 | ||
193 | struct intel_connector { |
200 | struct intel_connector { |
194 | struct drm_connector base; |
201 | struct drm_connector base; |
195 | /* |
202 | /* |
196 | * The fixed encoder this connector is connected to. |
203 | * The fixed encoder this connector is connected to. |
Line 197... | Line -... | ||
197 | */ |
- | |
198 | struct intel_encoder *encoder; |
- | |
199 | - | ||
200 | /* |
- | |
201 | * The new encoder this connector will be driven. Only differs from |
- | |
202 | * encoder while a modeset is in progress. |
- | |
203 | */ |
204 | */ |
204 | struct intel_encoder *new_encoder; |
205 | struct intel_encoder *encoder; |
205 | 206 | ||
Line 206... | Line 207... | ||
206 | /* Reads out the current hw, returning true if the connector is enabled |
207 | /* Reads out the current hw, returning true if the connector is enabled |
Line 241... | Line 242... | ||
241 | int vco; |
242 | int vco; |
242 | int m; |
243 | int m; |
243 | int p; |
244 | int p; |
244 | } intel_clock_t; |
245 | } intel_clock_t; |
Line -... | Line 246... | ||
- | 246 | ||
- | 247 | struct intel_atomic_state { |
|
- | 248 | struct drm_atomic_state base; |
|
- | 249 | ||
- | 250 | unsigned int cdclk; |
|
- | 251 | bool dpll_set; |
|
- | 252 | struct intel_shared_dpll_config shared_dpll[I915_NUM_PLLS]; |
|
- | 253 | }; |
|
245 | 254 | ||
246 | struct intel_plane_state { |
- | |
247 | struct drm_crtc *crtc; |
255 | struct intel_plane_state { |
248 | struct drm_framebuffer *fb; |
256 | struct drm_plane_state base; |
249 | struct drm_rect src; |
257 | struct drm_rect src; |
250 | struct drm_rect dst; |
258 | struct drm_rect dst; |
251 | struct drm_rect clip; |
- | |
252 | struct drm_rect orig_src; |
- | |
253 | struct drm_rect orig_dst; |
259 | struct drm_rect clip; |
- | 260 | bool visible; |
|
- | 261 | ||
- | 262 | /* |
|
- | 263 | * scaler_id |
|
- | 264 | * = -1 : not using a scaler |
|
- | 265 | * >= 0 : using a scalers |
|
- | 266 | * |
|
- | 267 | * plane requiring a scaler: |
|
- | 268 | * - During check_plane, its bit is set in |
|
- | 269 | * crtc_state->scaler_state.scaler_users by calling helper function |
|
- | 270 | * update_scaler_plane. |
|
- | 271 | * - scaler_id indicates the scaler it got assigned. |
|
- | 272 | * |
|
- | 273 | * plane doesn't require a scaler: |
|
- | 274 | * - this can happen when scaling is no more required or plane simply |
|
- | 275 | * got disabled. |
|
- | 276 | * - During check_plane, corresponding bit is reset in |
|
- | 277 | * crtc_state->scaler_state.scaler_users by calling helper function |
|
- | 278 | * update_scaler_plane. |
|
- | 279 | */ |
|
- | 280 | int scaler_id; |
|
- | 281 | ||
254 | bool visible; |
282 | struct drm_intel_sprite_colorkey ckey; |
Line 255... | Line 283... | ||
255 | }; |
283 | }; |
- | 284 | ||
256 | 285 | struct intel_initial_plane_config { |
|
257 | struct intel_plane_config { |
286 | struct intel_framebuffer *fb; |
258 | bool tiled; |
287 | unsigned int tiling; |
259 | int size; |
288 | int size; |
Line -... | Line 289... | ||
- | 289 | u32 base; |
|
- | 290 | }; |
|
- | 291 | ||
- | 292 | #define SKL_MIN_SRC_W 8 |
|
- | 293 | #define SKL_MAX_SRC_W 4096 |
|
- | 294 | #define SKL_MIN_SRC_H 8 |
|
- | 295 | #define SKL_MAX_SRC_H 4096 |
|
- | 296 | #define SKL_MIN_DST_W 8 |
|
- | 297 | #define SKL_MAX_DST_W 4096 |
|
- | 298 | #define SKL_MIN_DST_H 8 |
|
- | 299 | #define SKL_MAX_DST_H 4096 |
|
- | 300 | ||
- | 301 | struct intel_scaler { |
|
- | 302 | int in_use; |
|
- | 303 | uint32_t mode; |
|
- | 304 | }; |
|
- | 305 | ||
- | 306 | struct intel_crtc_scaler_state { |
|
- | 307 | #define SKL_NUM_SCALERS 2 |
|
- | 308 | struct intel_scaler scalers[SKL_NUM_SCALERS]; |
|
- | 309 | ||
- | 310 | /* |
|
- | 311 | * scaler_users: keeps track of users requesting scalers on this crtc. |
|
- | 312 | * |
|
- | 313 | * If a bit is set, a user is using a scaler. |
|
- | 314 | * Here user can be a plane or crtc as defined below: |
|
- | 315 | * bits 0-30 - plane (bit position is index from drm_plane_index) |
|
- | 316 | * bit 31 - crtc |
|
- | 317 | * |
|
- | 318 | * Instead of creating a new index to cover planes and crtc, using |
|
- | 319 | * existing drm_plane_index for planes which is well less than 31 |
|
- | 320 | * planes and bit 31 for crtc. This should be fine to cover all |
|
- | 321 | * our platforms. |
|
- | 322 | * |
|
- | 323 | * intel_atomic_setup_scalers will setup available scalers to users |
|
- | 324 | * requesting scalers. It will gracefully fail if request exceeds |
|
- | 325 | * avilability. |
|
- | 326 | */ |
|
- | 327 | #define SKL_CRTC_INDEX 31 |
|
- | 328 | unsigned scaler_users; |
|
- | 329 | ||
- | 330 | /* scaler used by crtc for panel fitting purpose */ |
|
- | 331 | int scaler_id; |
|
- | 332 | }; |
|
- | 333 | ||
260 | u32 base; |
334 | /* drm_mode->private_flags */ |
- | 335 | #define I915_MODE_FLAG_INHERITED 1 |
|
- | 336 | ||
261 | }; |
337 | struct intel_crtc_state { |
262 | 338 | struct drm_crtc_state base; |
|
263 | struct intel_crtc_config { |
339 | |
264 | /** |
340 | /** |
265 | * quirks - bitfield with hw state readout quirks |
341 | * quirks - bitfield with hw state readout quirks |
266 | * |
342 | * |
267 | * For various reasons the hw state readout code might not be able to |
343 | * For various reasons the hw state readout code might not be able to |
268 | * completely faithfully read out the current state. These cases are |
344 | * completely faithfully read out the current state. These cases are |
269 | * tracked with quirk flags so that fastboot and state checker can act |
345 | * tracked with quirk flags so that fastboot and state checker can act |
270 | * accordingly. |
- | |
271 | */ |
346 | * accordingly. |
Line 272... | Line -... | ||
272 | #define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS (1<<0) /* unreliable sync mode.flags */ |
- | |
273 | #define PIPE_CONFIG_QUIRK_INHERITED_MODE (1<<1) /* mode inherited from firmware */ |
- | |
274 | unsigned long quirks; |
- | |
275 | - | ||
276 | /* User requested mode, only valid as a starting point to |
- | |
277 | * compute adjusted_mode, except in the case of (S)DVO where |
- | |
278 | * it's also for the output timings of the (S)DVO chip. |
- | |
279 | * adjusted_mode will then correspond to the S(DVO) chip's |
- | |
280 | * preferred input timings. */ |
347 | */ |
Line 281... | Line 348... | ||
281 | struct drm_display_mode requested_mode; |
348 | #define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS (1<<0) /* unreliable sync mode.flags */ |
282 | /* Actual pipe timings ie. what we program into the pipe timing |
349 | unsigned long quirks; |
283 | * registers. adjusted_mode.crtc_clock is the pipe pixel clock. */ |
350 | |
284 | struct drm_display_mode adjusted_mode; |
351 | bool update_pipe; |
Line 367... | Line 434... | ||
367 | int port_clock; |
434 | int port_clock; |
Line 368... | Line 435... | ||
368 | 435 | ||
369 | /* Used by SDVO (and if we ever fix it, HDMI). */ |
436 | /* Used by SDVO (and if we ever fix it, HDMI). */ |
Line -... | Line 437... | ||
- | 437 | unsigned pixel_multiplier; |
|
- | 438 | ||
370 | unsigned pixel_multiplier; |
439 | uint8_t lane_count; |
371 | 440 | ||
372 | /* Panel fitter controls for gen2-gen4 + VLV */ |
441 | /* Panel fitter controls for gen2-gen4 + VLV */ |
373 | struct { |
442 | struct { |
374 | u32 control; |
443 | u32 control; |
Line 392... | Line 461... | ||
392 | 461 | ||
Line 393... | Line 462... | ||
393 | bool double_wide; |
462 | bool double_wide; |
394 | 463 | ||
- | 464 | bool dp_encoder_is_mst; |
|
- | 465 | int pbn; |
|
- | 466 | ||
- | 467 | struct intel_crtc_scaler_state scaler_state; |
|
- | 468 | ||
- | 469 | /* w/a for waiting 2 vblanks during crtc enable */ |
|
- | 470 | enum pipe hsw_workaround_pipe; |
|
- | 471 | }; |
|
- | 472 | ||
- | 473 | struct vlv_wm_state { |
|
- | 474 | struct vlv_pipe_wm wm[3]; |
|
- | 475 | struct vlv_sr_wm sr[3]; |
|
- | 476 | uint8_t num_active_planes; |
|
- | 477 | uint8_t num_levels; |
|
395 | bool dp_encoder_is_mst; |
478 | uint8_t level; |
Line 396... | Line 479... | ||
396 | int pbn; |
479 | bool cxsr; |
397 | }; |
480 | }; |
398 | 481 | ||
Line 404... | Line 487... | ||
404 | bool sprites_enabled; |
487 | bool sprites_enabled; |
405 | bool sprites_scaled; |
488 | bool sprites_scaled; |
406 | }; |
489 | }; |
Line 407... | Line 490... | ||
407 | 490 | ||
408 | struct intel_mmio_flip { |
- | |
409 | u32 seqno; |
- | |
410 | struct intel_engine_cs *ring; |
491 | struct intel_mmio_flip { |
- | 492 | struct work_struct work; |
|
- | 493 | struct drm_i915_private *i915; |
|
- | 494 | struct drm_i915_gem_request *req; |
|
411 | struct work_struct work; |
495 | struct intel_crtc *crtc; |
Line 412... | Line 496... | ||
412 | }; |
496 | }; |
413 | 497 | ||
414 | struct skl_pipe_wm { |
498 | struct skl_pipe_wm { |
415 | struct skl_wm_level wm[8]; |
499 | struct skl_wm_level wm[8]; |
416 | struct skl_wm_level trans_wm; |
500 | struct skl_wm_level trans_wm; |
Line -... | Line 501... | ||
- | 501 | uint32_t linetime; |
|
- | 502 | }; |
|
- | 503 | ||
- | 504 | /* |
|
- | 505 | * Tracking of operations that need to be performed at the beginning/end of an |
|
- | 506 | * atomic commit, outside the atomic section where interrupts are disabled. |
|
- | 507 | * These are generally operations that grab mutexes or might otherwise sleep |
|
- | 508 | * and thus can't be run with interrupts disabled. |
|
- | 509 | */ |
|
- | 510 | struct intel_crtc_atomic_commit { |
|
- | 511 | /* Sleepable operations to perform before commit */ |
|
- | 512 | bool wait_for_flips; |
|
- | 513 | bool disable_fbc; |
|
- | 514 | bool disable_ips; |
|
- | 515 | bool disable_cxsr; |
|
- | 516 | bool pre_disable_primary; |
|
- | 517 | bool update_wm_pre, update_wm_post; |
|
- | 518 | unsigned disabled_planes; |
|
- | 519 | ||
- | 520 | /* Sleepable operations to perform after commit */ |
|
- | 521 | unsigned fb_bits; |
|
- | 522 | bool wait_vblank; |
|
- | 523 | bool update_fbc; |
|
- | 524 | bool post_enable_primary; |
|
417 | uint32_t linetime; |
525 | unsigned update_sprite_watermarks; |
418 | }; |
526 | }; |
419 | 527 | ||
420 | struct intel_crtc { |
528 | struct intel_crtc { |
421 | struct drm_crtc base; |
529 | struct drm_crtc base; |
Line 427... | Line 535... | ||
427 | * that crtc->enabled is set, i.e. the current mode configuration has |
535 | * that crtc->enabled is set, i.e. the current mode configuration has |
428 | * some outputs connected to this crtc. |
536 | * some outputs connected to this crtc. |
429 | */ |
537 | */ |
430 | bool active; |
538 | bool active; |
431 | unsigned long enabled_power_domains; |
539 | unsigned long enabled_power_domains; |
432 | bool primary_enabled; /* is the primary plane (partially) visible? */ |
- | |
433 | bool lowfreq_avail; |
540 | bool lowfreq_avail; |
434 | struct intel_overlay *overlay; |
541 | struct intel_overlay *overlay; |
435 | struct intel_unpin_work *unpin_work; |
542 | struct intel_unpin_work *unpin_work; |
Line 436... | Line 543... | ||
436 | 543 | ||
Line 437... | Line 544... | ||
437 | atomic_t unpin_work_count; |
544 | atomic_t unpin_work_count; |
438 | 545 | ||
439 | /* Display surface base address adjustement for pageflips. Note that on |
546 | /* Display surface base address adjustement for pageflips. Note that on |
440 | * gen4+ this only adjusts up to a tile, offsets within a tile are |
547 | * gen4+ this only adjusts up to a tile, offsets within a tile are |
- | 548 | * handled in the hw itself (with the TILEOFF register). */ |
|
- | 549 | unsigned long dspaddr_offset; |
|
Line 441... | Line -... | ||
441 | * handled in the hw itself (with the TILEOFF register). */ |
- | |
442 | unsigned long dspaddr_offset; |
550 | int adjusted_x; |
443 | - | ||
444 | struct drm_i915_gem_object *cursor_bo; |
551 | int adjusted_y; |
445 | uint32_t cursor_addr; |
552 | |
446 | int16_t cursor_width, cursor_height; |
553 | uint32_t cursor_addr; |
Line 447... | Line -... | ||
447 | uint32_t cursor_cntl; |
- | |
448 | uint32_t cursor_size; |
554 | uint32_t cursor_cntl; |
449 | uint32_t cursor_base; |
- | |
450 | - | ||
Line 451... | Line 555... | ||
451 | struct intel_plane_config plane_config; |
555 | uint32_t cursor_size; |
452 | struct intel_crtc_config config; |
556 | uint32_t cursor_base; |
Line 453... | Line 557... | ||
453 | struct intel_crtc_config *new_config; |
557 | |
Line 464... | Line 568... | ||
464 | struct { |
568 | struct { |
465 | /* watermarks currently being used */ |
569 | /* watermarks currently being used */ |
466 | struct intel_pipe_wm active; |
570 | struct intel_pipe_wm active; |
467 | /* SKL wm values currently in use */ |
571 | /* SKL wm values currently in use */ |
468 | struct skl_pipe_wm skl_active; |
572 | struct skl_pipe_wm skl_active; |
- | 573 | /* allow CxSR on this pipe */ |
|
- | 574 | bool cxsr_allowed; |
|
469 | } wm; |
575 | } wm; |
Line 470... | Line 576... | ||
470 | 576 | ||
- | 577 | int scanline_offset; |
|
- | 578 | ||
- | 579 | struct { |
|
- | 580 | unsigned start_vbl_count; |
|
- | 581 | ktime_t start_vbl_time; |
|
- | 582 | int min_vbl, max_vbl; |
|
- | 583 | int scanline_start; |
|
- | 584 | } debug; |
|
471 | int scanline_offset; |
585 | |
- | 586 | struct intel_crtc_atomic_commit atomic; |
|
- | 587 | ||
- | 588 | /* scalers available on this crtc */ |
|
- | 589 | int num_scalers; |
|
- | 590 | ||
472 | struct intel_mmio_flip mmio_flip; |
591 | struct vlv_wm_state wm_state; |
Line 473... | Line 592... | ||
473 | }; |
592 | }; |
474 | 593 | ||
475 | struct intel_plane_wm_parameters { |
594 | struct intel_plane_wm_parameters { |
- | 595 | uint32_t horiz_pixels; |
|
- | 596 | uint32_t vert_pixels; |
|
- | 597 | /* |
|
- | 598 | * For packed pixel formats: |
|
- | 599 | * bytes_per_pixel - holds bytes per pixel |
|
- | 600 | * For planar pixel formats: |
|
- | 601 | * bytes_per_pixel - holds bytes per pixel for uv-plane |
|
476 | uint32_t horiz_pixels; |
602 | * y_bytes_per_pixel - holds bytes per pixel for y-plane |
- | 603 | */ |
|
477 | uint32_t vert_pixels; |
604 | uint8_t bytes_per_pixel; |
478 | uint8_t bytes_per_pixel; |
605 | uint8_t y_bytes_per_pixel; |
- | 606 | bool enabled; |
|
- | 607 | bool scaled; |
|
- | 608 | u64 tiling; |
|
479 | bool enabled; |
609 | unsigned int rotation; |
Line 480... | Line 610... | ||
480 | bool scaled; |
610 | uint16_t fifo_size; |
481 | }; |
611 | }; |
482 | 612 | ||
483 | struct intel_plane { |
613 | struct intel_plane { |
484 | struct drm_plane base; |
- | |
485 | int plane; |
614 | struct drm_plane base; |
486 | enum pipe pipe; |
615 | int plane; |
487 | struct drm_i915_gem_object *obj; |
- | |
488 | bool can_scale; |
- | |
489 | int max_downscale; |
- | |
490 | int crtc_x, crtc_y; |
616 | enum pipe pipe; |
491 | unsigned int crtc_w, crtc_h; |
- | |
Line 492... | Line 617... | ||
492 | uint32_t src_x, src_y; |
617 | bool can_scale; |
493 | uint32_t src_w, src_h; |
618 | int max_downscale; |
494 | unsigned int rotation; |
619 | uint32_t frontbuffer_bit; |
495 | 620 | ||
496 | /* Since we need to change the watermarks before/after |
621 | /* Since we need to change the watermarks before/after |
497 | * enabling/disabling the planes, we need to store the parameters here |
622 | * enabling/disabling the planes, we need to store the parameters here |
Line -... | Line 623... | ||
- | 623 | * as the other pieces of the struct may not reflect the values we want |
|
- | 624 | * for the watermark calculations. Currently only Haswell uses this. |
|
- | 625 | */ |
|
- | 626 | struct intel_plane_wm_parameters wm; |
|
- | 627 | ||
- | 628 | /* |
|
498 | * as the other pieces of the struct may not reflect the values we want |
629 | * NOTE: Do not place new plane state fields here (e.g., when adding |
499 | * for the watermark calculations. Currently only Haswell uses this. |
630 | * new plane properties). New runtime state should now be placed in |
500 | */ |
631 | * the intel_plane_state structure and accessed via drm_plane->state. |
501 | struct intel_plane_wm_parameters wm; |
- | |
502 | 632 | */ |
|
503 | void (*update_plane)(struct drm_plane *plane, |
633 | |
504 | struct drm_crtc *crtc, |
634 | void (*update_plane)(struct drm_plane *plane, |
505 | struct drm_framebuffer *fb, |
635 | struct drm_crtc *crtc, |
506 | struct drm_i915_gem_object *obj, |
636 | struct drm_framebuffer *fb, |
507 | int crtc_x, int crtc_y, |
637 | int crtc_x, int crtc_y, |
508 | unsigned int crtc_w, unsigned int crtc_h, |
638 | unsigned int crtc_w, unsigned int crtc_h, |
- | 639 | uint32_t x, uint32_t y, |
|
509 | uint32_t x, uint32_t y, |
640 | uint32_t src_w, uint32_t src_h); |
510 | uint32_t src_w, uint32_t src_h); |
641 | void (*disable_plane)(struct drm_plane *plane, |
511 | void (*disable_plane)(struct drm_plane *plane, |
642 | struct drm_crtc *crtc); |
512 | struct drm_crtc *crtc); |
643 | int (*check_plane)(struct drm_plane *plane, |
Line 513... | Line 644... | ||
513 | int (*update_colorkey)(struct drm_plane *plane, |
644 | struct intel_crtc_state *crtc_state, |
514 | struct drm_intel_sprite_colorkey *key); |
645 | struct intel_plane_state *state); |
515 | void (*get_colorkey)(struct drm_plane *plane, |
646 | void (*commit_plane)(struct drm_plane *plane, |
Line 533... | Line 664... | ||
533 | unsigned long display_hpll_disable; |
664 | unsigned long display_hpll_disable; |
534 | unsigned long cursor_sr; |
665 | unsigned long cursor_sr; |
535 | unsigned long cursor_hpll_disable; |
666 | unsigned long cursor_hpll_disable; |
536 | }; |
667 | }; |
Line -... | Line 668... | ||
- | 668 | ||
537 | 669 | #define to_intel_atomic_state(x) container_of(x, struct intel_atomic_state, base) |
|
- | 670 | #define to_intel_crtc(x) container_of(x, struct intel_crtc, base) |
|
538 | #define to_intel_crtc(x) container_of(x, struct intel_crtc, base) |
671 | #define to_intel_crtc_state(x) container_of(x, struct intel_crtc_state, base) |
539 | #define to_intel_connector(x) container_of(x, struct intel_connector, base) |
672 | #define to_intel_connector(x) container_of(x, struct intel_connector, base) |
540 | #define to_intel_encoder(x) container_of(x, struct intel_encoder, base) |
673 | #define to_intel_encoder(x) container_of(x, struct intel_encoder, base) |
541 | #define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base) |
674 | #define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base) |
- | 675 | #define to_intel_plane(x) container_of(x, struct intel_plane, base) |
|
542 | #define to_intel_plane(x) container_of(x, struct intel_plane, base) |
676 | #define to_intel_plane_state(x) container_of(x, struct intel_plane_state, base) |
Line 543... | Line 677... | ||
543 | #define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL) |
677 | #define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL) |
544 | 678 | ||
545 | struct intel_hdmi { |
679 | struct intel_hdmi { |
546 | u32 hdmi_reg; |
680 | u32 hdmi_reg; |
547 | int ddc_bus; |
681 | int ddc_bus; |
548 | uint32_t color_range; |
682 | bool limited_color_range; |
549 | bool color_range_auto; |
683 | bool color_range_auto; |
550 | bool has_hdmi_sink; |
684 | bool has_hdmi_sink; |
551 | bool has_audio; |
685 | bool has_audio; |
552 | enum hdmi_force_audio force_audio; |
686 | enum hdmi_force_audio force_audio; |
- | 687 | bool rgb_quant_range_selectable; |
|
553 | bool rgb_quant_range_selectable; |
688 | enum hdmi_picture_aspect aspect_ratio; |
554 | enum hdmi_picture_aspect aspect_ratio; |
689 | struct intel_connector *attached_connector; |
555 | void (*write_infoframe)(struct drm_encoder *encoder, |
690 | void (*write_infoframe)(struct drm_encoder *encoder, |
556 | enum hdmi_infoframe_type type, |
691 | enum hdmi_infoframe_type type, |
557 | const void *frame, ssize_t len); |
692 | const void *frame, ssize_t len); |
558 | void (*set_infoframes)(struct drm_encoder *encoder, |
693 | void (*set_infoframes)(struct drm_encoder *encoder, |
559 | bool enable, |
694 | bool enable, |
560 | struct drm_display_mode *adjusted_mode); |
695 | const struct drm_display_mode *adjusted_mode); |
Line 561... | Line 696... | ||
561 | bool (*infoframe_enabled)(struct drm_encoder *encoder); |
696 | bool (*infoframe_enabled)(struct drm_encoder *encoder); |
562 | }; |
697 | }; |
Line 563... | Line 698... | ||
563 | 698 | ||
- | 699 | struct intel_dp_mst_encoder; |
|
564 | struct intel_dp_mst_encoder; |
700 | #define DP_MAX_DOWNSTREAM_PORTS 0x10 |
- | 701 | ||
565 | #define DP_MAX_DOWNSTREAM_PORTS 0x10 |
702 | /* |
- | 703 | * enum link_m_n_set: |
|
- | 704 | * When platform provides two set of M_N registers for dp, we can |
|
- | 705 | * program them and switch between them incase of DRRS. |
|
- | 706 | * But When only one such register is provided, we have to program the |
|
- | 707 | * required divider value on that registers itself based on the DRRS state. |
|
- | 708 | * |
|
566 | 709 | * M1_N1 : Program dp_m_n on M1_N1 registers |
|
567 | /** |
710 | * dp_m2_n2 on M2_N2 registers (If supported) |
- | 711 | * |
|
568 | * HIGH_RR is the highest eDP panel refresh rate read from EDID |
712 | * M2_N2 : Program dp_m2_n2 on M1_N1 registers |
- | 713 | * M2_N2 registers are not supported |
|
569 | * LOW_RR is the lowest eDP panel refresh rate found from EDID |
714 | */ |
- | 715 | ||
- | 716 | enum link_m_n_set { |
|
- | 717 | /* Sets the m1_n1 and m2_n2 */ |
|
- | 718 | M1_N1 = 0, |
|
570 | * parsing for same resolution. |
719 | M2_N2 |
- | 720 | }; |
|
571 | */ |
721 | |
572 | enum edp_drrs_refresh_rate_type { |
722 | struct sink_crc { |
Line 573... | Line 723... | ||
573 | DRRS_HIGH_RR, |
723 | bool started; |
574 | DRRS_LOW_RR, |
724 | u8 last_crc[6]; |
575 | DRRS_MAX_RR, /* RR count */ |
725 | int last_count; |
576 | }; |
726 | }; |
- | 727 | ||
- | 728 | struct intel_dp { |
|
577 | 729 | uint32_t output_reg; |
|
578 | struct intel_dp { |
730 | uint32_t aux_ch_ctl_reg; |
579 | uint32_t output_reg; |
731 | uint32_t DP; |
580 | uint32_t aux_ch_ctl_reg; |
732 | int link_rate; |
581 | uint32_t DP; |
- | |
582 | bool has_audio; |
- | |
583 | enum hdmi_force_audio force_audio; |
733 | uint8_t lane_count; |
584 | uint32_t color_range; |
734 | bool has_audio; |
585 | bool color_range_auto; |
735 | enum hdmi_force_audio force_audio; |
- | 736 | bool limited_color_range; |
|
- | 737 | bool color_range_auto; |
|
- | 738 | uint8_t dpcd[DP_RECEIVER_CAP_SIZE]; |
|
- | 739 | uint8_t psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE]; |
|
586 | uint8_t link_bw; |
740 | uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS]; |
587 | uint8_t lane_count; |
741 | /* sink rates as reported by DP_SUPPORTED_LINK_RATES */ |
588 | uint8_t dpcd[DP_RECEIVER_CAP_SIZE]; |
742 | uint8_t num_sink_rates; |
589 | uint8_t psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE]; |
743 | int sink_rates[DP_MAX_SUPPORTED_RATES]; |
590 | uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS]; |
744 | struct sink_crc sink_crc; |
Line 606... | Line 760... | ||
606 | * this port. Only relevant on VLV/CHV. |
760 | * this port. Only relevant on VLV/CHV. |
607 | */ |
761 | */ |
608 | enum pipe pps_pipe; |
762 | enum pipe pps_pipe; |
609 | struct edp_power_seq pps_delays; |
763 | struct edp_power_seq pps_delays; |
Line 610... | Line -... | ||
610 | - | ||
611 | bool use_tps3; |
764 | |
612 | bool can_mst; /* this port supports mst */ |
765 | bool can_mst; /* this port supports mst */ |
613 | bool is_mst; |
766 | bool is_mst; |
614 | int active_mst_links; |
767 | int active_mst_links; |
615 | /* connector directly attached - won't be use for modeset in mst world */ |
768 | /* connector directly attached - won't be use for modeset in mst world */ |
Line 626... | Line 779... | ||
626 | */ |
779 | */ |
627 | uint32_t (*get_aux_send_ctl)(struct intel_dp *dp, |
780 | uint32_t (*get_aux_send_ctl)(struct intel_dp *dp, |
628 | bool has_aux_irq, |
781 | bool has_aux_irq, |
629 | int send_bytes, |
782 | int send_bytes, |
630 | uint32_t aux_clock_divider); |
783 | uint32_t aux_clock_divider); |
631 | struct { |
- | |
632 | enum drrs_support_type type; |
- | |
633 | enum edp_drrs_refresh_rate_type refresh_rate_type; |
- | |
634 | struct mutex mutex; |
- | |
635 | } drrs_state; |
784 | bool train_set_valid; |
Line -... | Line 785... | ||
- | 785 | ||
- | 786 | /* Displayport compliance testing */ |
|
- | 787 | unsigned long compliance_test_type; |
|
- | 788 | unsigned long compliance_test_data; |
|
636 | 789 | bool compliance_test_active; |
|
Line 637... | Line 790... | ||
637 | }; |
790 | }; |
638 | 791 | ||
639 | struct intel_digital_port { |
792 | struct intel_digital_port { |
640 | struct intel_encoder base; |
793 | struct intel_encoder base; |
641 | enum port port; |
794 | enum port port; |
642 | u32 saved_port_bits; |
795 | u32 saved_port_bits; |
643 | struct intel_dp dp; |
796 | struct intel_dp dp; |
- | 797 | struct intel_hdmi hdmi; |
|
644 | struct intel_hdmi hdmi; |
798 | enum irqreturn (*hpd_pulse)(struct intel_digital_port *, bool); |
Line 645... | Line 799... | ||
645 | bool (*hpd_pulse)(struct intel_digital_port *, bool); |
799 | bool release_cl2_override; |
646 | }; |
800 | }; |
647 | 801 | ||
648 | struct intel_dp_mst_encoder { |
802 | struct intel_dp_mst_encoder { |
649 | struct intel_encoder base; |
803 | struct intel_encoder base; |
650 | enum pipe pipe; |
804 | enum pipe pipe; |
Line 651... | Line 805... | ||
651 | struct intel_digital_port *primary; |
805 | struct intel_digital_port *primary; |
652 | void *port; /* store this opaque as its illegal to dereference it */ |
806 | void *port; /* store this opaque as its illegal to dereference it */ |
653 | }; |
807 | }; |
654 | 808 | ||
655 | static inline int |
809 | static inline enum dpio_channel |
656 | vlv_dport_to_channel(struct intel_digital_port *dport) |
810 | vlv_dport_to_channel(struct intel_digital_port *dport) |
Line 664... | Line 818... | ||
664 | default: |
818 | default: |
665 | BUG(); |
819 | BUG(); |
666 | } |
820 | } |
667 | } |
821 | } |
Line 668... | Line 822... | ||
668 | 822 | ||
- | 823 | static inline enum dpio_phy |
|
- | 824 | vlv_dport_to_phy(struct intel_digital_port *dport) |
|
- | 825 | { |
|
- | 826 | switch (dport->port) { |
|
- | 827 | case PORT_B: |
|
- | 828 | case PORT_C: |
|
- | 829 | return DPIO_PHY0; |
|
- | 830 | case PORT_D: |
|
- | 831 | return DPIO_PHY1; |
|
- | 832 | default: |
|
- | 833 | BUG(); |
|
- | 834 | } |
|
- | 835 | } |
|
- | 836 | ||
669 | static inline int |
837 | static inline enum dpio_channel |
670 | vlv_pipe_to_channel(enum pipe pipe) |
838 | vlv_pipe_to_channel(enum pipe pipe) |
671 | { |
839 | { |
672 | switch (pipe) { |
840 | switch (pipe) { |
673 | case PIPE_A: |
841 | case PIPE_A: |
Line 695... | Line 863... | ||
695 | } |
863 | } |
Line 696... | Line 864... | ||
696 | 864 | ||
697 | struct intel_unpin_work { |
865 | struct intel_unpin_work { |
698 | struct work_struct work; |
866 | struct work_struct work; |
699 | struct drm_crtc *crtc; |
867 | struct drm_crtc *crtc; |
700 | struct drm_i915_gem_object *old_fb_obj; |
868 | struct drm_framebuffer *old_fb; |
701 | struct drm_i915_gem_object *pending_flip_obj; |
869 | struct drm_i915_gem_object *pending_flip_obj; |
702 | struct drm_pending_vblank_event *event; |
870 | struct drm_pending_vblank_event *event; |
703 | atomic_t pending; |
871 | atomic_t pending; |
704 | #define INTEL_FLIP_INACTIVE 0 |
872 | #define INTEL_FLIP_INACTIVE 0 |
705 | #define INTEL_FLIP_PENDING 1 |
873 | #define INTEL_FLIP_PENDING 1 |
706 | #define INTEL_FLIP_COMPLETE 2 |
874 | #define INTEL_FLIP_COMPLETE 2 |
707 | u32 flip_count; |
875 | u32 flip_count; |
708 | u32 gtt_offset; |
876 | u32 gtt_offset; |
709 | struct intel_engine_cs *flip_queued_ring; |
- | |
710 | u32 flip_queued_seqno; |
877 | struct drm_i915_gem_request *flip_queued_req; |
711 | int flip_queued_vblank; |
878 | u32 flip_queued_vblank; |
712 | int flip_ready_vblank; |
879 | u32 flip_ready_vblank; |
713 | bool enable_stall_check; |
880 | bool enable_stall_check; |
Line 714... | Line -... | ||
714 | }; |
- | |
715 | - | ||
716 | struct intel_set_config { |
- | |
717 | struct drm_encoder **save_connector_encoders; |
- | |
718 | struct drm_crtc **save_encoder_crtcs; |
- | |
719 | bool *save_crtc_enabled; |
- | |
720 | - | ||
721 | bool fb_changed; |
- | |
722 | bool mode_changed; |
- | |
723 | }; |
881 | }; |
724 | 882 | ||
725 | struct intel_load_detect_pipe { |
883 | struct intel_load_detect_pipe { |
726 | struct drm_framebuffer *release_fb; |
884 | struct drm_framebuffer *release_fb; |
727 | bool load_detect_temp; |
885 | bool load_detect_temp; |
Line 790... | Line 948... | ||
790 | void gen6_enable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask); |
948 | void gen6_enable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask); |
791 | void gen6_disable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask); |
949 | void gen6_disable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask); |
792 | void gen6_reset_rps_interrupts(struct drm_device *dev); |
950 | void gen6_reset_rps_interrupts(struct drm_device *dev); |
793 | void gen6_enable_rps_interrupts(struct drm_device *dev); |
951 | void gen6_enable_rps_interrupts(struct drm_device *dev); |
794 | void gen6_disable_rps_interrupts(struct drm_device *dev); |
952 | void gen6_disable_rps_interrupts(struct drm_device *dev); |
- | 953 | u32 gen6_sanitize_rps_pm_mask(struct drm_i915_private *dev_priv, u32 mask); |
|
795 | void intel_runtime_pm_disable_interrupts(struct drm_i915_private *dev_priv); |
954 | void intel_runtime_pm_disable_interrupts(struct drm_i915_private *dev_priv); |
796 | void intel_runtime_pm_enable_interrupts(struct drm_i915_private *dev_priv); |
955 | void intel_runtime_pm_enable_interrupts(struct drm_i915_private *dev_priv); |
797 | static inline bool intel_irqs_enabled(struct drm_i915_private *dev_priv) |
956 | static inline bool intel_irqs_enabled(struct drm_i915_private *dev_priv) |
798 | { |
957 | { |
799 | /* |
958 | /* |
Line 802... | Line 961... | ||
802 | */ |
961 | */ |
803 | return dev_priv->pm.irqs_enabled; |
962 | return dev_priv->pm.irqs_enabled; |
804 | } |
963 | } |
Line 805... | Line 964... | ||
805 | 964 | ||
806 | int intel_get_crtc_scanline(struct intel_crtc *crtc); |
965 | int intel_get_crtc_scanline(struct intel_crtc *crtc); |
- | 966 | void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv, |
|
Line 807... | Line 967... | ||
807 | void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv); |
967 | unsigned int pipe_mask); |
808 | 968 | ||
Line 814... | Line 974... | ||
814 | void intel_prepare_ddi(struct drm_device *dev); |
974 | void intel_prepare_ddi(struct drm_device *dev); |
815 | void hsw_fdi_link_train(struct drm_crtc *crtc); |
975 | void hsw_fdi_link_train(struct drm_crtc *crtc); |
816 | void intel_ddi_init(struct drm_device *dev, enum port port); |
976 | void intel_ddi_init(struct drm_device *dev, enum port port); |
817 | enum port intel_ddi_get_encoder_port(struct intel_encoder *intel_encoder); |
977 | enum port intel_ddi_get_encoder_port(struct intel_encoder *intel_encoder); |
818 | bool intel_ddi_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe); |
978 | bool intel_ddi_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe); |
819 | int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv); |
- | |
820 | void intel_ddi_pll_init(struct drm_device *dev); |
979 | void intel_ddi_pll_init(struct drm_device *dev); |
821 | void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc); |
980 | void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc); |
822 | void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv, |
981 | void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv, |
823 | enum transcoder cpu_transcoder); |
982 | enum transcoder cpu_transcoder); |
824 | void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc); |
983 | void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc); |
825 | void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc); |
984 | void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc); |
826 | bool intel_ddi_pll_select(struct intel_crtc *crtc); |
985 | bool intel_ddi_pll_select(struct intel_crtc *crtc, |
- | 986 | struct intel_crtc_state *crtc_state); |
|
827 | void intel_ddi_set_pipe_settings(struct drm_crtc *crtc); |
987 | void intel_ddi_set_pipe_settings(struct drm_crtc *crtc); |
828 | void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder); |
988 | void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder); |
829 | bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); |
989 | bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); |
830 | void intel_ddi_fdi_disable(struct drm_crtc *crtc); |
990 | void intel_ddi_fdi_disable(struct drm_crtc *crtc); |
831 | void intel_ddi_get_config(struct intel_encoder *encoder, |
991 | void intel_ddi_get_config(struct intel_encoder *encoder, |
832 | struct intel_crtc_config *pipe_config); |
992 | struct intel_crtc_state *pipe_config); |
- | 993 | struct intel_encoder * |
|
- | 994 | intel_ddi_get_crtc_new_encoder(struct intel_crtc_state *crtc_state); |
|
Line 833... | Line 995... | ||
833 | 995 | ||
834 | void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder); |
996 | void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder); |
835 | void intel_ddi_clock_get(struct intel_encoder *encoder, |
997 | void intel_ddi_clock_get(struct intel_encoder *encoder, |
836 | struct intel_crtc_config *pipe_config); |
998 | struct intel_crtc_state *pipe_config); |
- | 999 | void intel_ddi_set_vc_payload_alloc(struct drm_crtc *crtc, bool state); |
|
Line 837... | Line 1000... | ||
837 | void intel_ddi_set_vc_payload_alloc(struct drm_crtc *crtc, bool state); |
1000 | uint32_t ddi_signal_levels(struct intel_dp *intel_dp); |
838 | 1001 | ||
839 | /* intel_frontbuffer.c */ |
1002 | /* intel_frontbuffer.c */ |
840 | void intel_fb_obj_invalidate(struct drm_i915_gem_object *obj, |
1003 | void intel_fb_obj_invalidate(struct drm_i915_gem_object *obj, |
841 | struct intel_engine_cs *ring); |
1004 | enum fb_op_origin origin); |
842 | void intel_frontbuffer_flip_prepare(struct drm_device *dev, |
1005 | void intel_frontbuffer_flip_prepare(struct drm_device *dev, |
843 | unsigned frontbuffer_bits); |
1006 | unsigned frontbuffer_bits); |
844 | void intel_frontbuffer_flip_complete(struct drm_device *dev, |
- | |
845 | unsigned frontbuffer_bits); |
- | |
846 | void intel_frontbuffer_flush(struct drm_device *dev, |
- | |
847 | unsigned frontbuffer_bits); |
- | |
848 | /** |
- | |
849 | * intel_frontbuffer_flip - synchronous frontbuffer flip |
- | |
850 | * @dev: DRM device |
- | |
851 | * @frontbuffer_bits: frontbuffer plane tracking bits |
- | |
852 | * |
- | |
853 | * This function gets called after scheduling a flip on @obj. This is for |
- | |
854 | * synchronous plane updates which will happen on the next vblank and which will |
- | |
855 | * not get delayed by pending gpu rendering. |
- | |
856 | * |
- | |
857 | * Can be called without any locks held. |
- | |
858 | */ |
1007 | void intel_frontbuffer_flip_complete(struct drm_device *dev, |
859 | static inline |
1008 | unsigned frontbuffer_bits); |
860 | void intel_frontbuffer_flip(struct drm_device *dev, |
- | |
861 | unsigned frontbuffer_bits) |
1009 | void intel_frontbuffer_flip(struct drm_device *dev, |
862 | { |
- | |
863 | intel_frontbuffer_flush(dev, frontbuffer_bits); |
- | |
- | 1010 | unsigned frontbuffer_bits); |
|
- | 1011 | unsigned int intel_fb_align_height(struct drm_device *dev, |
|
- | 1012 | unsigned int height, |
|
864 | } |
1013 | uint32_t pixel_format, |
865 | - | ||
- | 1014 | uint64_t fb_format_modifier); |
|
- | 1015 | void intel_fb_obj_flush(struct drm_i915_gem_object *obj, bool retire, |
|
- | 1016 | enum fb_op_origin origin); |
|
Line 866... | Line 1017... | ||
866 | void intel_fb_obj_flush(struct drm_i915_gem_object *obj, bool retire); |
1017 | u32 intel_fb_stride_alignment(struct drm_device *dev, uint64_t fb_modifier, |
867 | 1018 | uint32_t pixel_format); |
|
868 | 1019 | ||
869 | /* intel_audio.c */ |
1020 | /* intel_audio.c */ |
- | 1021 | void intel_init_audio(struct drm_device *dev); |
|
- | 1022 | void intel_audio_codec_enable(struct intel_encoder *encoder); |
|
Line 870... | Line 1023... | ||
870 | void intel_init_audio(struct drm_device *dev); |
1023 | void intel_audio_codec_disable(struct intel_encoder *encoder); |
871 | void intel_audio_codec_enable(struct intel_encoder *encoder); |
1024 | void i915_audio_component_init(struct drm_i915_private *dev_priv); |
872 | void intel_audio_codec_disable(struct intel_encoder *encoder); |
1025 | void i915_audio_component_cleanup(struct drm_i915_private *dev_priv); |
873 | 1026 | ||
- | 1027 | /* intel_display.c */ |
|
874 | /* intel_display.c */ |
1028 | extern const struct drm_plane_funcs intel_plane_funcs; |
875 | const char *intel_output_name(int output); |
1029 | bool intel_has_pending_fb_unpin(struct drm_device *dev); |
876 | bool intel_has_pending_fb_unpin(struct drm_device *dev); |
1030 | int intel_pch_rawclk(struct drm_device *dev); |
877 | int intel_pch_rawclk(struct drm_device *dev); |
- | |
878 | void intel_mark_busy(struct drm_device *dev); |
1031 | int intel_hrawclk(struct drm_device *dev); |
879 | void intel_mark_idle(struct drm_device *dev); |
1032 | void intel_mark_busy(struct drm_device *dev); |
880 | void intel_crtc_restore_mode(struct drm_crtc *crtc); |
1033 | void intel_mark_idle(struct drm_device *dev); |
- | 1034 | void intel_crtc_restore_mode(struct drm_crtc *crtc); |
|
881 | void intel_crtc_control(struct drm_crtc *crtc, bool enable); |
1035 | int intel_display_suspend(struct drm_device *dev); |
882 | void intel_crtc_update_dpms(struct drm_crtc *crtc); |
- | |
883 | void intel_encoder_destroy(struct drm_encoder *encoder); |
- | |
884 | void intel_connector_dpms(struct drm_connector *, int mode); |
- | |
885 | bool intel_connector_get_hw_state(struct intel_connector *connector); |
1036 | void intel_encoder_destroy(struct drm_encoder *encoder); |
886 | void intel_modeset_check_state(struct drm_device *dev); |
1037 | int intel_connector_init(struct intel_connector *); |
887 | bool ibx_digital_port_connected(struct drm_i915_private *dev_priv, |
1038 | struct intel_connector *intel_connector_alloc(void); |
888 | struct intel_digital_port *port); |
1039 | bool intel_connector_get_hw_state(struct intel_connector *connector); |
889 | void intel_connector_attach_encoder(struct intel_connector *connector, |
1040 | void intel_connector_attach_encoder(struct intel_connector *connector, |
Line 902... | Line 1053... | ||
902 | { |
1053 | { |
903 | drm_wait_one_vblank(dev, pipe); |
1054 | drm_wait_one_vblank(dev, pipe); |
904 | } |
1055 | } |
905 | int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp); |
1056 | int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp); |
906 | void vlv_wait_port_ready(struct drm_i915_private *dev_priv, |
1057 | void vlv_wait_port_ready(struct drm_i915_private *dev_priv, |
907 | struct intel_digital_port *dport); |
1058 | struct intel_digital_port *dport, |
- | 1059 | unsigned int expected_mask); |
|
908 | bool intel_get_load_detect_pipe(struct drm_connector *connector, |
1060 | bool intel_get_load_detect_pipe(struct drm_connector *connector, |
909 | struct drm_display_mode *mode, |
1061 | struct drm_display_mode *mode, |
910 | struct intel_load_detect_pipe *old, |
1062 | struct intel_load_detect_pipe *old, |
911 | struct drm_modeset_acquire_ctx *ctx); |
1063 | struct drm_modeset_acquire_ctx *ctx); |
912 | void intel_release_load_detect_pipe(struct drm_connector *connector, |
1064 | void intel_release_load_detect_pipe(struct drm_connector *connector, |
913 | struct intel_load_detect_pipe *old); |
1065 | struct intel_load_detect_pipe *old, |
- | 1066 | struct drm_modeset_acquire_ctx *ctx); |
|
914 | int intel_pin_and_fence_fb_obj(struct drm_plane *plane, |
1067 | int intel_pin_and_fence_fb_obj(struct drm_plane *plane, |
915 | struct drm_framebuffer *fb, |
1068 | struct drm_framebuffer *fb, |
- | 1069 | const struct drm_plane_state *plane_state, |
|
916 | struct intel_engine_cs *pipelined); |
1070 | struct intel_engine_cs *pipelined, |
917 | void intel_unpin_fb_obj(struct drm_i915_gem_object *obj); |
1071 | struct drm_i915_gem_request **pipelined_request); |
918 | struct drm_framebuffer * |
1072 | struct drm_framebuffer * |
919 | __intel_framebuffer_create(struct drm_device *dev, |
1073 | __intel_framebuffer_create(struct drm_device *dev, |
920 | struct drm_mode_fb_cmd2 *mode_cmd, |
1074 | struct drm_mode_fb_cmd2 *mode_cmd, |
921 | struct drm_i915_gem_object *obj); |
1075 | struct drm_i915_gem_object *obj); |
922 | void intel_prepare_page_flip(struct drm_device *dev, int plane); |
1076 | void intel_prepare_page_flip(struct drm_device *dev, int plane); |
923 | void intel_finish_page_flip(struct drm_device *dev, int pipe); |
1077 | void intel_finish_page_flip(struct drm_device *dev, int pipe); |
924 | void intel_finish_page_flip_plane(struct drm_device *dev, int plane); |
1078 | void intel_finish_page_flip_plane(struct drm_device *dev, int plane); |
925 | void intel_check_page_flip(struct drm_device *dev, int pipe); |
1079 | void intel_check_page_flip(struct drm_device *dev, int pipe); |
- | 1080 | int intel_prepare_plane_fb(struct drm_plane *plane, |
|
- | 1081 | const struct drm_plane_state *new_state); |
|
- | 1082 | void intel_cleanup_plane_fb(struct drm_plane *plane, |
|
- | 1083 | const struct drm_plane_state *old_state); |
|
- | 1084 | int intel_plane_atomic_get_property(struct drm_plane *plane, |
|
- | 1085 | const struct drm_plane_state *state, |
|
- | 1086 | struct drm_property *property, |
|
- | 1087 | uint64_t *val); |
|
- | 1088 | int intel_plane_atomic_set_property(struct drm_plane *plane, |
|
- | 1089 | struct drm_plane_state *state, |
|
- | 1090 | struct drm_property *property, |
|
- | 1091 | uint64_t val); |
|
- | 1092 | int intel_plane_atomic_calc_changes(struct drm_crtc_state *crtc_state, |
|
- | 1093 | struct drm_plane_state *plane_state); |
|
- | 1094 | ||
- | 1095 | unsigned int |
|
- | 1096 | intel_tile_height(struct drm_device *dev, uint32_t pixel_format, |
|
- | 1097 | uint64_t fb_format_modifier, unsigned int plane); |
|
- | 1098 | ||
- | 1099 | static inline bool |
|
- | 1100 | intel_rotation_90_or_270(unsigned int rotation) |
|
- | 1101 | { |
|
- | 1102 | return rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270)); |
|
- | 1103 | } |
|
- | 1104 | ||
- | 1105 | void intel_create_rotation_property(struct drm_device *dev, |
|
- | 1106 | struct intel_plane *plane); |
|
Line 926... | Line 1107... | ||
926 | 1107 | ||
927 | /* shared dpll functions */ |
1108 | /* shared dpll functions */ |
928 | struct intel_shared_dpll *intel_crtc_to_shared_dpll(struct intel_crtc *crtc); |
1109 | struct intel_shared_dpll *intel_crtc_to_shared_dpll(struct intel_crtc *crtc); |
929 | void assert_shared_dpll(struct drm_i915_private *dev_priv, |
1110 | void assert_shared_dpll(struct drm_i915_private *dev_priv, |
930 | struct intel_shared_dpll *pll, |
1111 | struct intel_shared_dpll *pll, |
931 | bool state); |
1112 | bool state); |
932 | #define assert_shared_dpll_enabled(d, p) assert_shared_dpll(d, p, true) |
1113 | #define assert_shared_dpll_enabled(d, p) assert_shared_dpll(d, p, true) |
933 | #define assert_shared_dpll_disabled(d, p) assert_shared_dpll(d, p, false) |
1114 | #define assert_shared_dpll_disabled(d, p) assert_shared_dpll(d, p, false) |
934 | struct intel_shared_dpll *intel_get_shared_dpll(struct intel_crtc *crtc); |
1115 | struct intel_shared_dpll *intel_get_shared_dpll(struct intel_crtc *crtc, |
Line 935... | Line 1116... | ||
935 | void intel_put_shared_dpll(struct intel_crtc *crtc); |
1116 | struct intel_crtc_state *state); |
936 | 1117 | ||
937 | void vlv_force_pll_on(struct drm_device *dev, enum pipe pipe, |
1118 | void vlv_force_pll_on(struct drm_device *dev, enum pipe pipe, |
Line 950... | Line 1131... | ||
950 | #define assert_fdi_rx_pll_enabled(d, p) assert_fdi_rx_pll(d, p, true) |
1131 | #define assert_fdi_rx_pll_enabled(d, p) assert_fdi_rx_pll(d, p, true) |
951 | #define assert_fdi_rx_pll_disabled(d, p) assert_fdi_rx_pll(d, p, false) |
1132 | #define assert_fdi_rx_pll_disabled(d, p) assert_fdi_rx_pll(d, p, false) |
952 | void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, bool state); |
1133 | void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, bool state); |
953 | #define assert_pipe_enabled(d, p) assert_pipe(d, p, true) |
1134 | #define assert_pipe_enabled(d, p) assert_pipe(d, p, true) |
954 | #define assert_pipe_disabled(d, p) assert_pipe(d, p, false) |
1135 | #define assert_pipe_disabled(d, p) assert_pipe(d, p, false) |
955 | unsigned long intel_gen4_compute_page_offset(int *x, int *y, |
1136 | unsigned long intel_gen4_compute_page_offset(struct drm_i915_private *dev_priv, |
- | 1137 | int *x, int *y, |
|
956 | unsigned int tiling_mode, |
1138 | unsigned int tiling_mode, |
957 | unsigned int bpp, |
1139 | unsigned int bpp, |
958 | unsigned int pitch); |
1140 | unsigned int pitch); |
959 | void intel_prepare_reset(struct drm_device *dev); |
1141 | void intel_prepare_reset(struct drm_device *dev); |
960 | void intel_finish_reset(struct drm_device *dev); |
1142 | void intel_finish_reset(struct drm_device *dev); |
961 | void hsw_enable_pc8(struct drm_i915_private *dev_priv); |
1143 | void hsw_enable_pc8(struct drm_i915_private *dev_priv); |
962 | void hsw_disable_pc8(struct drm_i915_private *dev_priv); |
1144 | void hsw_disable_pc8(struct drm_i915_private *dev_priv); |
- | 1145 | void broxton_init_cdclk(struct drm_device *dev); |
|
- | 1146 | void broxton_uninit_cdclk(struct drm_device *dev); |
|
- | 1147 | void broxton_ddi_phy_init(struct drm_device *dev); |
|
- | 1148 | void broxton_ddi_phy_uninit(struct drm_device *dev); |
|
- | 1149 | void bxt_enable_dc9(struct drm_i915_private *dev_priv); |
|
- | 1150 | void bxt_disable_dc9(struct drm_i915_private *dev_priv); |
|
- | 1151 | void skl_init_cdclk(struct drm_i915_private *dev_priv); |
|
- | 1152 | void skl_uninit_cdclk(struct drm_i915_private *dev_priv); |
|
963 | void intel_dp_get_m_n(struct intel_crtc *crtc, |
1153 | void intel_dp_get_m_n(struct intel_crtc *crtc, |
964 | struct intel_crtc_config *pipe_config); |
1154 | struct intel_crtc_state *pipe_config); |
965 | void intel_dp_set_m_n(struct intel_crtc *crtc); |
1155 | void intel_dp_set_m_n(struct intel_crtc *crtc, enum link_m_n_set m_n); |
966 | int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n); |
1156 | int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n); |
967 | void |
1157 | void |
968 | ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe_config, |
1158 | ironlake_check_encoder_dotclock(const struct intel_crtc_state *pipe_config, |
969 | int dotclock); |
1159 | int dotclock); |
- | 1160 | bool bxt_find_best_dpll(struct intel_crtc_state *crtc_state, int target_clock, |
|
- | 1161 | intel_clock_t *best_clock); |
|
- | 1162 | int chv_calc_dpll_params(int refclk, intel_clock_t *pll_clock); |
|
- | 1163 | ||
970 | bool intel_crtc_active(struct drm_crtc *crtc); |
1164 | bool intel_crtc_active(struct drm_crtc *crtc); |
971 | void hsw_enable_ips(struct intel_crtc *crtc); |
1165 | void hsw_enable_ips(struct intel_crtc *crtc); |
972 | void hsw_disable_ips(struct intel_crtc *crtc); |
1166 | void hsw_disable_ips(struct intel_crtc *crtc); |
973 | enum intel_display_power_domain |
1167 | enum intel_display_power_domain |
974 | intel_display_port_power_domain(struct intel_encoder *intel_encoder); |
1168 | intel_display_port_power_domain(struct intel_encoder *intel_encoder); |
- | 1169 | enum intel_display_power_domain |
|
- | 1170 | intel_display_port_aux_power_domain(struct intel_encoder *intel_encoder); |
|
975 | void intel_mode_from_pipe_config(struct drm_display_mode *mode, |
1171 | void intel_mode_from_pipe_config(struct drm_display_mode *mode, |
976 | struct intel_crtc_config *pipe_config); |
1172 | struct intel_crtc_state *pipe_config); |
977 | int intel_format_to_fourcc(int format); |
- | |
978 | void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc); |
1173 | void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc); |
979 | void intel_modeset_preclose(struct drm_device *dev, struct drm_file *file); |
1174 | void intel_modeset_preclose(struct drm_device *dev, struct drm_file *file); |
Line -... | Line 1175... | ||
- | 1175 | ||
- | 1176 | int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state); |
|
- | 1177 | int skl_max_scale(struct intel_crtc *crtc, struct intel_crtc_state *crtc_state); |
|
- | 1178 | ||
- | 1179 | unsigned long intel_plane_obj_offset(struct intel_plane *intel_plane, |
|
- | 1180 | struct drm_i915_gem_object *obj, |
|
- | 1181 | unsigned int plane); |
|
- | 1182 | ||
- | 1183 | u32 skl_plane_ctl_format(uint32_t pixel_format); |
|
- | 1184 | u32 skl_plane_ctl_tiling(uint64_t fb_modifier); |
|
- | 1185 | u32 skl_plane_ctl_rotation(unsigned int rotation); |
|
- | 1186 | ||
- | 1187 | /* intel_csr.c */ |
|
- | 1188 | void intel_csr_ucode_init(struct drm_device *dev); |
|
- | 1189 | enum csr_state intel_csr_load_status_get(struct drm_i915_private *dev_priv); |
|
- | 1190 | void intel_csr_load_status_set(struct drm_i915_private *dev_priv, |
|
- | 1191 | enum csr_state state); |
|
- | 1192 | void intel_csr_load_program(struct drm_device *dev); |
|
- | 1193 | void intel_csr_ucode_fini(struct drm_device *dev); |
|
- | 1194 | void assert_csr_loaded(struct drm_i915_private *dev_priv); |
|
980 | 1195 | ||
981 | /* intel_dp.c */ |
1196 | /* intel_dp.c */ |
982 | void intel_dp_init(struct drm_device *dev, int output_reg, enum port port); |
1197 | void intel_dp_init(struct drm_device *dev, int output_reg, enum port port); |
983 | bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port, |
1198 | bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port, |
- | 1199 | struct intel_connector *intel_connector); |
|
- | 1200 | void intel_dp_set_link_params(struct intel_dp *intel_dp, |
|
984 | struct intel_connector *intel_connector); |
1201 | const struct intel_crtc_state *pipe_config); |
985 | void intel_dp_start_link_train(struct intel_dp *intel_dp); |
- | |
986 | void intel_dp_complete_link_train(struct intel_dp *intel_dp); |
1202 | void intel_dp_start_link_train(struct intel_dp *intel_dp); |
987 | void intel_dp_stop_link_train(struct intel_dp *intel_dp); |
1203 | void intel_dp_stop_link_train(struct intel_dp *intel_dp); |
988 | void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode); |
1204 | void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode); |
989 | void intel_dp_encoder_destroy(struct drm_encoder *encoder); |
- | |
990 | void intel_dp_check_link_status(struct intel_dp *intel_dp); |
1205 | void intel_dp_encoder_destroy(struct drm_encoder *encoder); |
991 | int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc); |
1206 | int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc); |
992 | bool intel_dp_compute_config(struct intel_encoder *encoder, |
1207 | bool intel_dp_compute_config(struct intel_encoder *encoder, |
993 | struct intel_crtc_config *pipe_config); |
1208 | struct intel_crtc_state *pipe_config); |
994 | bool intel_dp_is_edp(struct drm_device *dev, enum port port); |
1209 | bool intel_dp_is_edp(struct drm_device *dev, enum port port); |
995 | bool intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, |
1210 | enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, |
996 | bool long_hpd); |
1211 | bool long_hpd); |
997 | void intel_edp_backlight_on(struct intel_dp *intel_dp); |
1212 | void intel_edp_backlight_on(struct intel_dp *intel_dp); |
998 | void intel_edp_backlight_off(struct intel_dp *intel_dp); |
1213 | void intel_edp_backlight_off(struct intel_dp *intel_dp); |
999 | void intel_edp_panel_vdd_on(struct intel_dp *intel_dp); |
1214 | void intel_edp_panel_vdd_on(struct intel_dp *intel_dp); |
1000 | void intel_edp_panel_on(struct intel_dp *intel_dp); |
1215 | void intel_edp_panel_on(struct intel_dp *intel_dp); |
1001 | void intel_edp_panel_off(struct intel_dp *intel_dp); |
- | |
1002 | void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate); |
1216 | void intel_edp_panel_off(struct intel_dp *intel_dp); |
1003 | void intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector); |
1217 | void intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector); |
1004 | void intel_dp_mst_suspend(struct drm_device *dev); |
1218 | void intel_dp_mst_suspend(struct drm_device *dev); |
1005 | void intel_dp_mst_resume(struct drm_device *dev); |
1219 | void intel_dp_mst_resume(struct drm_device *dev); |
- | 1220 | int intel_dp_max_link_rate(struct intel_dp *intel_dp); |
|
1006 | int intel_dp_max_link_bw(struct intel_dp *intel_dp); |
1221 | int intel_dp_rate_select(struct intel_dp *intel_dp, int rate); |
1007 | void intel_dp_hot_plug(struct intel_encoder *intel_encoder); |
1222 | void intel_dp_hot_plug(struct intel_encoder *intel_encoder); |
1008 | void vlv_power_sequencer_reset(struct drm_i915_private *dev_priv); |
1223 | void vlv_power_sequencer_reset(struct drm_i915_private *dev_priv); |
- | 1224 | uint32_t intel_dp_pack_aux(const uint8_t *src, int src_bytes); |
|
- | 1225 | void intel_plane_destroy(struct drm_plane *plane); |
|
- | 1226 | void intel_edp_drrs_enable(struct intel_dp *intel_dp); |
|
- | 1227 | void intel_edp_drrs_disable(struct intel_dp *intel_dp); |
|
- | 1228 | void intel_edp_drrs_invalidate(struct drm_device *dev, |
|
1009 | uint32_t intel_dp_pack_aux(const uint8_t *src, int src_bytes); |
1229 | unsigned frontbuffer_bits); |
- | 1230 | void intel_edp_drrs_flush(struct drm_device *dev, unsigned frontbuffer_bits); |
|
- | 1231 | bool intel_digital_port_connected(struct drm_i915_private *dev_priv, |
|
- | 1232 | struct intel_digital_port *port); |
|
Line 1010... | Line 1233... | ||
1010 | void intel_dp_unpack_aux(uint32_t src, uint8_t *dst, int dst_bytes); |
1233 | void hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config); |
1011 | 1234 | ||
1012 | /* intel_dp_mst.c */ |
1235 | /* intel_dp_mst.c */ |
1013 | int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id); |
1236 | int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id); |
Line 1019... | Line 1242... | ||
1019 | /* intel_dvo.c */ |
1242 | /* intel_dvo.c */ |
1020 | void intel_dvo_init(struct drm_device *dev); |
1243 | void intel_dvo_init(struct drm_device *dev); |
Line 1021... | Line 1244... | ||
1021 | 1244 | ||
1022 | 1245 | ||
1023 | /* legacy fbdev emulation in intel_fbdev.c */ |
1246 | /* legacy fbdev emulation in intel_fbdev.c */ |
1024 | #ifdef CONFIG_DRM_I915_FBDEV |
1247 | #ifdef CONFIG_DRM_FBDEV_EMULATION |
1025 | extern int intel_fbdev_init(struct drm_device *dev); |
1248 | extern int intel_fbdev_init(struct drm_device *dev); |
1026 | extern void intel_fbdev_initial_config(void *data, async_cookie_t cookie); |
1249 | extern void intel_fbdev_initial_config(void *data, async_cookie_t cookie); |
1027 | extern void intel_fbdev_fini(struct drm_device *dev); |
1250 | extern void intel_fbdev_fini(struct drm_device *dev); |
Line 1049... | Line 1272... | ||
1049 | static inline void intel_fbdev_restore_mode(struct drm_device *dev) |
1272 | static inline void intel_fbdev_restore_mode(struct drm_device *dev) |
1050 | { |
1273 | { |
1051 | } |
1274 | } |
1052 | #endif |
1275 | #endif |
Line -... | Line 1276... | ||
- | 1276 | ||
- | 1277 | /* intel_fbc.c */ |
|
- | 1278 | bool intel_fbc_enabled(struct drm_i915_private *dev_priv); |
|
- | 1279 | void intel_fbc_update(struct drm_i915_private *dev_priv); |
|
- | 1280 | void intel_fbc_init(struct drm_i915_private *dev_priv); |
|
- | 1281 | void intel_fbc_disable(struct drm_i915_private *dev_priv); |
|
- | 1282 | void intel_fbc_disable_crtc(struct intel_crtc *crtc); |
|
- | 1283 | void intel_fbc_invalidate(struct drm_i915_private *dev_priv, |
|
- | 1284 | unsigned int frontbuffer_bits, |
|
- | 1285 | enum fb_op_origin origin); |
|
- | 1286 | void intel_fbc_flush(struct drm_i915_private *dev_priv, |
|
- | 1287 | unsigned int frontbuffer_bits, enum fb_op_origin origin); |
|
- | 1288 | const char *intel_no_fbc_reason_str(enum no_fbc_reason reason); |
|
- | 1289 | void intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv); |
|
1053 | 1290 | ||
1054 | /* intel_hdmi.c */ |
1291 | /* intel_hdmi.c */ |
1055 | void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port); |
1292 | void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port); |
1056 | void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, |
1293 | void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, |
1057 | struct intel_connector *intel_connector); |
1294 | struct intel_connector *intel_connector); |
1058 | struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); |
1295 | struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); |
1059 | bool intel_hdmi_compute_config(struct intel_encoder *encoder, |
1296 | bool intel_hdmi_compute_config(struct intel_encoder *encoder, |
Line 1060... | Line 1297... | ||
1060 | struct intel_crtc_config *pipe_config); |
1297 | struct intel_crtc_state *pipe_config); |
1061 | 1298 | ||
1062 | 1299 | ||
Line 1069... | Line 1306... | ||
1069 | int intel_connector_update_modes(struct drm_connector *connector, |
1306 | int intel_connector_update_modes(struct drm_connector *connector, |
1070 | struct edid *edid); |
1307 | struct edid *edid); |
1071 | int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter); |
1308 | int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter); |
1072 | void intel_attach_force_audio_property(struct drm_connector *connector); |
1309 | void intel_attach_force_audio_property(struct drm_connector *connector); |
1073 | void intel_attach_broadcast_rgb_property(struct drm_connector *connector); |
1310 | void intel_attach_broadcast_rgb_property(struct drm_connector *connector); |
- | 1311 | void intel_attach_aspect_ratio_property(struct drm_connector *connector); |
|
Line 1074... | Line 1312... | ||
1074 | 1312 | ||
1075 | 1313 | ||
1076 | /* intel_overlay.c */ |
1314 | /* intel_overlay.c */ |
1077 | void intel_setup_overlay(struct drm_device *dev); |
1315 | void intel_setup_overlay(struct drm_device *dev); |
1078 | void intel_cleanup_overlay(struct drm_device *dev); |
1316 | void intel_cleanup_overlay(struct drm_device *dev); |
1079 | int intel_overlay_switch_off(struct intel_overlay *overlay); |
1317 | int intel_overlay_switch_off(struct intel_overlay *overlay); |
1080 | int intel_overlay_put_image(struct drm_device *dev, void *data, |
1318 | int intel_overlay_put_image(struct drm_device *dev, void *data, |
1081 | struct drm_file *file_priv); |
1319 | struct drm_file *file_priv); |
- | 1320 | int intel_overlay_attrs(struct drm_device *dev, void *data, |
|
Line 1082... | Line 1321... | ||
1082 | int intel_overlay_attrs(struct drm_device *dev, void *data, |
1321 | struct drm_file *file_priv); |
1083 | struct drm_file *file_priv); |
1322 | void intel_overlay_reset(struct drm_i915_private *dev_priv); |
1084 | 1323 | ||
1085 | 1324 | ||
1086 | /* intel_panel.c */ |
1325 | /* intel_panel.c */ |
1087 | int intel_panel_init(struct intel_panel *panel, |
1326 | int intel_panel_init(struct intel_panel *panel, |
1088 | struct drm_display_mode *fixed_mode, |
1327 | struct drm_display_mode *fixed_mode, |
1089 | struct drm_display_mode *downclock_mode); |
1328 | struct drm_display_mode *downclock_mode); |
1090 | void intel_panel_fini(struct intel_panel *panel); |
1329 | void intel_panel_fini(struct intel_panel *panel); |
1091 | void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode, |
1330 | void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode, |
1092 | struct drm_display_mode *adjusted_mode); |
1331 | struct drm_display_mode *adjusted_mode); |
1093 | void intel_pch_panel_fitting(struct intel_crtc *crtc, |
1332 | void intel_pch_panel_fitting(struct intel_crtc *crtc, |
1094 | struct intel_crtc_config *pipe_config, |
1333 | struct intel_crtc_state *pipe_config, |
1095 | int fitting_mode); |
1334 | int fitting_mode); |
1096 | void intel_gmch_panel_fitting(struct intel_crtc *crtc, |
1335 | void intel_gmch_panel_fitting(struct intel_crtc *crtc, |
1097 | struct intel_crtc_config *pipe_config, |
1336 | struct intel_crtc_state *pipe_config, |
1098 | int fitting_mode); |
1337 | int fitting_mode); |
1099 | void intel_panel_set_backlight_acpi(struct intel_connector *connector, |
1338 | void intel_panel_set_backlight_acpi(struct intel_connector *connector, |
1100 | u32 level, u32 max); |
1339 | u32 level, u32 max); |
1101 | int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe); |
- | |
1102 | void intel_panel_enable_backlight(struct intel_connector *connector); |
1340 | int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe); |
1103 | void intel_panel_disable_backlight(struct intel_connector *connector); |
1341 | void intel_panel_enable_backlight(struct intel_connector *connector); |
1104 | void intel_panel_destroy_backlight(struct drm_connector *connector); |
1342 | void intel_panel_disable_backlight(struct intel_connector *connector); |
1105 | void intel_panel_init_backlight_funcs(struct drm_device *dev); |
1343 | void intel_panel_destroy_backlight(struct drm_connector *connector); |
1106 | enum drm_connector_status intel_panel_detect(struct drm_device *dev); |
1344 | enum drm_connector_status intel_panel_detect(struct drm_device *dev); |
1107 | extern struct drm_display_mode *intel_find_panel_downclock( |
1345 | extern struct drm_display_mode *intel_find_panel_downclock( |
1108 | struct drm_device *dev, |
1346 | struct drm_device *dev, |
Line 1109... | Line 1347... | ||
1109 | struct drm_display_mode *fixed_mode, |
1347 | struct drm_display_mode *fixed_mode, |
1110 | struct drm_connector *connector); |
- | |
1111 | void intel_backlight_register(struct drm_device *dev); |
1348 | struct drm_connector *connector); |
1112 | void intel_backlight_unregister(struct drm_device *dev); |
1349 | void intel_backlight_register(struct drm_device *dev); |
1113 | 1350 | void intel_backlight_unregister(struct drm_device *dev); |
|
1114 | 1351 | ||
1115 | /* intel_psr.c */ |
1352 | |
1116 | bool intel_psr_is_enabled(struct drm_device *dev); |
1353 | /* intel_psr.c */ |
- | 1354 | void intel_psr_enable(struct intel_dp *intel_dp); |
|
1117 | void intel_psr_enable(struct intel_dp *intel_dp); |
1355 | void intel_psr_disable(struct intel_dp *intel_dp); |
- | 1356 | void intel_psr_invalidate(struct drm_device *dev, |
|
- | 1357 | unsigned frontbuffer_bits); |
|
Line 1118... | Line 1358... | ||
1118 | void intel_psr_disable(struct intel_dp *intel_dp); |
1358 | void intel_psr_flush(struct drm_device *dev, |
1119 | void intel_psr_invalidate(struct drm_device *dev, |
1359 | unsigned frontbuffer_bits, |
1120 | unsigned frontbuffer_bits); |
1360 | enum fb_op_origin origin); |
1121 | void intel_psr_flush(struct drm_device *dev, |
1361 | void intel_psr_init(struct drm_device *dev); |
Line 1134... | Line 1374... | ||
1134 | enum intel_display_power_domain domain); |
1374 | enum intel_display_power_domain domain); |
1135 | void intel_display_power_get(struct drm_i915_private *dev_priv, |
1375 | void intel_display_power_get(struct drm_i915_private *dev_priv, |
1136 | enum intel_display_power_domain domain); |
1376 | enum intel_display_power_domain domain); |
1137 | void intel_display_power_put(struct drm_i915_private *dev_priv, |
1377 | void intel_display_power_put(struct drm_i915_private *dev_priv, |
1138 | enum intel_display_power_domain domain); |
1378 | enum intel_display_power_domain domain); |
1139 | void intel_aux_display_runtime_get(struct drm_i915_private *dev_priv); |
- | |
1140 | void intel_aux_display_runtime_put(struct drm_i915_private *dev_priv); |
- | |
1141 | void intel_runtime_pm_get(struct drm_i915_private *dev_priv); |
1379 | void intel_runtime_pm_get(struct drm_i915_private *dev_priv); |
1142 | void intel_runtime_pm_get_noresume(struct drm_i915_private *dev_priv); |
1380 | void intel_runtime_pm_get_noresume(struct drm_i915_private *dev_priv); |
1143 | void intel_runtime_pm_put(struct drm_i915_private *dev_priv); |
1381 | void intel_runtime_pm_put(struct drm_i915_private *dev_priv); |
Line 1144... | Line 1382... | ||
1144 | 1382 | ||
Line -... | Line 1383... | ||
- | 1383 | void intel_display_set_init_power(struct drm_i915_private *dev, bool enable); |
|
- | 1384 | ||
- | 1385 | void chv_phy_powergate_lanes(struct intel_encoder *encoder, |
|
- | 1386 | bool override, unsigned int mask); |
|
- | 1387 | bool chv_phy_powergate_ch(struct drm_i915_private *dev_priv, enum dpio_phy phy, |
|
- | 1388 | enum dpio_channel ch, bool override); |
|
1145 | void intel_display_set_init_power(struct drm_i915_private *dev, bool enable); |
1389 | |
1146 | 1390 | ||
1147 | /* intel_pm.c */ |
1391 | /* intel_pm.c */ |
1148 | void intel_init_clock_gating(struct drm_device *dev); |
1392 | void intel_init_clock_gating(struct drm_device *dev); |
1149 | void intel_suspend_hw(struct drm_device *dev); |
1393 | void intel_suspend_hw(struct drm_device *dev); |
Line 1155... | Line 1399... | ||
1155 | uint32_t sprite_height, |
1399 | uint32_t sprite_height, |
1156 | int pixel_size, |
1400 | int pixel_size, |
1157 | bool enabled, bool scaled); |
1401 | bool enabled, bool scaled); |
1158 | void intel_init_pm(struct drm_device *dev); |
1402 | void intel_init_pm(struct drm_device *dev); |
1159 | void intel_pm_setup(struct drm_device *dev); |
1403 | void intel_pm_setup(struct drm_device *dev); |
1160 | bool intel_fbc_enabled(struct drm_device *dev); |
- | |
1161 | void intel_update_fbc(struct drm_device *dev); |
- | |
1162 | void intel_gpu_ips_init(struct drm_i915_private *dev_priv); |
1404 | void intel_gpu_ips_init(struct drm_i915_private *dev_priv); |
1163 | void intel_gpu_ips_teardown(void); |
1405 | void intel_gpu_ips_teardown(void); |
1164 | void intel_init_gt_powersave(struct drm_device *dev); |
1406 | void intel_init_gt_powersave(struct drm_device *dev); |
1165 | void intel_cleanup_gt_powersave(struct drm_device *dev); |
1407 | void intel_cleanup_gt_powersave(struct drm_device *dev); |
1166 | void intel_enable_gt_powersave(struct drm_device *dev); |
1408 | void intel_enable_gt_powersave(struct drm_device *dev); |
1167 | void intel_disable_gt_powersave(struct drm_device *dev); |
1409 | void intel_disable_gt_powersave(struct drm_device *dev); |
1168 | void intel_suspend_gt_powersave(struct drm_device *dev); |
1410 | void intel_suspend_gt_powersave(struct drm_device *dev); |
1169 | void intel_reset_gt_powersave(struct drm_device *dev); |
1411 | void intel_reset_gt_powersave(struct drm_device *dev); |
1170 | void ironlake_teardown_rc6(struct drm_device *dev); |
- | |
1171 | void gen6_update_ring_freq(struct drm_device *dev); |
1412 | void gen6_update_ring_freq(struct drm_device *dev); |
- | 1413 | void gen6_rps_busy(struct drm_i915_private *dev_priv); |
|
- | 1414 | void gen6_rps_reset_ei(struct drm_i915_private *dev_priv); |
|
1172 | void gen6_rps_idle(struct drm_i915_private *dev_priv); |
1415 | void gen6_rps_idle(struct drm_i915_private *dev_priv); |
1173 | void gen6_rps_boost(struct drm_i915_private *dev_priv); |
1416 | void gen6_rps_boost(struct drm_i915_private *dev_priv, |
- | 1417 | struct intel_rps_client *rps, |
|
- | 1418 | unsigned long submitted); |
|
- | 1419 | void intel_queue_rps_boost_for_request(struct drm_device *dev, |
|
- | 1420 | struct drm_i915_gem_request *req); |
|
- | 1421 | void vlv_wm_get_hw_state(struct drm_device *dev); |
|
1174 | void ilk_wm_get_hw_state(struct drm_device *dev); |
1422 | void ilk_wm_get_hw_state(struct drm_device *dev); |
1175 | void skl_wm_get_hw_state(struct drm_device *dev); |
1423 | void skl_wm_get_hw_state(struct drm_device *dev); |
1176 | void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv, |
1424 | void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv, |
1177 | struct skl_ddb_allocation *ddb /* out */); |
1425 | struct skl_ddb_allocation *ddb /* out */); |
1178 | - | ||
- | 1426 | uint32_t ilk_pipe_pixel_rate(const struct intel_crtc_state *pipe_config); |
|
Line 1179... | Line 1427... | ||
1179 | 1427 | ||
1180 | /* intel_sdvo.c */ |
1428 | /* intel_sdvo.c */ |
Line 1181... | Line 1429... | ||
1181 | bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob); |
1429 | bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob); |
1182 | 1430 | ||
1183 | - | ||
1184 | /* intel_sprite.c */ |
- | |
1185 | int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane); |
- | |
1186 | void intel_flush_primary_plane(struct drm_i915_private *dev_priv, |
- | |
1187 | enum plane plane); |
- | |
1188 | int intel_plane_set_property(struct drm_plane *plane, |
- | |
1189 | struct drm_property *prop, |
- | |
1190 | uint64_t val); |
1431 | |
1191 | int intel_plane_restore(struct drm_plane *plane); |
1432 | /* intel_sprite.c */ |
1192 | void intel_plane_disable(struct drm_plane *plane); |
- | |
1193 | int intel_sprite_set_colorkey(struct drm_device *dev, void *data, |
- | |
1194 | struct drm_file *file_priv); |
1433 | int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane); |
1195 | int intel_sprite_get_colorkey(struct drm_device *dev, void *data, |
- | |
1196 | struct drm_file *file_priv); |
1434 | int intel_sprite_set_colorkey(struct drm_device *dev, void *data, |
Line 1197... | Line 1435... | ||
1197 | bool intel_pipe_update_start(struct intel_crtc *crtc, |
1435 | struct drm_file *file_priv); |
1198 | uint32_t *start_vbl_count); |
1436 | void intel_pipe_update_start(struct intel_crtc *crtc); |
Line -... | Line 1437... | ||
- | 1437 | void intel_pipe_update_end(struct intel_crtc *crtc); |
|
- | 1438 | ||
- | 1439 | /* intel_tv.c */ |
|
- | 1440 | void intel_tv_init(struct drm_device *dev); |
|
- | 1441 | ||
- | 1442 | /* intel_atomic.c */ |
|
- | 1443 | int intel_connector_atomic_get_property(struct drm_connector *connector, |
|
- | 1444 | const struct drm_connector_state *state, |
|
- | 1445 | struct drm_property *property, |
|
- | 1446 | uint64_t *val); |
|
- | 1447 | struct drm_crtc_state *intel_crtc_duplicate_state(struct drm_crtc *crtc); |
|
- | 1448 | void intel_crtc_destroy_state(struct drm_crtc *crtc, |
|
- | 1449 | struct drm_crtc_state *state); |
|
- | 1450 | struct drm_atomic_state *intel_atomic_state_alloc(struct drm_device *dev); |
|
- | 1451 | void intel_atomic_state_clear(struct drm_atomic_state *); |
|
- | 1452 | struct intel_shared_dpll_config * |
|
- | 1453 | intel_atomic_get_shared_dpll_state(struct drm_atomic_state *s); |
|
- | 1454 | ||
- | 1455 | static inline struct intel_crtc_state * |
|
- | 1456 | intel_atomic_get_crtc_state(struct drm_atomic_state *state, |
|
- | 1457 | struct intel_crtc *crtc) |
|
- | 1458 | { |
|
- | 1459 | struct drm_crtc_state *crtc_state; |
|
- | 1460 | crtc_state = drm_atomic_get_crtc_state(state, &crtc->base); |
|
- | 1461 | if (IS_ERR(crtc_state)) |
|
- | 1462 | return ERR_CAST(crtc_state); |
|
- | 1463 | ||
- | 1464 | return to_intel_crtc_state(crtc_state); |
|
- | 1465 | } |
|
- | 1466 | int intel_atomic_setup_scalers(struct drm_device *dev, |
|
- | 1467 | struct intel_crtc *intel_crtc, |
|
- | 1468 | struct intel_crtc_state *crtc_state); |
|
- | 1469 | ||
- | 1470 | /* intel_atomic_plane.c */ |
|
- | 1471 | struct intel_plane_state *intel_create_plane_state(struct drm_plane *plane); |
|
1199 | void intel_pipe_update_end(struct intel_crtc *crtc, u32 start_vbl_count); |
1472 | struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane); |