0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #ifndef _INTEL_GVT_H_
0025 #define _INTEL_GVT_H_
0026
0027 #include <linux/types.h>
0028
0029 struct drm_i915_private;
0030
0031 #ifdef CONFIG_DRM_I915_GVT
0032
0033 struct intel_gvt_mmio_table_iter {
0034 struct drm_i915_private *i915;
0035 void *data;
0036 int (*handle_mmio_cb)(struct intel_gvt_mmio_table_iter *iter,
0037 u32 offset, u32 size);
0038 };
0039
0040 int intel_gvt_init(struct drm_i915_private *dev_priv);
0041 void intel_gvt_driver_remove(struct drm_i915_private *dev_priv);
0042 int intel_gvt_init_host(void);
0043 void intel_gvt_resume(struct drm_i915_private *dev_priv);
0044 int intel_gvt_iterate_mmio_table(struct intel_gvt_mmio_table_iter *iter);
0045
0046 struct intel_vgpu_ops {
0047 int (*init_device)(struct drm_i915_private *dev_priv);
0048 void (*clean_device)(struct drm_i915_private *dev_priv);
0049 void (*pm_resume)(struct drm_i915_private *i915);
0050 };
0051
0052 int intel_gvt_set_ops(const struct intel_vgpu_ops *ops);
0053 void intel_gvt_clear_ops(const struct intel_vgpu_ops *ops);
0054
0055 #else
0056 static inline int intel_gvt_init(struct drm_i915_private *dev_priv)
0057 {
0058 return 0;
0059 }
0060
0061 static inline void intel_gvt_driver_remove(struct drm_i915_private *dev_priv)
0062 {
0063 }
0064
0065 static inline void intel_gvt_resume(struct drm_i915_private *dev_priv)
0066 {
0067 }
0068
0069 struct intel_gvt_mmio_table_iter {
0070 };
0071
0072 static inline int intel_gvt_iterate_mmio_table(struct intel_gvt_mmio_table_iter *iter)
0073 {
0074 return 0;
0075 }
0076 #endif
0077
0078 #endif