master
1/* SPDX-License-Identifier: MIT */
2
3#ifndef __NOVA_DRM_H__
4#define __NOVA_DRM_H__
5
6#include "drm.h"
7
8/* DISCLAIMER: Do not use, this is not a stable uAPI.
9 *
10 * This uAPI serves only testing purposes as long as this driver is still in
11 * development. It is required to implement and test infrastructure which is
12 * upstreamed in the context of this driver. See also [1].
13 *
14 * [1] https://lore.kernel.org/dri-devel/Zfsj0_tb-0-tNrJy@cassiopeiae/T/#u
15 */
16
17#if defined(__cplusplus)
18extern "C" {
19#endif
20
21/*
22 * NOVA_GETPARAM_VRAM_BAR_SIZE
23 *
24 * Query the VRAM BAR size in bytes.
25 */
26#define NOVA_GETPARAM_VRAM_BAR_SIZE 0x1
27
28/**
29 * struct drm_nova_getparam - query GPU and driver metadata
30 */
31struct drm_nova_getparam {
32 /**
33 * @param: The identifier of the parameter to query.
34 */
35 __u64 param;
36
37 /**
38 * @value: The value for the specified parameter.
39 */
40 __u64 value;
41};
42
43/**
44 * struct drm_nova_gem_create - create a new DRM GEM object
45 */
46struct drm_nova_gem_create {
47 /**
48 * @handle: The handle of the new DRM GEM object.
49 */
50 __u32 handle;
51
52 /**
53 * @pad: 32 bit padding, should be 0.
54 */
55 __u32 pad;
56
57 /**
58 * @size: The size of the new DRM GEM object.
59 */
60 __u64 size;
61};
62
63/**
64 * struct drm_nova_gem_info - query DRM GEM object metadata
65 */
66struct drm_nova_gem_info {
67 /**
68 * @handle: The handle of the DRM GEM object to query.
69 */
70 __u32 handle;
71
72 /**
73 * @pad: 32 bit padding, should be 0.
74 */
75 __u32 pad;
76
77 /**
78 * @size: The size of the DRM GEM obejct.
79 */
80 __u64 size;
81};
82
83#define DRM_NOVA_GETPARAM 0x00
84#define DRM_NOVA_GEM_CREATE 0x01
85#define DRM_NOVA_GEM_INFO 0x02
86
87/* Note: this is an enum so that it can be resolved by Rust bindgen. */
88enum {
89 DRM_IOCTL_NOVA_GETPARAM = DRM_IOWR(DRM_COMMAND_BASE + DRM_NOVA_GETPARAM,
90 struct drm_nova_getparam),
91 DRM_IOCTL_NOVA_GEM_CREATE = DRM_IOWR(DRM_COMMAND_BASE + DRM_NOVA_GEM_CREATE,
92 struct drm_nova_gem_create),
93 DRM_IOCTL_NOVA_GEM_INFO = DRM_IOWR(DRM_COMMAND_BASE + DRM_NOVA_GEM_INFO,
94 struct drm_nova_gem_info),
95};
96
97#if defined(__cplusplus)
98}
99#endif
100
101#endif /* __NOVA_DRM_H__ */