255 lines
6.8 KiB
C
255 lines
6.8 KiB
C
|
/*
|
||
|
* QLogic iSCSI HBA Driver
|
||
|
* Copyright (c) 2003-2013 QLogic Corporation
|
||
|
*
|
||
|
* See LICENSE.qla4xxx for copyright and licensing details.
|
||
|
*/
|
||
|
|
||
|
#ifndef _QL4XNVRM_H_
|
||
|
#define _QL4XNVRM_H_
|
||
|
|
||
|
/**
|
||
|
* AM29LV Flash definitions
|
||
|
**/
|
||
|
#define FM93C56A_SIZE_8 0x100
|
||
|
#define FM93C56A_SIZE_16 0x80
|
||
|
#define FM93C66A_SIZE_8 0x200
|
||
|
#define FM93C66A_SIZE_16 0x100/* 4010 */
|
||
|
#define FM93C86A_SIZE_16 0x400/* 4022 */
|
||
|
|
||
|
#define FM93C56A_START 0x1
|
||
|
|
||
|
/* Commands */
|
||
|
#define FM93C56A_READ 0x2
|
||
|
#define FM93C56A_WEN 0x0
|
||
|
#define FM93C56A_WRITE 0x1
|
||
|
#define FM93C56A_WRITE_ALL 0x0
|
||
|
#define FM93C56A_WDS 0x0
|
||
|
#define FM93C56A_ERASE 0x3
|
||
|
#define FM93C56A_ERASE_ALL 0x0
|
||
|
|
||
|
/* Command Extensions */
|
||
|
#define FM93C56A_WEN_EXT 0x3
|
||
|
#define FM93C56A_WRITE_ALL_EXT 0x1
|
||
|
#define FM93C56A_WDS_EXT 0x0
|
||
|
#define FM93C56A_ERASE_ALL_EXT 0x2
|
||
|
|
||
|
/* Address Bits */
|
||
|
#define FM93C56A_NO_ADDR_BITS_16 8 /* 4010 */
|
||
|
#define FM93C56A_NO_ADDR_BITS_8 9 /* 4010 */
|
||
|
#define FM93C86A_NO_ADDR_BITS_16 10 /* 4022 */
|
||
|
|
||
|
/* Data Bits */
|
||
|
#define FM93C56A_DATA_BITS_16 16
|
||
|
#define FM93C56A_DATA_BITS_8 8
|
||
|
|
||
|
/* Special Bits */
|
||
|
#define FM93C56A_READ_DUMMY_BITS 1
|
||
|
#define FM93C56A_READY 0
|
||
|
#define FM93C56A_BUSY 1
|
||
|
#define FM93C56A_CMD_BITS 2
|
||
|
|
||
|
/* Auburn Bits */
|
||
|
#define AUBURN_EEPROM_DI 0x8
|
||
|
#define AUBURN_EEPROM_DI_0 0x0
|
||
|
#define AUBURN_EEPROM_DI_1 0x8
|
||
|
#define AUBURN_EEPROM_DO 0x4
|
||
|
#define AUBURN_EEPROM_DO_0 0x0
|
||
|
#define AUBURN_EEPROM_DO_1 0x4
|
||
|
#define AUBURN_EEPROM_CS 0x2
|
||
|
#define AUBURN_EEPROM_CS_0 0x0
|
||
|
#define AUBURN_EEPROM_CS_1 0x2
|
||
|
#define AUBURN_EEPROM_CLK_RISE 0x1
|
||
|
#define AUBURN_EEPROM_CLK_FALL 0x0
|
||
|
|
||
|
/**/
|
||
|
/* EEPROM format */
|
||
|
/**/
|
||
|
struct bios_params {
|
||
|
uint16_t SpinUpDelay:1;
|
||
|
uint16_t BIOSDisable:1;
|
||
|
uint16_t MMAPEnable:1;
|
||
|
uint16_t BootEnable:1;
|
||
|
uint16_t Reserved0:12;
|
||
|
uint8_t bootID0:7;
|
||
|
uint8_t bootID0Valid:1;
|
||
|
uint8_t bootLUN0[8];
|
||
|
uint8_t bootID1:7;
|
||
|
uint8_t bootID1Valid:1;
|
||
|
uint8_t bootLUN1[8];
|
||
|
uint16_t MaxLunsPerTarget;
|
||
|
uint8_t Reserved1[10];
|
||
|
};
|
||
|
|
||
|
struct eeprom_port_cfg {
|
||
|
|
||
|
/* MTU MAC 0 */
|
||
|
u16 etherMtu_mac;
|
||
|
|
||
|
/* Flow Control MAC 0 */
|
||
|
u16 pauseThreshold_mac;
|
||
|
u16 resumeThreshold_mac;
|
||
|
u16 reserved[13];
|
||
|
};
|
||
|
|
||
|
struct eeprom_function_cfg {
|
||
|
u8 reserved[30];
|
||
|
|
||
|
/* MAC ADDR */
|
||
|
u8 macAddress[6];
|
||
|
u8 macAddressSecondary[6];
|
||
|
u16 subsysVendorId;
|
||
|
u16 subsysDeviceId;
|
||
|
};
|
||
|
|
||
|
struct eeprom_data {
|
||
|
union {
|
||
|
struct { /* isp4010 */
|
||
|
u8 asic_id[4]; /* x00 */
|
||
|
u8 version; /* x04 */
|
||
|
u8 reserved; /* x05 */
|
||
|
u16 board_id; /* x06 */
|
||
|
#define EEPROM_BOARDID_ELDORADO 1
|
||
|
#define EEPROM_BOARDID_PLACER 2
|
||
|
|
||
|
#define EEPROM_SERIAL_NUM_SIZE 16
|
||
|
u8 serial_number[EEPROM_SERIAL_NUM_SIZE]; /* x08 */
|
||
|
|
||
|
/* ExtHwConfig: */
|
||
|
/* Offset = 24bytes
|
||
|
*
|
||
|
* | SSRAM Size| |ST|PD|SDRAM SZ| W| B| SP | |
|
||
|
* |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
|
||
|
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||
|
*/
|
||
|
u16 ext_hw_conf; /* x18 */
|
||
|
u8 mac0[6]; /* x1A */
|
||
|
u8 mac1[6]; /* x20 */
|
||
|
u8 mac2[6]; /* x26 */
|
||
|
u8 mac3[6]; /* x2C */
|
||
|
u16 etherMtu; /* x32 */
|
||
|
u16 macConfig; /* x34 */
|
||
|
#define MAC_CONFIG_ENABLE_ANEG 0x0001
|
||
|
#define MAC_CONFIG_ENABLE_PAUSE 0x0002
|
||
|
u16 phyConfig; /* x36 */
|
||
|
#define PHY_CONFIG_PHY_ADDR_MASK 0x1f
|
||
|
#define PHY_CONFIG_ENABLE_FW_MANAGEMENT_MASK 0x20
|
||
|
u16 reserved_56; /* x38 */
|
||
|
|
||
|
#define EEPROM_UNUSED_1_SIZE 2
|
||
|
u8 unused_1[EEPROM_UNUSED_1_SIZE]; /* x3A */
|
||
|
u16 bufletSize; /* x3C */
|
||
|
u16 bufletCount; /* x3E */
|
||
|
u16 bufletPauseThreshold; /* x40 */
|
||
|
u16 tcpWindowThreshold50; /* x42 */
|
||
|
u16 tcpWindowThreshold25; /* x44 */
|
||
|
u16 tcpWindowThreshold0; /* x46 */
|
||
|
u16 ipHashTableBaseHi; /* x48 */
|
||
|
u16 ipHashTableBaseLo; /* x4A */
|
||
|
u16 ipHashTableSize; /* x4C */
|
||
|
u16 tcpHashTableBaseHi; /* x4E */
|
||
|
u16 tcpHashTableBaseLo; /* x50 */
|
||
|
u16 tcpHashTableSize; /* x52 */
|
||
|
u16 ncbTableBaseHi; /* x54 */
|
||
|
u16 ncbTableBaseLo; /* x56 */
|
||
|
u16 ncbTableSize; /* x58 */
|
||
|
u16 drbTableBaseHi; /* x5A */
|
||
|
u16 drbTableBaseLo; /* x5C */
|
||
|
u16 drbTableSize; /* x5E */
|
||
|
|
||
|
#define EEPROM_UNUSED_2_SIZE 4
|
||
|
u8 unused_2[EEPROM_UNUSED_2_SIZE]; /* x60 */
|
||
|
u16 ipReassemblyTimeout; /* x64 */
|
||
|
u16 tcpMaxWindowSizeHi; /* x66 */
|
||
|
u16 tcpMaxWindowSizeLo; /* x68 */
|
||
|
u32 net_ip_addr0; /* x6A Added for TOE
|
||
|
* functionality. */
|
||
|
u32 net_ip_addr1; /* x6E */
|
||
|
u32 scsi_ip_addr0; /* x72 */
|
||
|
u32 scsi_ip_addr1; /* x76 */
|
||
|
#define EEPROM_UNUSED_3_SIZE 128 /* changed from 144 to account
|
||
|
* for ip addresses */
|
||
|
u8 unused_3[EEPROM_UNUSED_3_SIZE]; /* x7A */
|
||
|
u16 subsysVendorId_f0; /* xFA */
|
||
|
u16 subsysDeviceId_f0; /* xFC */
|
||
|
|
||
|
/* Address = 0x7F */
|
||
|
#define FM93C56A_SIGNATURE 0x9356
|
||
|
#define FM93C66A_SIGNATURE 0x9366
|
||
|
u16 signature; /* xFE */
|
||
|
|
||
|
#define EEPROM_UNUSED_4_SIZE 250
|
||
|
u8 unused_4[EEPROM_UNUSED_4_SIZE]; /* x100 */
|
||
|
u16 subsysVendorId_f1; /* x1FA */
|
||
|
u16 subsysDeviceId_f1; /* x1FC */
|
||
|
u16 checksum; /* x1FE */
|
||
|
} __attribute__ ((packed)) isp4010;
|
||
|
struct { /* isp4022 */
|
||
|
u8 asicId[4]; /* x00 */
|
||
|
u8 version; /* x04 */
|
||
|
u8 reserved_5; /* x05 */
|
||
|
u16 boardId; /* x06 */
|
||
|
u8 boardIdStr[16]; /* x08 */
|
||
|
u8 serialNumber[16]; /* x18 */
|
||
|
|
||
|
/* External Hardware Configuration */
|
||
|
u16 ext_hw_conf; /* x28 */
|
||
|
|
||
|
/* MAC 0 CONFIGURATION */
|
||
|
struct eeprom_port_cfg macCfg_port0; /* x2A */
|
||
|
|
||
|
/* MAC 1 CONFIGURATION */
|
||
|
struct eeprom_port_cfg macCfg_port1; /* x4A */
|
||
|
|
||
|
/* DDR SDRAM Configuration */
|
||
|
u16 bufletSize; /* x6A */
|
||
|
u16 bufletCount; /* x6C */
|
||
|
u16 tcpWindowThreshold50; /* x6E */
|
||
|
u16 tcpWindowThreshold25; /* x70 */
|
||
|
u16 tcpWindowThreshold0; /* x72 */
|
||
|
u16 ipHashTableBaseHi; /* x74 */
|
||
|
u16 ipHashTableBaseLo; /* x76 */
|
||
|
u16 ipHashTableSize; /* x78 */
|
||
|
u16 tcpHashTableBaseHi; /* x7A */
|
||
|
u16 tcpHashTableBaseLo; /* x7C */
|
||
|
u16 tcpHashTableSize; /* x7E */
|
||
|
u16 ncbTableBaseHi; /* x80 */
|
||
|
u16 ncbTableBaseLo; /* x82 */
|
||
|
u16 ncbTableSize; /* x84 */
|
||
|
u16 drbTableBaseHi; /* x86 */
|
||
|
u16 drbTableBaseLo; /* x88 */
|
||
|
u16 drbTableSize; /* x8A */
|
||
|
u16 reserved_142[4]; /* x8C */
|
||
|
|
||
|
/* TCP/IP Parameters */
|
||
|
u16 ipReassemblyTimeout; /* x94 */
|
||
|
u16 tcpMaxWindowSize; /* x96 */
|
||
|
u16 ipSecurity; /* x98 */
|
||
|
u8 reserved_156[294]; /* x9A */
|
||
|
u16 qDebug[8]; /* QLOGIC USE ONLY x1C0 */
|
||
|
struct eeprom_function_cfg funcCfg_fn0; /* x1D0 */
|
||
|
u16 reserved_510; /* x1FE */
|
||
|
|
||
|
/* Address = 512 */
|
||
|
u8 oemSpace[432]; /* x200 */
|
||
|
struct bios_params sBIOSParams_fn1; /* x3B0 */
|
||
|
struct eeprom_function_cfg funcCfg_fn1; /* x3D0 */
|
||
|
u16 reserved_1022; /* x3FE */
|
||
|
|
||
|
/* Address = 1024 */
|
||
|
u8 reserved_1024[464]; /* x400 */
|
||
|
struct eeprom_function_cfg funcCfg_fn2; /* x5D0 */
|
||
|
u16 reserved_1534; /* x5FE */
|
||
|
|
||
|
/* Address = 1536 */
|
||
|
u8 reserved_1536[432]; /* x600 */
|
||
|
struct bios_params sBIOSParams_fn3; /* x7B0 */
|
||
|
struct eeprom_function_cfg funcCfg_fn3; /* x7D0 */
|
||
|
u16 checksum; /* x7FE */
|
||
|
} __attribute__ ((packed)) isp4022;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif /* _QL4XNVRM_H_ */
|