mirror of
https://github.com/torvalds/linux.git
synced 2026-05-21 13:27:57 +02:00
drm/i915/crtc: un-inline some crtc functions and move to intel_crtc.[ch]
Move a number of crtc/pipe related functions to intel_crtc.[ch], and un-inline to avoid looking into struct drm_i915_private guts in header files. Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/c0be2adc4a7f7e72a47e12a57f742aaa42b813e6.1638366969.git.jani.nikula@intel.com
This commit is contained in:
parent
2ebc9e4af0
commit
92e9624ad9
|
|
@ -36,6 +36,48 @@ static void assert_vblank_disabled(struct drm_crtc *crtc)
|
|||
drm_crtc_vblank_put(crtc);
|
||||
}
|
||||
|
||||
bool intel_pipe_valid(struct drm_i915_private *i915, enum pipe pipe)
|
||||
{
|
||||
return (pipe >= 0 &&
|
||||
pipe < ARRAY_SIZE(i915->pipe_to_crtc_mapping) &&
|
||||
INTEL_INFO(i915)->pipe_mask & BIT(pipe) &&
|
||||
i915->pipe_to_crtc_mapping[pipe]);
|
||||
}
|
||||
|
||||
struct intel_crtc *intel_get_first_crtc(struct drm_i915_private *i915)
|
||||
{
|
||||
return to_intel_crtc(drm_crtc_from_index(&i915->drm, 0));
|
||||
}
|
||||
|
||||
struct intel_crtc *intel_crtc_for_pipe(struct drm_i915_private *i915,
|
||||
enum pipe pipe)
|
||||
{
|
||||
/* pipe_to_crtc_mapping may have hole on any of 3 display pipe system */
|
||||
drm_WARN_ON(&i915->drm,
|
||||
!(INTEL_INFO(i915)->pipe_mask & BIT(pipe)));
|
||||
return i915->pipe_to_crtc_mapping[pipe];
|
||||
}
|
||||
|
||||
struct intel_crtc *intel_crtc_for_plane(struct drm_i915_private *i915,
|
||||
enum i9xx_plane_id plane)
|
||||
{
|
||||
return i915->plane_to_crtc_mapping[plane];
|
||||
}
|
||||
|
||||
void intel_crtc_wait_for_next_vblank(struct intel_crtc *crtc)
|
||||
{
|
||||
drm_crtc_wait_one_vblank(&crtc->base);
|
||||
}
|
||||
|
||||
void intel_wait_for_vblank_if_active(struct drm_i915_private *i915,
|
||||
enum pipe pipe)
|
||||
{
|
||||
struct intel_crtc *crtc = intel_crtc_for_pipe(i915, pipe);
|
||||
|
||||
if (crtc->active)
|
||||
intel_crtc_wait_for_next_vblank(crtc);
|
||||
}
|
||||
|
||||
u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc)
|
||||
{
|
||||
struct drm_device *dev = crtc->base.dev;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum i9xx_plane_id;
|
||||
enum pipe;
|
||||
struct drm_display_mode;
|
||||
struct drm_i915_private;
|
||||
|
|
@ -28,5 +29,14 @@ void intel_crtc_vblank_off(const struct intel_crtc_state *crtc_state);
|
|||
void intel_pipe_update_start(struct intel_crtc_state *new_crtc_state);
|
||||
void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state);
|
||||
void intel_wait_for_vblank_workers(struct intel_atomic_state *state);
|
||||
bool intel_pipe_valid(struct drm_i915_private *i915, enum pipe pipe);
|
||||
struct intel_crtc *intel_get_first_crtc(struct drm_i915_private *i915);
|
||||
struct intel_crtc *intel_crtc_for_pipe(struct drm_i915_private *i915,
|
||||
enum pipe pipe);
|
||||
struct intel_crtc *intel_crtc_for_plane(struct drm_i915_private *i915,
|
||||
enum i9xx_plane_id plane);
|
||||
void intel_wait_for_vblank_if_active(struct drm_i915_private *i915,
|
||||
enum pipe pipe);
|
||||
void intel_crtc_wait_for_next_vblank(struct intel_crtc *crtc);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1773,35 +1773,6 @@ vlv_pipe_to_channel(enum pipe pipe)
|
|||
}
|
||||
}
|
||||
|
||||
static inline bool intel_pipe_valid(struct drm_i915_private *i915, enum pipe pipe)
|
||||
{
|
||||
return (pipe >= 0 &&
|
||||
pipe < ARRAY_SIZE(i915->pipe_to_crtc_mapping) &&
|
||||
INTEL_INFO(i915)->pipe_mask & BIT(pipe) &&
|
||||
i915->pipe_to_crtc_mapping[pipe]);
|
||||
}
|
||||
|
||||
static inline struct intel_crtc *
|
||||
intel_get_first_crtc(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
return to_intel_crtc(drm_crtc_from_index(&dev_priv->drm, 0));
|
||||
}
|
||||
|
||||
static inline struct intel_crtc *
|
||||
intel_crtc_for_pipe(struct drm_i915_private *dev_priv, enum pipe pipe)
|
||||
{
|
||||
/* pipe_to_crtc_mapping may have hole on any of 3 display pipe system */
|
||||
drm_WARN_ON(&dev_priv->drm,
|
||||
!(INTEL_INFO(dev_priv)->pipe_mask & BIT(pipe)));
|
||||
return dev_priv->pipe_to_crtc_mapping[pipe];
|
||||
}
|
||||
|
||||
static inline struct intel_crtc *
|
||||
intel_crtc_for_plane(struct drm_i915_private *dev_priv, enum i9xx_plane_id plane)
|
||||
{
|
||||
return dev_priv->plane_to_crtc_mapping[plane];
|
||||
}
|
||||
|
||||
struct intel_load_detect_pipe {
|
||||
struct drm_atomic_state *restore_state;
|
||||
};
|
||||
|
|
@ -2019,21 +1990,6 @@ intel_crtc_needs_modeset(const struct intel_crtc_state *crtc_state)
|
|||
return drm_atomic_crtc_needs_modeset(&crtc_state->uapi);
|
||||
}
|
||||
|
||||
static inline void
|
||||
intel_crtc_wait_for_next_vblank(struct intel_crtc *crtc)
|
||||
{
|
||||
drm_crtc_wait_one_vblank(&crtc->base);
|
||||
}
|
||||
|
||||
static inline void
|
||||
intel_wait_for_vblank_if_active(struct drm_i915_private *dev_priv, enum pipe pipe)
|
||||
{
|
||||
struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe);
|
||||
|
||||
if (crtc->active)
|
||||
intel_crtc_wait_for_next_vblank(crtc);
|
||||
}
|
||||
|
||||
static inline bool intel_modifier_uses_dpt(struct drm_i915_private *i915, u64 modifier)
|
||||
{
|
||||
return DISPLAY_VER(i915) >= 13 && modifier != DRM_FORMAT_MOD_LINEAR;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user