122851890Sopenharmony_ci/*
222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py,
322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants,
422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information.
522851890Sopenharmony_ci */
622851890Sopenharmony_ci#ifndef __LINUX_PUBLIC_GNTDEV_H__
722851890Sopenharmony_ci#define __LINUX_PUBLIC_GNTDEV_H__
822851890Sopenharmony_ci#include <linux/types.h>
922851890Sopenharmony_cistruct ioctl_gntdev_grant_ref {
1022851890Sopenharmony_ci
1122851890Sopenharmony_ci	__u32 domid;
1222851890Sopenharmony_ci
1322851890Sopenharmony_ci	__u32 ref;
1422851890Sopenharmony_ci};
1522851890Sopenharmony_ci#define IOCTL_GNTDEV_MAP_GRANT_REF \
1622851890Sopenharmony_ci_IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
1722851890Sopenharmony_cistruct ioctl_gntdev_map_grant_ref {
1822851890Sopenharmony_ci
1922851890Sopenharmony_ci
2022851890Sopenharmony_ci	__u32 count;
2122851890Sopenharmony_ci	__u32 pad;
2222851890Sopenharmony_ci
2322851890Sopenharmony_ci
2422851890Sopenharmony_ci	__u64 index;
2522851890Sopenharmony_ci
2622851890Sopenharmony_ci
2722851890Sopenharmony_ci	struct ioctl_gntdev_grant_ref refs[1];
2822851890Sopenharmony_ci};
2922851890Sopenharmony_ci#define IOCTL_GNTDEV_UNMAP_GRANT_REF \
3022851890Sopenharmony_ci_IOC(_IOC_NONE, 'G', 1, sizeof(struct ioctl_gntdev_unmap_grant_ref))
3122851890Sopenharmony_cistruct ioctl_gntdev_unmap_grant_ref {
3222851890Sopenharmony_ci
3322851890Sopenharmony_ci
3422851890Sopenharmony_ci	__u64 index;
3522851890Sopenharmony_ci
3622851890Sopenharmony_ci	__u32 count;
3722851890Sopenharmony_ci	__u32 pad;
3822851890Sopenharmony_ci};
3922851890Sopenharmony_ci#define IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR \
4022851890Sopenharmony_ci_IOC(_IOC_NONE, 'G', 2, sizeof(struct ioctl_gntdev_get_offset_for_vaddr))
4122851890Sopenharmony_cistruct ioctl_gntdev_get_offset_for_vaddr {
4222851890Sopenharmony_ci
4322851890Sopenharmony_ci
4422851890Sopenharmony_ci	__u64 vaddr;
4522851890Sopenharmony_ci
4622851890Sopenharmony_ci
4722851890Sopenharmony_ci	__u64 offset;
4822851890Sopenharmony_ci
4922851890Sopenharmony_ci	__u32 count;
5022851890Sopenharmony_ci	__u32 pad;
5122851890Sopenharmony_ci};
5222851890Sopenharmony_ci#define IOCTL_GNTDEV_SET_MAX_GRANTS \
5322851890Sopenharmony_ci_IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
5422851890Sopenharmony_cistruct ioctl_gntdev_set_max_grants {
5522851890Sopenharmony_ci
5622851890Sopenharmony_ci
5722851890Sopenharmony_ci	__u32 count;
5822851890Sopenharmony_ci};
5922851890Sopenharmony_ci#define IOCTL_GNTDEV_SET_UNMAP_NOTIFY \
6022851890Sopenharmony_ci_IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntdev_unmap_notify))
6122851890Sopenharmony_cistruct ioctl_gntdev_unmap_notify {
6222851890Sopenharmony_ci
6322851890Sopenharmony_ci
6422851890Sopenharmony_ci	__u64 index;
6522851890Sopenharmony_ci
6622851890Sopenharmony_ci	__u32 action;
6722851890Sopenharmony_ci
6822851890Sopenharmony_ci	__u32 event_channel_port;
6922851890Sopenharmony_ci};
7022851890Sopenharmony_cistruct gntdev_grant_copy_segment {
7122851890Sopenharmony_ci	union {
7222851890Sopenharmony_ci		void __user *virt;
7322851890Sopenharmony_ci		struct {
7422851890Sopenharmony_ci			grant_ref_t ref;
7522851890Sopenharmony_ci			__u16 offset;
7622851890Sopenharmony_ci			domid_t domid;
7722851890Sopenharmony_ci		} foreign;
7822851890Sopenharmony_ci	} source, dest;
7922851890Sopenharmony_ci	__u16 len;
8022851890Sopenharmony_ci	__u16 flags;
8122851890Sopenharmony_ci	__s16 status;
8222851890Sopenharmony_ci};
8322851890Sopenharmony_ci#define IOCTL_GNTDEV_GRANT_COPY \
8422851890Sopenharmony_ci	_IOC(_IOC_NONE, 'G', 8, sizeof(struct ioctl_gntdev_grant_copy))
8522851890Sopenharmony_cistruct ioctl_gntdev_grant_copy {
8622851890Sopenharmony_ci	unsigned int count;
8722851890Sopenharmony_ci	struct gntdev_grant_copy_segment __user *segments;
8822851890Sopenharmony_ci};
8922851890Sopenharmony_ci#define UNMAP_NOTIFY_CLEAR_BYTE 0x1
9022851890Sopenharmony_ci#define UNMAP_NOTIFY_SEND_EVENT 0x2
9122851890Sopenharmony_ci#define GNTDEV_DMA_FLAG_WC		(1 << 0)
9222851890Sopenharmony_ci#define GNTDEV_DMA_FLAG_COHERENT	(1 << 1)
9322851890Sopenharmony_ci#define IOCTL_GNTDEV_DMABUF_EXP_FROM_REFS \
9422851890Sopenharmony_ci	_IOC(_IOC_NONE, 'G', 9, \
9522851890Sopenharmony_ci	     sizeof(struct ioctl_gntdev_dmabuf_exp_from_refs))
9622851890Sopenharmony_cistruct ioctl_gntdev_dmabuf_exp_from_refs {
9722851890Sopenharmony_ci
9822851890Sopenharmony_ci
9922851890Sopenharmony_ci	__u32 flags;
10022851890Sopenharmony_ci
10122851890Sopenharmony_ci	__u32 count;
10222851890Sopenharmony_ci
10322851890Sopenharmony_ci
10422851890Sopenharmony_ci	__u32 fd;
10522851890Sopenharmony_ci
10622851890Sopenharmony_ci	__u32 domid;
10722851890Sopenharmony_ci
10822851890Sopenharmony_ci
10922851890Sopenharmony_ci	__u32 refs[1];
11022851890Sopenharmony_ci};
11122851890Sopenharmony_ci#define IOCTL_GNTDEV_DMABUF_EXP_WAIT_RELEASED \
11222851890Sopenharmony_ci	_IOC(_IOC_NONE, 'G', 10, \
11322851890Sopenharmony_ci	     sizeof(struct ioctl_gntdev_dmabuf_exp_wait_released))
11422851890Sopenharmony_cistruct ioctl_gntdev_dmabuf_exp_wait_released {
11522851890Sopenharmony_ci
11622851890Sopenharmony_ci	__u32 fd;
11722851890Sopenharmony_ci	__u32 wait_to_ms;
11822851890Sopenharmony_ci};
11922851890Sopenharmony_ci#define IOCTL_GNTDEV_DMABUF_IMP_TO_REFS \
12022851890Sopenharmony_ci	_IOC(_IOC_NONE, 'G', 11, \
12122851890Sopenharmony_ci	     sizeof(struct ioctl_gntdev_dmabuf_imp_to_refs))
12222851890Sopenharmony_cistruct ioctl_gntdev_dmabuf_imp_to_refs {
12322851890Sopenharmony_ci
12422851890Sopenharmony_ci
12522851890Sopenharmony_ci	__u32 fd;
12622851890Sopenharmony_ci
12722851890Sopenharmony_ci	__u32 count;
12822851890Sopenharmony_ci
12922851890Sopenharmony_ci	__u32 domid;
13022851890Sopenharmony_ci
13122851890Sopenharmony_ci	__u32 reserved;
13222851890Sopenharmony_ci
13322851890Sopenharmony_ci
13422851890Sopenharmony_ci	__u32 refs[1];
13522851890Sopenharmony_ci};
13622851890Sopenharmony_ci#define IOCTL_GNTDEV_DMABUF_IMP_RELEASE \
13722851890Sopenharmony_ci	_IOC(_IOC_NONE, 'G', 12, \
13822851890Sopenharmony_ci	     sizeof(struct ioctl_gntdev_dmabuf_imp_release))
13922851890Sopenharmony_cistruct ioctl_gntdev_dmabuf_imp_release {
14022851890Sopenharmony_ci
14122851890Sopenharmony_ci	__u32 fd;
14222851890Sopenharmony_ci	__u32 reserved;
14322851890Sopenharmony_ci};
14422851890Sopenharmony_ci#endif
145