1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright �� 2020 Intel Corporation
4 */
5
6#ifndef _INTEL_FDI_H_
7#define _INTEL_FDI_H_
8
9#include <linux/types.h>
10
11enum pipe;
12struct drm_i915_private;
13struct intel_atomic_state;
14struct intel_crtc;
15struct intel_crtc_state;
16struct intel_encoder;
17struct intel_link_bw_limits;
18
19int intel_fdi_add_affected_crtcs(struct intel_atomic_state *state);
20int intel_fdi_link_freq(struct drm_i915_private *i915,
21			const struct intel_crtc_state *pipe_config);
22bool intel_fdi_compute_pipe_bpp(struct intel_crtc_state *crtc_state);
23int ilk_fdi_compute_config(struct intel_crtc *intel_crtc,
24			   struct intel_crtc_state *pipe_config);
25int intel_fdi_atomic_check_link(struct intel_atomic_state *state,
26				struct intel_link_bw_limits *limits);
27void intel_fdi_normal_train(struct intel_crtc *crtc);
28void ilk_fdi_disable(struct intel_crtc *crtc);
29void ilk_fdi_pll_disable(struct intel_crtc *intel_crtc);
30void ilk_fdi_pll_enable(const struct intel_crtc_state *crtc_state);
31void intel_fdi_init_hook(struct drm_i915_private *dev_priv);
32void hsw_fdi_link_train(struct intel_encoder *encoder,
33			const struct intel_crtc_state *crtc_state);
34void hsw_fdi_disable(struct intel_encoder *encoder);
35void intel_fdi_pll_freq_update(struct drm_i915_private *i915);
36
37void intel_fdi_link_train(struct intel_crtc *crtc,
38			  const struct intel_crtc_state *crtc_state);
39
40void assert_fdi_tx_enabled(struct drm_i915_private *i915, enum pipe pipe);
41void assert_fdi_tx_disabled(struct drm_i915_private *i915, enum pipe pipe);
42void assert_fdi_rx_enabled(struct drm_i915_private *i915, enum pipe pipe);
43void assert_fdi_rx_disabled(struct drm_i915_private *i915, enum pipe pipe);
44void assert_fdi_tx_pll_enabled(struct drm_i915_private *i915, enum pipe pipe);
45void assert_fdi_rx_pll_enabled(struct drm_i915_private *i915, enum pipe pipe);
46void assert_fdi_rx_pll_disabled(struct drm_i915_private *i915, enum pipe pipe);
47
48#endif
49