Contributors: 13
Author Tokens Token Proportion Commits Commit Proportion
Ville Syrjälä 163 65.73% 27 57.45%
Jani Nikula 39 15.73% 6 12.77%
Eric Anholt 14 5.65% 2 4.26%
Ander Conselvan de Oliveira 8 3.23% 2 4.26%
Thomas Zimmermann 7 2.82% 1 2.13%
Chris Wilson 3 1.21% 1 2.13%
Jesse Barnes 3 1.21% 1 2.13%
Ankit Nautiyal 2 0.81% 1 2.13%
Matt Roper 2 0.81% 1 2.13%
Animesh Manna 2 0.81% 1 2.13%
Dave Airlie 2 0.81% 2 4.26%
Imre Deak 2 0.81% 1 2.13%
Mario Kleiner 1 0.40% 1 2.13%
Total 248 47


/* SPDX-License-Identifier: MIT */
/*
 * Copyright © 2022-2023 Intel Corporation
 */

#ifndef __INTEL_VBLANK_H__
#define __INTEL_VBLANK_H__

#include <linux/ktime.h>
#include <linux/types.h>

struct drm_crtc;
struct drm_display_mode;
struct intel_atomic_state;
struct intel_crtc;
struct intel_crtc_state;

struct intel_vblank_evade_ctx {
	struct intel_crtc *crtc;
	int min, max, vblank_start;
	bool need_vlv_dsi_wa;
};

int intel_mode_vdisplay(const struct drm_display_mode *mode);
int intel_mode_vblank_start(const struct drm_display_mode *mode);
int intel_mode_vblank_end(const struct drm_display_mode *mode);
int intel_mode_vtotal(const struct drm_display_mode *mode);
int intel_mode_vblank_delay(const struct drm_display_mode *mode);

void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
			     const struct intel_crtc_state *new_crtc_state,
			     struct intel_vblank_evade_ctx *evade);
/* must be called with vblank interrupt already enabled! */
int intel_vblank_evade(struct intel_vblank_evade_ctx *evade);

u32 i915_get_vblank_counter(struct drm_crtc *crtc);
u32 g4x_get_vblank_counter(struct drm_crtc *crtc);
bool intel_crtc_get_vblank_timestamp(struct drm_crtc *crtc, int *max_error,
				     ktime_t *vblank_time, bool in_vblank_irq);
int intel_get_crtc_scanline(struct intel_crtc *crtc);
void intel_wait_for_pipe_scanline_stopped(struct intel_crtc *crtc);
void intel_wait_for_pipe_scanline_moving(struct intel_crtc *crtc);
void intel_crtc_update_active_timings(const struct intel_crtc_state *crtc_state,
				      bool vrr_enable);
int intel_crtc_scanline_offset(const struct intel_crtc_state *crtc_state);

const struct intel_crtc_state *
intel_pre_commit_crtc_state(struct intel_atomic_state *state,
			    struct intel_crtc *crtc);

int intel_crtc_vblank_length(const struct intel_crtc_state *crtc_state);

#endif /* __INTEL_VBLANK_H__ */