1178172Simp/* SPDX-License-Identifier: MIT */
2178172Simp/*
3178172Simp * Copyright �� 2020 Intel Corporation
4178172Simp */
5178172Simp
6178172Simp#ifndef _INTEL_DPLL_H_
7178172Simp#define _INTEL_DPLL_H_
8178172Simp
9178172Simp#include <linux/types.h>
10178172Simp
11178172Simpstruct dpll;
12178172Simpstruct drm_i915_private;
13178172Simpstruct intel_atomic_state;
14178172Simpstruct intel_crtc;
15178172Simpstruct intel_crtc_state;
16178172Simpenum pipe;
17178172Simp
18178172Simpvoid intel_dpll_init_clock_hook(struct drm_i915_private *dev_priv);
19178172Simpint intel_dpll_crtc_compute_clock(struct intel_atomic_state *state,
20178172Simp				  struct intel_crtc *crtc);
21178172Simpint intel_dpll_crtc_get_shared_dpll(struct intel_atomic_state *state,
22178172Simp				    struct intel_crtc *crtc);
23178172Simpint i9xx_calc_dpll_params(int refclk, struct dpll *clock);
24178172Simpu32 i9xx_dpll_compute_fp(const struct dpll *dpll);
25178172Simpvoid vlv_compute_dpll(struct intel_crtc_state *crtc_state);
26178172Simpvoid chv_compute_dpll(struct intel_crtc_state *crtc_state);
27178172Simp
28178172Simpint vlv_force_pll_on(struct drm_i915_private *dev_priv, enum pipe pipe,
29178172Simp		     const struct dpll *dpll);
30178172Simpvoid vlv_force_pll_off(struct drm_i915_private *dev_priv, enum pipe pipe);
31178172Simp
32178172Simpvoid chv_enable_pll(const struct intel_crtc_state *crtc_state);
33178172Simpvoid chv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe);
34178172Simpvoid vlv_enable_pll(const struct intel_crtc_state *crtc_state);
35178172Simpvoid vlv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe);
36178172Simpvoid i9xx_enable_pll(const struct intel_crtc_state *crtc_state);
37178172Simpvoid i9xx_disable_pll(const struct intel_crtc_state *crtc_state);
38178172Simpbool bxt_find_best_dpll(struct intel_crtc_state *crtc_state,
39178172Simp			struct dpll *best_clock);
40178172Simpint chv_calc_dpll_params(int refclk, struct dpll *pll_clock);
41178172Simp
42178172Simpvoid i9xx_crtc_clock_get(struct intel_crtc *crtc,
43178172Simp			 struct intel_crtc_state *pipe_config);
44178172Simpvoid vlv_crtc_clock_get(struct intel_crtc *crtc,
45178172Simp			struct intel_crtc_state *pipe_config);
46178172Simpvoid chv_crtc_clock_get(struct intel_crtc *crtc,
47178172Simp			struct intel_crtc_state *pipe_config);
48178172Simp
49178172Simpvoid assert_pll_enabled(struct drm_i915_private *i915, enum pipe pipe);
50178172Simpvoid assert_pll_disabled(struct drm_i915_private *i915, enum pipe pipe);
51178172Simp
52178172Simp#endif
53178172Simp