xref: /freebsd/sys/dev/bnxt/bnxt_en/bnxt_ioctl.h (revision 35b53f8c989f62286aad075ef2e97bba358144f8)
1*35b53f8cSChandrakanth patil /*-
2*35b53f8cSChandrakanth patil  * Broadcom NetXtreme-C/E network driver.
3*35b53f8cSChandrakanth patil  *
4*35b53f8cSChandrakanth patil  * Copyright (c) 2016 Broadcom, All Rights Reserved.
5*35b53f8cSChandrakanth patil  * The term Broadcom refers to Broadcom Limited and/or its subsidiaries
6*35b53f8cSChandrakanth patil  *
7*35b53f8cSChandrakanth patil  * Redistribution and use in source and binary forms, with or without
8*35b53f8cSChandrakanth patil  * modification, are permitted provided that the following conditions
9*35b53f8cSChandrakanth patil  * are met:
10*35b53f8cSChandrakanth patil  * 1. Redistributions of source code must retain the above copyright
11*35b53f8cSChandrakanth patil  *    notice, this list of conditions and the following disclaimer.
12*35b53f8cSChandrakanth patil  * 2. Redistributions in binary form must reproduce the above copyright
13*35b53f8cSChandrakanth patil  *    notice, this list of conditions and the following disclaimer in the
14*35b53f8cSChandrakanth patil  *    documentation and/or other materials provided with the distribution.
15*35b53f8cSChandrakanth patil  *
16*35b53f8cSChandrakanth patil  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS'
17*35b53f8cSChandrakanth patil  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*35b53f8cSChandrakanth patil  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*35b53f8cSChandrakanth patil  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20*35b53f8cSChandrakanth patil  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21*35b53f8cSChandrakanth patil  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22*35b53f8cSChandrakanth patil  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23*35b53f8cSChandrakanth patil  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24*35b53f8cSChandrakanth patil  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25*35b53f8cSChandrakanth patil  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26*35b53f8cSChandrakanth patil  * THE POSSIBILITY OF SUCH DAMAGE.
27*35b53f8cSChandrakanth patil  */
28*35b53f8cSChandrakanth patil 
29*35b53f8cSChandrakanth patil #include <sys/cdefs.h>
30*35b53f8cSChandrakanth patil #ifndef _BNXT_IOCTL_H
31*35b53f8cSChandrakanth patil #define _BNXT_IOCTL_H
32*35b53f8cSChandrakanth patil 
33*35b53f8cSChandrakanth patil enum bnxt_ioctl_type {
34*35b53f8cSChandrakanth patil 	BNXT_HWRM_NVM_FIND_DIR_ENTRY,
35*35b53f8cSChandrakanth patil 	BNXT_HWRM_NVM_READ,
36*35b53f8cSChandrakanth patil 	BNXT_HWRM_FW_RESET,
37*35b53f8cSChandrakanth patil 	BNXT_HWRM_FW_QSTATUS,
38*35b53f8cSChandrakanth patil 	BNXT_HWRM_NVM_WRITE,
39*35b53f8cSChandrakanth patil 	BNXT_HWRM_NVM_ERASE_DIR_ENTRY,
40*35b53f8cSChandrakanth patil 	BNXT_HWRM_NVM_GET_DIR_INFO,
41*35b53f8cSChandrakanth patil 	BNXT_HWRM_NVM_GET_DIR_ENTRIES,
42*35b53f8cSChandrakanth patil 	BNXT_HWRM_NVM_MODIFY,
43*35b53f8cSChandrakanth patil 	BNXT_HWRM_NVM_VERIFY_UPDATE,
44*35b53f8cSChandrakanth patil 	BNXT_HWRM_NVM_INSTALL_UPDATE,
45*35b53f8cSChandrakanth patil 	BNXT_HWRM_FW_GET_TIME,
46*35b53f8cSChandrakanth patil 	BNXT_HWRM_FW_SET_TIME,
47*35b53f8cSChandrakanth patil };
48*35b53f8cSChandrakanth patil 
49*35b53f8cSChandrakanth patil struct bnxt_ioctl_header {
50*35b53f8cSChandrakanth patil 	enum bnxt_ioctl_type type;
51*35b53f8cSChandrakanth patil 	int		rc;
52*35b53f8cSChandrakanth patil };
53*35b53f8cSChandrakanth patil 
54*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_nvm_find_dir_entry {
55*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
56*35b53f8cSChandrakanth patil 	uint32_t	data_length;
57*35b53f8cSChandrakanth patil 	uint32_t	fw_ver;
58*35b53f8cSChandrakanth patil 	uint32_t	item_length;
59*35b53f8cSChandrakanth patil 	uint16_t	ext;
60*35b53f8cSChandrakanth patil 	uint16_t	index;
61*35b53f8cSChandrakanth patil 	uint16_t	ordinal;
62*35b53f8cSChandrakanth patil 	uint16_t	type;
63*35b53f8cSChandrakanth patil 	uint8_t		search_opt;
64*35b53f8cSChandrakanth patil 	bool		use_index;
65*35b53f8cSChandrakanth patil };
66*35b53f8cSChandrakanth patil 
67*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_nvm_read {
68*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
69*35b53f8cSChandrakanth patil 	uint8_t		*data;
70*35b53f8cSChandrakanth patil 	uint32_t	length;
71*35b53f8cSChandrakanth patil 	uint32_t	offset;
72*35b53f8cSChandrakanth patil 	uint16_t	index;
73*35b53f8cSChandrakanth patil };
74*35b53f8cSChandrakanth patil 
75*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_fw_reset {
76*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
77*35b53f8cSChandrakanth patil 	uint8_t		processor;
78*35b53f8cSChandrakanth patil 	uint8_t		selfreset;
79*35b53f8cSChandrakanth patil };
80*35b53f8cSChandrakanth patil 
81*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_fw_qstatus {
82*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
83*35b53f8cSChandrakanth patil 	uint8_t		processor;
84*35b53f8cSChandrakanth patil 	uint8_t		selfreset;
85*35b53f8cSChandrakanth patil };
86*35b53f8cSChandrakanth patil 
87*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_nvm_write {
88*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
89*35b53f8cSChandrakanth patil 	uint8_t		*data;
90*35b53f8cSChandrakanth patil 	uint32_t	data_length;
91*35b53f8cSChandrakanth patil 	uint32_t	item_length;
92*35b53f8cSChandrakanth patil 	uint16_t	attr;
93*35b53f8cSChandrakanth patil 	uint16_t	ext;
94*35b53f8cSChandrakanth patil 	uint16_t	index;
95*35b53f8cSChandrakanth patil 	uint16_t	option;
96*35b53f8cSChandrakanth patil 	uint16_t	ordinal;
97*35b53f8cSChandrakanth patil 	uint16_t	type;
98*35b53f8cSChandrakanth patil 	bool		keep;
99*35b53f8cSChandrakanth patil };
100*35b53f8cSChandrakanth patil 
101*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_nvm_erase_dir_entry {
102*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
103*35b53f8cSChandrakanth patil 	enum bnxt_ioctl_type type;
104*35b53f8cSChandrakanth patil 	int		rc;
105*35b53f8cSChandrakanth patil 	uint16_t	index;
106*35b53f8cSChandrakanth patil };
107*35b53f8cSChandrakanth patil 
108*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_nvm_get_dir_info {
109*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
110*35b53f8cSChandrakanth patil 	uint32_t	entries;
111*35b53f8cSChandrakanth patil 	uint32_t	entry_length;
112*35b53f8cSChandrakanth patil };
113*35b53f8cSChandrakanth patil 
114*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_nvm_get_dir_entries {
115*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
116*35b53f8cSChandrakanth patil 	uint8_t		*data;
117*35b53f8cSChandrakanth patil 	size_t		max_size;
118*35b53f8cSChandrakanth patil 	uint32_t	entries;
119*35b53f8cSChandrakanth patil 	uint32_t	entry_length;
120*35b53f8cSChandrakanth patil };
121*35b53f8cSChandrakanth patil 
122*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_nvm_install_update {
123*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
124*35b53f8cSChandrakanth patil 	uint64_t	installed_items;
125*35b53f8cSChandrakanth patil 	uint32_t	install_type;
126*35b53f8cSChandrakanth patil 	uint8_t		problem_item;
127*35b53f8cSChandrakanth patil 	uint8_t		reset_required;
128*35b53f8cSChandrakanth patil 	uint8_t		result;
129*35b53f8cSChandrakanth patil };
130*35b53f8cSChandrakanth patil 
131*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_nvm_verify_update {
132*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
133*35b53f8cSChandrakanth patil 	uint16_t	ext;
134*35b53f8cSChandrakanth patil 	uint16_t	ordinal;
135*35b53f8cSChandrakanth patil 	uint16_t	type;
136*35b53f8cSChandrakanth patil };
137*35b53f8cSChandrakanth patil 
138*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_nvm_modify {
139*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
140*35b53f8cSChandrakanth patil 	uint8_t		*data;
141*35b53f8cSChandrakanth patil 	uint32_t	length;
142*35b53f8cSChandrakanth patil 	uint32_t	offset;
143*35b53f8cSChandrakanth patil 	uint16_t	index;
144*35b53f8cSChandrakanth patil };
145*35b53f8cSChandrakanth patil 
146*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_fw_get_time {
147*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
148*35b53f8cSChandrakanth patil 	uint16_t	millisecond;
149*35b53f8cSChandrakanth patil 	uint16_t	year;
150*35b53f8cSChandrakanth patil 	uint16_t	zone;
151*35b53f8cSChandrakanth patil 	uint8_t		day;
152*35b53f8cSChandrakanth patil 	uint8_t		hour;
153*35b53f8cSChandrakanth patil 	uint8_t		minute;
154*35b53f8cSChandrakanth patil 	uint8_t		month;
155*35b53f8cSChandrakanth patil 	uint8_t		second;
156*35b53f8cSChandrakanth patil };
157*35b53f8cSChandrakanth patil 
158*35b53f8cSChandrakanth patil struct bnxt_ioctl_hwrm_fw_set_time {
159*35b53f8cSChandrakanth patil 	struct bnxt_ioctl_header hdr;
160*35b53f8cSChandrakanth patil 	uint16_t	millisecond;
161*35b53f8cSChandrakanth patil 	uint16_t	year;
162*35b53f8cSChandrakanth patil 	uint16_t	zone;
163*35b53f8cSChandrakanth patil 	uint8_t		day;
164*35b53f8cSChandrakanth patil 	uint8_t		hour;
165*35b53f8cSChandrakanth patil 	uint8_t		minute;
166*35b53f8cSChandrakanth patil 	uint8_t		month;
167*35b53f8cSChandrakanth patil 	uint8_t		second;
168*35b53f8cSChandrakanth patil };
169*35b53f8cSChandrakanth patil 
170*35b53f8cSChandrakanth patil /* IOCTL interface */
171*35b53f8cSChandrakanth patil struct bnxt_ioctl_data {
172*35b53f8cSChandrakanth patil 	union {
173*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_header			hdr;
174*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_nvm_find_dir_entry	find;
175*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_nvm_read			read;
176*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_fw_reset			reset;
177*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_fw_qstatus		status;
178*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_nvm_write		write;
179*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_nvm_erase_dir_entry	erase;
180*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_nvm_get_dir_info		dir_info;
181*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_nvm_get_dir_entries	dir_entries;
182*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_nvm_install_update	install;
183*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_nvm_verify_update	verify;
184*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_nvm_modify		modify;
185*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_fw_get_time		get_time;
186*35b53f8cSChandrakanth patil 		struct bnxt_ioctl_hwrm_fw_set_time		set_time;
187*35b53f8cSChandrakanth patil 	};
188*35b53f8cSChandrakanth patil };
189*35b53f8cSChandrakanth patil 
190*35b53f8cSChandrakanth patil #endif
191