cpp-d1064d
[cross.git] / i686-linux-gnu-4.7 / usr / include / linux / nvme_ioctl.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 /*
3  * Definitions for the NVM Express ioctl interface
4  * Copyright (c) 2011-2014, Intel Corporation.
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms and conditions of the GNU General Public License,
8  * version 2, as published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13  * more details.
14  */
15
16 #ifndef _LINUX_NVME_IOCTL_H
17 #define _LINUX_NVME_IOCTL_H
18
19 #include <linux/types.h>
20
21 struct nvme_user_io {
22         __u8    opcode;
23         __u8    flags;
24         __u16   control;
25         __u16   nblocks;
26         __u16   rsvd;
27         __u64   metadata;
28         __u64   addr;
29         __u64   slba;
30         __u32   dsmgmt;
31         __u32   reftag;
32         __u16   apptag;
33         __u16   appmask;
34 };
35
36 struct nvme_passthru_cmd {
37         __u8    opcode;
38         __u8    flags;
39         __u16   rsvd1;
40         __u32   nsid;
41         __u32   cdw2;
42         __u32   cdw3;
43         __u64   metadata;
44         __u64   addr;
45         __u32   metadata_len;
46         __u32   data_len;
47         __u32   cdw10;
48         __u32   cdw11;
49         __u32   cdw12;
50         __u32   cdw13;
51         __u32   cdw14;
52         __u32   cdw15;
53         __u32   timeout_ms;
54         __u32   result;
55 };
56
57 #define nvme_admin_cmd nvme_passthru_cmd
58
59 #define NVME_IOCTL_ID           _IO('N', 0x40)
60 #define NVME_IOCTL_ADMIN_CMD    _IOWR('N', 0x41, struct nvme_admin_cmd)
61 #define NVME_IOCTL_SUBMIT_IO    _IOW('N', 0x42, struct nvme_user_io)
62 #define NVME_IOCTL_IO_CMD       _IOWR('N', 0x43, struct nvme_passthru_cmd)
63 #define NVME_IOCTL_RESET        _IO('N', 0x44)
64 #define NVME_IOCTL_SUBSYS_RESET _IO('N', 0x45)
65 #define NVME_IOCTL_RESCAN       _IO('N', 0x46)
66
67 #endif /* _LINUX_NVME_IOCTL_H */