1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * QLogic iSCSI HBA Driver 4 * Copyright (c) 2003-2013 QLogic Corporation 5 */ 6 7 #ifndef _QL4XNVRM_H_ 8 #define _QL4XNVRM_H_ 9 10 /** 11 * AM29LV Flash definitions 12 **/ 13 #define FM93C56A_SIZE_8 0x100 14 #define FM93C56A_SIZE_16 0x80 15 #define FM93C66A_SIZE_8 0x200 16 #define FM93C66A_SIZE_16 0x100/* 4010 */ 17 #define FM93C86A_SIZE_16 0x400/* 4022 */ 18 19 #define FM93C56A_START 0x1 20 21 /* Commands */ 22 #define FM93C56A_READ 0x2 23 #define FM93C56A_WEN 0x0 24 #define FM93C56A_WRITE 0x1 25 #define FM93C56A_WRITE_ALL 0x0 26 #define FM93C56A_WDS 0x0 27 #define FM93C56A_ERASE 0x3 28 #define FM93C56A_ERASE_ALL 0x0 29 30 /* Command Extensions */ 31 #define FM93C56A_WEN_EXT 0x3 32 #define FM93C56A_WRITE_ALL_EXT 0x1 33 #define FM93C56A_WDS_EXT 0x0 34 #define FM93C56A_ERASE_ALL_EXT 0x2 35 36 /* Address Bits */ 37 #define FM93C56A_NO_ADDR_BITS_16 8 /* 4010 */ 38 #define FM93C56A_NO_ADDR_BITS_8 9 /* 4010 */ 39 #define FM93C86A_NO_ADDR_BITS_16 10 /* 4022 */ 40 41 /* Data Bits */ 42 #define FM93C56A_DATA_BITS_16 16 43 #define FM93C56A_DATA_BITS_8 8 44 45 /* Special Bits */ 46 #define FM93C56A_READ_DUMMY_BITS 1 47 #define FM93C56A_READY 0 48 #define FM93C56A_BUSY 1 49 #define FM93C56A_CMD_BITS 2 50 51 /* Auburn Bits */ 52 #define AUBURN_EEPROM_DI 0x8 53 #define AUBURN_EEPROM_DI_0 0x0 54 #define AUBURN_EEPROM_DI_1 0x8 55 #define AUBURN_EEPROM_DO 0x4 56 #define AUBURN_EEPROM_DO_0 0x0 57 #define AUBURN_EEPROM_DO_1 0x4 58 #define AUBURN_EEPROM_CS 0x2 59 #define AUBURN_EEPROM_CS_0 0x0 60 #define AUBURN_EEPROM_CS_1 0x2 61 #define AUBURN_EEPROM_CLK_RISE 0x1 62 #define AUBURN_EEPROM_CLK_FALL 0x0 63 64 /**/ 65 /* EEPROM format */ 66 /**/ 67 struct bios_params { 68 uint16_t SpinUpDelay:1; 69 uint16_t BIOSDisable:1; 70 uint16_t MMAPEnable:1; 71 uint16_t BootEnable:1; 72 uint16_t Reserved0:12; 73 uint8_t bootID0:7; 74 uint8_t bootID0Valid:1; 75 uint8_t bootLUN0[8]; 76 uint8_t bootID1:7; 77 uint8_t bootID1Valid:1; 78 uint8_t bootLUN1[8]; 79 uint16_t MaxLunsPerTarget; 80 uint8_t Reserved1[10]; 81 }; 82 83 struct eeprom_port_cfg { 84 85 /* MTU MAC 0 */ 86 u16 etherMtu_mac; 87 88 /* Flow Control MAC 0 */ 89 u16 pauseThreshold_mac; 90 u16 resumeThreshold_mac; 91 u16 reserved[13]; 92 }; 93 94 struct eeprom_function_cfg { 95 u8 reserved[30]; 96 97 /* MAC ADDR */ 98 u8 macAddress[6]; 99 u8 macAddressSecondary[6]; 100 u16 subsysVendorId; 101 u16 subsysDeviceId; 102 }; 103 104 struct eeprom_data { 105 union { 106 struct { /* isp4010 */ 107 u8 asic_id[4]; /* x00 */ 108 u8 version; /* x04 */ 109 u8 reserved; /* x05 */ 110 u16 board_id; /* x06 */ 111 #define EEPROM_BOARDID_ELDORADO 1 112 #define EEPROM_BOARDID_PLACER 2 113 114 #define EEPROM_SERIAL_NUM_SIZE 16 115 u8 serial_number[EEPROM_SERIAL_NUM_SIZE]; /* x08 */ 116 117 /* ExtHwConfig: */ 118 /* Offset = 24bytes 119 * 120 * | SSRAM Size| |ST|PD|SDRAM SZ| W| B| SP | | 121 * |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| 122 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 123 */ 124 u16 ext_hw_conf; /* x18 */ 125 u8 mac0[6]; /* x1A */ 126 u8 mac1[6]; /* x20 */ 127 u8 mac2[6]; /* x26 */ 128 u8 mac3[6]; /* x2C */ 129 u16 etherMtu; /* x32 */ 130 u16 macConfig; /* x34 */ 131 #define MAC_CONFIG_ENABLE_ANEG 0x0001 132 #define MAC_CONFIG_ENABLE_PAUSE 0x0002 133 u16 phyConfig; /* x36 */ 134 #define PHY_CONFIG_PHY_ADDR_MASK 0x1f 135 #define PHY_CONFIG_ENABLE_FW_MANAGEMENT_MASK 0x20 136 u16 reserved_56; /* x38 */ 137 138 #define EEPROM_UNUSED_1_SIZE 2 139 u8 unused_1[EEPROM_UNUSED_1_SIZE]; /* x3A */ 140 u16 bufletSize; /* x3C */ 141 u16 bufletCount; /* x3E */ 142 u16 bufletPauseThreshold; /* x40 */ 143 u16 tcpWindowThreshold50; /* x42 */ 144 u16 tcpWindowThreshold25; /* x44 */ 145 u16 tcpWindowThreshold0; /* x46 */ 146 u16 ipHashTableBaseHi; /* x48 */ 147 u16 ipHashTableBaseLo; /* x4A */ 148 u16 ipHashTableSize; /* x4C */ 149 u16 tcpHashTableBaseHi; /* x4E */ 150 u16 tcpHashTableBaseLo; /* x50 */ 151 u16 tcpHashTableSize; /* x52 */ 152 u16 ncbTableBaseHi; /* x54 */ 153 u16 ncbTableBaseLo; /* x56 */ 154 u16 ncbTableSize; /* x58 */ 155 u16 drbTableBaseHi; /* x5A */ 156 u16 drbTableBaseLo; /* x5C */ 157 u16 drbTableSize; /* x5E */ 158 159 #define EEPROM_UNUSED_2_SIZE 4 160 u8 unused_2[EEPROM_UNUSED_2_SIZE]; /* x60 */ 161 u16 ipReassemblyTimeout; /* x64 */ 162 u16 tcpMaxWindowSizeHi; /* x66 */ 163 u16 tcpMaxWindowSizeLo; /* x68 */ 164 u32 net_ip_addr0; /* x6A Added for TOE 165 * functionality. */ 166 u32 net_ip_addr1; /* x6E */ 167 u32 scsi_ip_addr0; /* x72 */ 168 u32 scsi_ip_addr1; /* x76 */ 169 #define EEPROM_UNUSED_3_SIZE 128 /* changed from 144 to account 170 * for ip addresses */ 171 u8 unused_3[EEPROM_UNUSED_3_SIZE]; /* x7A */ 172 u16 subsysVendorId_f0; /* xFA */ 173 u16 subsysDeviceId_f0; /* xFC */ 174 175 /* Address = 0x7F */ 176 #define FM93C56A_SIGNATURE 0x9356 177 #define FM93C66A_SIGNATURE 0x9366 178 u16 signature; /* xFE */ 179 180 #define EEPROM_UNUSED_4_SIZE 250 181 u8 unused_4[EEPROM_UNUSED_4_SIZE]; /* x100 */ 182 u16 subsysVendorId_f1; /* x1FA */ 183 u16 subsysDeviceId_f1; /* x1FC */ 184 u16 checksum; /* x1FE */ 185 } __attribute__ ((packed)) isp4010; 186 struct { /* isp4022 */ 187 u8 asicId[4]; /* x00 */ 188 u8 version; /* x04 */ 189 u8 reserved_5; /* x05 */ 190 u16 boardId; /* x06 */ 191 u8 boardIdStr[16]; /* x08 */ 192 u8 serialNumber[16]; /* x18 */ 193 194 /* External Hardware Configuration */ 195 u16 ext_hw_conf; /* x28 */ 196 197 /* MAC 0 CONFIGURATION */ 198 struct eeprom_port_cfg macCfg_port0; /* x2A */ 199 200 /* MAC 1 CONFIGURATION */ 201 struct eeprom_port_cfg macCfg_port1; /* x4A */ 202 203 /* DDR SDRAM Configuration */ 204 u16 bufletSize; /* x6A */ 205 u16 bufletCount; /* x6C */ 206 u16 tcpWindowThreshold50; /* x6E */ 207 u16 tcpWindowThreshold25; /* x70 */ 208 u16 tcpWindowThreshold0; /* x72 */ 209 u16 ipHashTableBaseHi; /* x74 */ 210 u16 ipHashTableBaseLo; /* x76 */ 211 u16 ipHashTableSize; /* x78 */ 212 u16 tcpHashTableBaseHi; /* x7A */ 213 u16 tcpHashTableBaseLo; /* x7C */ 214 u16 tcpHashTableSize; /* x7E */ 215 u16 ncbTableBaseHi; /* x80 */ 216 u16 ncbTableBaseLo; /* x82 */ 217 u16 ncbTableSize; /* x84 */ 218 u16 drbTableBaseHi; /* x86 */ 219 u16 drbTableBaseLo; /* x88 */ 220 u16 drbTableSize; /* x8A */ 221 u16 reserved_142[4]; /* x8C */ 222 223 /* TCP/IP Parameters */ 224 u16 ipReassemblyTimeout; /* x94 */ 225 u16 tcpMaxWindowSize; /* x96 */ 226 u16 ipSecurity; /* x98 */ 227 u8 reserved_156[294]; /* x9A */ 228 u16 qDebug[8]; /* QLOGIC USE ONLY x1C0 */ 229 struct eeprom_function_cfg funcCfg_fn0; /* x1D0 */ 230 u16 reserved_510; /* x1FE */ 231 232 /* Address = 512 */ 233 u8 oemSpace[432]; /* x200 */ 234 struct bios_params sBIOSParams_fn1; /* x3B0 */ 235 struct eeprom_function_cfg funcCfg_fn1; /* x3D0 */ 236 u16 reserved_1022; /* x3FE */ 237 238 /* Address = 1024 */ 239 u8 reserved_1024[464]; /* x400 */ 240 struct eeprom_function_cfg funcCfg_fn2; /* x5D0 */ 241 u16 reserved_1534; /* x5FE */ 242 243 /* Address = 1536 */ 244 u8 reserved_1536[432]; /* x600 */ 245 struct bios_params sBIOSParams_fn3; /* x7B0 */ 246 struct eeprom_function_cfg funcCfg_fn3; /* x7D0 */ 247 u16 checksum; /* x7FE */ 248 } __attribute__ ((packed)) isp4022; 249 }; 250 }; 251 252 253 #endif /* _QL4XNVRM_H_ */ 254