xref: /openbsd-src/sys/dev/ic/nvmeio.h (revision 4e9514d60fb4d69f691e54fb93f4cf466d5cb97c)
1*4e9514d6Skrw /* $OpenBSD: nvmeio.h,v 1.1 2024/05/24 12:04:07 krw Exp $	*/
2*4e9514d6Skrw /*
3*4e9514d6Skrw  * Copyright (c) 2023 Kenneth R Westerback <krw@openbsd.org>
4*4e9514d6Skrw  *
5*4e9514d6Skrw  * Permission to use, copy, modify, and distribute this software for any
6*4e9514d6Skrw  * purpose with or without fee is hereby granted, provided that the above
7*4e9514d6Skrw  * copyright notice and this permission notice appear in all copies.
8*4e9514d6Skrw  *
9*4e9514d6Skrw  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*4e9514d6Skrw  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*4e9514d6Skrw  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*4e9514d6Skrw  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*4e9514d6Skrw  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*4e9514d6Skrw  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*4e9514d6Skrw  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*4e9514d6Skrw  */
17*4e9514d6Skrw 
18*4e9514d6Skrw #define NVME_PASSTHROUGH_CMD	_IOWR('n', 0, struct nvme_pt_cmd)
19*4e9514d6Skrw 
20*4e9514d6Skrw struct nvme_pt_status {
21*4e9514d6Skrw 	int			ps_dv_unit;
22*4e9514d6Skrw 	int			ps_nsid;
23*4e9514d6Skrw 	int			ps_flags;
24*4e9514d6Skrw 	uint32_t		ps_csts;
25*4e9514d6Skrw 	uint32_t		ps_cc;
26*4e9514d6Skrw };
27*4e9514d6Skrw 
28*4e9514d6Skrw struct nvme_pt_cmd {
29*4e9514d6Skrw 	/* Commands may arrive via /dev/bio. */
30*4e9514d6Skrw 	struct bio		pt_bio;
31*4e9514d6Skrw 
32*4e9514d6Skrw 	/* The sqe fields that the caller may specify. */
33*4e9514d6Skrw 	uint8_t			pt_opcode;
34*4e9514d6Skrw 	uint32_t		pt_nsid;
35*4e9514d6Skrw 	uint32_t		pt_cdw10;
36*4e9514d6Skrw 	uint32_t		pt_cdw11;
37*4e9514d6Skrw 	uint32_t		pt_cdw12;
38*4e9514d6Skrw 	uint32_t		pt_cdw13;
39*4e9514d6Skrw 	uint32_t		pt_cdw14;
40*4e9514d6Skrw 	uint32_t		pt_cdw15;
41*4e9514d6Skrw 
42*4e9514d6Skrw 	caddr_t			pt_status;
43*4e9514d6Skrw 	uint32_t		pt_statuslen;
44*4e9514d6Skrw 
45*4e9514d6Skrw 	caddr_t			pt_databuf;	/* User space address. */
46*4e9514d6Skrw 	uint32_t		pt_databuflen;	/* Length of buffer. */
47*4e9514d6Skrw };
48