1fbf756c3SDave Airlie /* SPDX-License-Identifier: MIT */
2fbf756c3SDave Airlie /*
3fbf756c3SDave Airlie  * Copyright © 2020 Intel Corporation
4fbf756c3SDave Airlie  */
5fbf756c3SDave Airlie 
6fbf756c3SDave Airlie #ifndef _INTEL_CRTC_H_
7fbf756c3SDave Airlie #define _INTEL_CRTC_H_
8fbf756c3SDave Airlie 
9fbf756c3SDave Airlie #include <linux/types.h>
10fbf756c3SDave Airlie 
1192e9624aSJani Nikula enum i9xx_plane_id;
12fbf756c3SDave Airlie enum pipe;
1309f8fe4cSVille Syrjälä struct drm_display_mode;
14fbf756c3SDave Airlie struct drm_i915_private;
152bbc6fcaSVille Syrjälä struct intel_atomic_state;
16fbf756c3SDave Airlie struct intel_crtc;
17fbf756c3SDave Airlie struct intel_crtc_state;
18fbf756c3SDave Airlie 
1909f8fe4cSVille Syrjälä int intel_usecs_to_scanlines(const struct drm_display_mode *adjusted_mode,
2009f8fe4cSVille Syrjälä 			     int usecs);
21fbf756c3SDave Airlie u32 intel_crtc_max_vblank_count(const struct intel_crtc_state *crtc_state);
22fbf756c3SDave Airlie int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe);
23fbf756c3SDave Airlie struct intel_crtc_state *intel_crtc_state_alloc(struct intel_crtc *crtc);
24fbf756c3SDave Airlie void intel_crtc_state_reset(struct intel_crtc_state *crtc_state,
25fbf756c3SDave Airlie 			    struct intel_crtc *crtc);
267c53e628SJani Nikula u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc);
277c53e628SJani Nikula void intel_crtc_vblank_on(const struct intel_crtc_state *crtc_state);
287c53e628SJani Nikula void intel_crtc_vblank_off(const struct intel_crtc_state *crtc_state);
292bbc6fcaSVille Syrjälä void intel_pipe_update_start(struct intel_crtc_state *new_crtc_state);
3009f8fe4cSVille Syrjälä void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state);
312bbc6fcaSVille Syrjälä void intel_wait_for_vblank_workers(struct intel_atomic_state *state);
32*7d41745aSVille Syrjälä struct intel_crtc *intel_first_crtc(struct drm_i915_private *i915);
3392e9624aSJani Nikula struct intel_crtc *intel_crtc_for_pipe(struct drm_i915_private *i915,
3492e9624aSJani Nikula 				       enum pipe pipe);
3592e9624aSJani Nikula void intel_wait_for_vblank_if_active(struct drm_i915_private *i915,
3692e9624aSJani Nikula 				     enum pipe pipe);
3792e9624aSJani Nikula void intel_crtc_wait_for_next_vblank(struct intel_crtc *crtc);
38fbf756c3SDave Airlie 
39fbf756c3SDave Airlie #endif
40