Merge tag 'platform-drivers-x86-v6.0-1' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-block.git] / drivers / gpu / drm / i915 / intel_pm.h
CommitLineData
696173b0
JN
1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright © 2019 Intel Corporation
4 */
5
6#ifndef __INTEL_PM_H__
7#define __INTEL_PM_H__
8
9#include <linux/types.h>
10
47a14955 11#include "display/intel_display.h"
3cf43cdc
VS
12#include "display/intel_global_state.h"
13
47a14955 14#include "i915_drv.h"
ecbb5fb7 15
696173b0
JN
16struct drm_device;
17struct drm_i915_private;
18struct i915_request;
855e0d68 19struct intel_atomic_state;
8e6b13a7 20struct intel_bw_state;
696173b0
JN
21struct intel_crtc;
22struct intel_crtc_state;
23struct intel_plane;
696173b0
JN
24struct skl_ddb_entry;
25struct skl_pipe_wm;
26struct skl_wm_level;
27
28void intel_init_clock_gating(struct drm_i915_private *dev_priv);
29void intel_suspend_hw(struct drm_i915_private *dev_priv);
30int ilk_wm_max_level(const struct drm_i915_private *dev_priv);
696173b0
JN
31void intel_init_pm(struct drm_i915_private *dev_priv);
32void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv);
33void intel_pm_setup(struct drm_i915_private *dev_priv);
696173b0
JN
34void g4x_wm_get_hw_state(struct drm_i915_private *dev_priv);
35void vlv_wm_get_hw_state(struct drm_i915_private *dev_priv);
36void ilk_wm_get_hw_state(struct drm_i915_private *dev_priv);
37void skl_wm_get_hw_state(struct drm_i915_private *dev_priv);
88436dec
JN
38void intel_wm_state_verify(struct intel_crtc *crtc,
39 struct intel_crtc_state *new_crtc_state);
0f0f9aee 40u8 intel_enabled_dbuf_slices_mask(struct drm_i915_private *dev_priv);
cd191546 41void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv);
cd191546
SL
42u32 skl_ddb_dbuf_slice_mask(struct drm_i915_private *dev_priv,
43 const struct skl_ddb_entry *entry);
696173b0
JN
44void g4x_wm_sanitize(struct drm_i915_private *dev_priv);
45void vlv_wm_sanitize(struct drm_i915_private *dev_priv);
15512021 46void skl_wm_sanitize(struct drm_i915_private *dev_priv);
d8d5afe3
SL
47bool intel_can_enable_sagv(struct drm_i915_private *dev_priv,
48 const struct intel_bw_state *bw_state);
680e1af7
SL
49void intel_sagv_pre_plane_update(struct intel_atomic_state *state);
50void intel_sagv_post_plane_update(struct intel_atomic_state *state);
696173b0
JN
51bool skl_ddb_allocation_overlaps(const struct skl_ddb_entry *ddb,
52 const struct skl_ddb_entry *entries,
53 int num_entries, int ignore_idx);
54void skl_write_plane_wm(struct intel_plane *plane,
55 const struct intel_crtc_state *crtc_state);
56void skl_write_cursor_wm(struct intel_plane *plane,
57 const struct intel_crtc_state *crtc_state);
60aca574 58bool ilk_disable_lp_wm(struct drm_i915_private *dev_priv);
696173b0
JN
59void intel_init_ipc(struct drm_i915_private *dev_priv);
60void intel_enable_ipc(struct drm_i915_private *dev_priv);
61
d13616db 62bool intel_set_memory_cxsr(struct drm_i915_private *dev_priv, bool enable);
ecbb5fb7 63
3cf43cdc
VS
64struct intel_dbuf_state {
65 struct intel_global_state base;
66
47a14955 67 struct skl_ddb_entry ddb[I915_MAX_PIPES];
ef79d62b
VS
68 unsigned int weight[I915_MAX_PIPES];
69 u8 slices[I915_MAX_PIPES];
3cf43cdc
VS
70 u8 enabled_slices;
71 u8 active_pipes;
f4dc0086 72 bool joined_mbus;
3cf43cdc
VS
73};
74
3cf43cdc
VS
75struct intel_dbuf_state *
76intel_atomic_get_dbuf_state(struct intel_atomic_state *state);
77
78#define to_intel_dbuf_state(x) container_of((x), struct intel_dbuf_state, base)
79#define intel_atomic_get_old_dbuf_state(state) \
80 to_intel_dbuf_state(intel_atomic_get_old_global_obj_state(state, &to_i915(state->base.dev)->dbuf.obj))
81#define intel_atomic_get_new_dbuf_state(state) \
82 to_intel_dbuf_state(intel_atomic_get_new_global_obj_state(state, &to_i915(state->base.dev)->dbuf.obj))
83
84int intel_dbuf_init(struct drm_i915_private *dev_priv);
c7c0e7eb
VS
85void intel_dbuf_pre_plane_update(struct intel_atomic_state *state);
86void intel_dbuf_post_plane_update(struct intel_atomic_state *state);
47e794d6 87void intel_mbus_dbox_update(struct intel_atomic_state *state);
3cf43cdc 88
696173b0 89#endif /* __INTEL_PM_H__ */