1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright © 2023 Intel Corporation
4 */
5
6#ifndef __INTEL_DP_TUNNEL_H__
7#define __INTEL_DP_TUNNEL_H__
8
9#include <linux/errno.h>
10#include <linux/types.h>
11
12struct drm_i915_private;
13struct drm_connector_state;
14struct drm_modeset_acquire_ctx;
15
16struct intel_atomic_state;
17struct intel_connector;
18struct intel_crtc;
19struct intel_crtc_state;
20struct intel_dp;
21struct intel_encoder;
22struct intel_link_bw_limits;
23
24#if defined(CONFIG_DRM_I915_DP_TUNNEL) && defined(I915)
25
26int intel_dp_tunnel_detect(struct intel_dp *intel_dp, struct drm_modeset_acquire_ctx *ctx);
27void intel_dp_tunnel_disconnect(struct intel_dp *intel_dp);
28void intel_dp_tunnel_destroy(struct intel_dp *intel_dp);
29void intel_dp_tunnel_resume(struct intel_dp *intel_dp,
30 const struct intel_crtc_state *crtc_state,
31 bool dpcd_updated);
32void intel_dp_tunnel_suspend(struct intel_dp *intel_dp);
33
34bool intel_dp_tunnel_bw_alloc_is_enabled(struct intel_dp *intel_dp);
35
36void
37intel_dp_tunnel_atomic_cleanup_inherited_state(struct intel_atomic_state *state);
38
39int intel_dp_tunnel_atomic_compute_stream_bw(struct intel_atomic_state *state,
40 struct intel_dp *intel_dp,
41 const struct intel_connector *connector,
42 struct intel_crtc_state *crtc_state);
43void intel_dp_tunnel_atomic_clear_stream_bw(struct intel_atomic_state *state,
44 struct intel_crtc_state *crtc_state);
45
46int intel_dp_tunnel_atomic_add_state_for_crtc(struct intel_atomic_state *state,
47 struct intel_crtc *crtc);
48int intel_dp_tunnel_atomic_check_link(struct intel_atomic_state *state,
49 struct intel_link_bw_limits *limits);
50int intel_dp_tunnel_atomic_check_state(struct intel_atomic_state *state,
51 struct intel_dp *intel_dp,
52 struct intel_connector *connector);
53
54void intel_dp_tunnel_atomic_alloc_bw(struct intel_atomic_state *state);
55
56int intel_dp_tunnel_mgr_init(struct drm_i915_private *i915);
57void intel_dp_tunnel_mgr_cleanup(struct drm_i915_private *i915);
58
59#else
60
61static inline int
62intel_dp_tunnel_detect(struct intel_dp *intel_dp, struct drm_modeset_acquire_ctx *ctx)
63{
64 return -EOPNOTSUPP;
65}
66
67static inline void intel_dp_tunnel_disconnect(struct intel_dp *intel_dp) {}
68static inline void intel_dp_tunnel_destroy(struct intel_dp *intel_dp) {}
69static inline void intel_dp_tunnel_resume(struct intel_dp *intel_dp,
70 const struct intel_crtc_state *crtc_state,
71 bool dpcd_updated) {}
72static inline void intel_dp_tunnel_suspend(struct intel_dp *intel_dp) {}
73
74static inline bool intel_dp_tunnel_bw_alloc_is_enabled(struct intel_dp *intel_dp)
75{
76 return false;
77}
78
79static inline void
80intel_dp_tunnel_atomic_cleanup_inherited_state(struct intel_atomic_state *state) {}
81
82static inline int
83intel_dp_tunnel_atomic_compute_stream_bw(struct intel_atomic_state *state,
84 struct intel_dp *intel_dp,
85 const struct intel_connector *connector,
86 struct intel_crtc_state *crtc_state)
87{
88 return 0;
89}
90
91static inline void
92intel_dp_tunnel_atomic_clear_stream_bw(struct intel_atomic_state *state,
93 struct intel_crtc_state *crtc_state) {}
94
95static inline int
96intel_dp_tunnel_atomic_add_state_for_crtc(struct intel_atomic_state *state,
97 struct intel_crtc *crtc)
98{
99 return 0;
100}
101
102static inline int
103intel_dp_tunnel_atomic_check_link(struct intel_atomic_state *state,
104 struct intel_link_bw_limits *limits)
105{
106 return 0;
107}
108
109static inline int
110intel_dp_tunnel_atomic_check_state(struct intel_atomic_state *state,
111 struct intel_dp *intel_dp,
112 struct intel_connector *connector)
113{
114 return 0;
115}
116
117static inline int
118intel_dp_tunnel_atomic_alloc_bw(struct intel_atomic_state *state)
119{
120 return 0;
121}
122
123static inline int
124intel_dp_tunnel_mgr_init(struct drm_i915_private *i915)
125{
126 return 0;
127}
128
129static inline void intel_dp_tunnel_mgr_cleanup(struct drm_i915_private *i915) {}
130
131#endif /* CONFIG_DRM_I915_DP_TUNNEL */
132
133#endif /* __INTEL_DP_TUNNEL_H__ */
134

source code of linux/drivers/gpu/drm/i915/display/intel_dp_tunnel.h