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