1/* 2 * Copyright (c) 2015-2016 Qlogic Corporation 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28#ifndef _BXE_IOCTL_H_ 29#define _BXE_IOCTL_H_ 30 31#include <sys/cdefs.h> 32__FBSDID("$FreeBSD$"); 33 34#include <sys/ioccom.h> 35 36 37struct bxe_grcdump { 38 uint16_t pci_func; 39 uint32_t grcdump_size; 40 void *grcdump; 41 uint32_t grcdump_dwords; 42}; 43typedef struct bxe_grcdump bxe_grcdump_t; 44 45#define BXE_DRV_NAME_LENGTH 32 46#define BXE_DRV_VERSION_LENGTH 32 47#define BXE_MFW_VERSION_LENGTH 32 48#define BXE_STORMFW_VERSION_LENGTH 32 49#define BXE_BUS_INFO_LENGTH 32 50 51struct bxe_drvinfo { 52 char drv_name[BXE_DRV_NAME_LENGTH]; 53 char drv_version[BXE_DRV_VERSION_LENGTH]; 54 char mfw_version[BXE_MFW_VERSION_LENGTH]; 55 char stormfw_version[BXE_STORMFW_VERSION_LENGTH]; 56 uint32_t eeprom_dump_len; /* in bytes */ 57 uint32_t reg_dump_len; /* in bytes */ 58 char bus_info[BXE_BUS_INFO_LENGTH]; 59}; 60typedef struct bxe_drvinfo bxe_drvinfo_t; 61 62struct bxe_dev_setting { 63 64 uint32_t supported; /* Features this interface supports */ 65 uint32_t advertising;/* Features this interface advertises */ 66 uint32_t speed; /* The forced speed, 10Mb, 100Mb, gigabit */ 67 uint32_t duplex; /* Duplex, half or full */ 68 uint32_t port; /* Which connector port */ 69 uint32_t phy_address;/* port number*/ 70 uint32_t autoneg; /* Enable or disable autonegotiation */ 71}; 72typedef struct bxe_dev_setting bxe_dev_setting_t; 73 74struct bxe_get_regs { 75 void *reg_buf; 76 uint32_t reg_buf_len; 77}; 78typedef struct bxe_get_regs bxe_get_regs_t; 79 80#define BXE_EEPROM_MAX_DATA_LEN 524288 81 82struct bxe_eeprom { 83 uint32_t eeprom_cmd; 84#define BXE_EEPROM_CMD_SET_EEPROM 0x01 85#define BXE_EEPROM_CMD_GET_EEPROM 0x02 86 87 void *eeprom_data; 88 uint32_t eeprom_offset; 89 uint32_t eeprom_data_len; 90 uint32_t eeprom_magic; 91}; 92typedef struct bxe_eeprom bxe_eeprom_t; 93 94struct bxe_reg_rdw { 95 uint32_t reg_cmd; 96#define BXE_READ_REG_CMD 0x01 97#define BXE_WRITE_REG_CMD 0x02 98 99 uint32_t reg_id; 100 uint32_t reg_val; 101 uint32_t reg_access_type; 102#define BXE_REG_ACCESS_DIRECT 0x01 103#define BXE_REG_ACCESS_INDIRECT 0x02 104}; 105 106typedef struct bxe_reg_rdw bxe_reg_rdw_t; 107 108struct bxe_pcicfg_rdw { 109 uint32_t cfg_cmd; 110#define BXE_READ_PCICFG 0x01 111#define BXE_WRITE_PCICFG 0x01 112 uint32_t cfg_id; 113 uint32_t cfg_val; 114 uint32_t cfg_width; 115}; 116 117typedef struct bxe_pcicfg_rdw bxe_pcicfg_rdw_t; 118 119struct bxe_perm_mac_addr { 120 char mac_addr_str[32]; 121}; 122 123typedef struct bxe_perm_mac_addr bxe_perm_mac_addr_t; 124 125 126/* 127 * Read grcdump size 128 */ 129#define BXE_GRC_DUMP_SIZE _IOWR('e', 1, bxe_grcdump_t) 130 131/* 132 * Read grcdump 133 */ 134#define BXE_GRC_DUMP _IOWR('e', 2, bxe_grcdump_t) 135 136/* 137 * Read driver info 138 */ 139#define BXE_DRV_INFO _IOR('e', 3, bxe_drvinfo_t) 140 141/* 142 * Read Device Setting 143 */ 144#define BXE_DEV_SETTING _IOR('e', 4, bxe_dev_setting_t) 145 146/* 147 * Get Registers 148 */ 149#define BXE_GET_REGS _IOR('e', 5, bxe_get_regs_t) 150 151/* 152 * Get/Set EEPROM 153 */ 154#define BXE_EEPROM _IOWR('e', 6, bxe_eeprom_t) 155 156/* 157 * read/write a register 158 */ 159#define BXE_RDW_REG _IOWR('e', 7, bxe_reg_rdw_t) 160 161/* 162 * read/write PCIcfg 163 */ 164#define BXE_RDW_PCICFG _IOWR('e', 8, bxe_reg_rdw_t) 165 166/* 167 * get permanent mac address 168 */ 169 170#define BXE_MAC_ADDR _IOWR('e', 9, bxe_perm_mac_addr_t) 171 172 173#endif /* #ifndef _QLNX_IOCTL_H_ */ 174