Linux Audio

Check our new training course

Loading...
  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__ */