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