1#ifndef __NOUVEAU_SVM_H__
2#define __NOUVEAU_SVM_H__
3#include <nvif/os.h>
4struct drm_device;
5struct drm_file;
6struct nouveau_drm;
7
8struct nouveau_svmm;
9
10#if IS_ENABLED(CONFIG_DRM_NOUVEAU_SVM)
11void nouveau_svm_init(struct nouveau_drm *);
12void nouveau_svm_fini(struct nouveau_drm *);
13void nouveau_svm_suspend(struct nouveau_drm *);
14void nouveau_svm_resume(struct nouveau_drm *);
15
16int nouveau_svmm_init(struct drm_device *, void *, struct drm_file *);
17void nouveau_svmm_fini(struct nouveau_svmm **);
18int nouveau_svmm_join(struct nouveau_svmm *, u64 inst);
19void nouveau_svmm_part(struct nouveau_svmm *, u64 inst);
20int nouveau_svmm_bind(struct drm_device *, void *, struct drm_file *);
21#else
22static inline void nouveau_svm_init(struct nouveau_drm *drm) {}
23static inline void nouveau_svm_fini(struct nouveau_drm *drm) {}
24static inline void nouveau_svm_suspend(struct nouveau_drm *drm) {}
25static inline void nouveau_svm_resume(struct nouveau_drm *drm) {}
26
27static inline int nouveau_svmm_init(struct drm_device *device, void *p,
28 struct drm_file *file)
29{
30 return -ENOSYS;
31}
32
33static inline void nouveau_svmm_fini(struct nouveau_svmm **svmmp) {}
34
35static inline int nouveau_svmm_join(struct nouveau_svmm *svmm, u64 inst)
36{
37 return 0;
38}
39
40static inline void nouveau_svmm_part(struct nouveau_svmm *svmm, u64 inst) {}
41
42static inline int nouveau_svmm_bind(struct drm_device *device, void *p,
43 struct drm_file *file)
44{
45 return -ENOSYS;
46}
47#endif
48#endif
49