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