162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * QLogic iSCSI HBA Driver 462306a36Sopenharmony_ci * Copyright (c) 2003-2013 QLogic Corporation 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef _QL4XNVRM_H_ 862306a36Sopenharmony_ci#define _QL4XNVRM_H_ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci/** 1162306a36Sopenharmony_ci * AM29LV Flash definitions 1262306a36Sopenharmony_ci **/ 1362306a36Sopenharmony_ci#define FM93C56A_SIZE_8 0x100 1462306a36Sopenharmony_ci#define FM93C56A_SIZE_16 0x80 1562306a36Sopenharmony_ci#define FM93C66A_SIZE_8 0x200 1662306a36Sopenharmony_ci#define FM93C66A_SIZE_16 0x100/* 4010 */ 1762306a36Sopenharmony_ci#define FM93C86A_SIZE_16 0x400/* 4022 */ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define FM93C56A_START 0x1 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci/* Commands */ 2262306a36Sopenharmony_ci#define FM93C56A_READ 0x2 2362306a36Sopenharmony_ci#define FM93C56A_WEN 0x0 2462306a36Sopenharmony_ci#define FM93C56A_WRITE 0x1 2562306a36Sopenharmony_ci#define FM93C56A_WRITE_ALL 0x0 2662306a36Sopenharmony_ci#define FM93C56A_WDS 0x0 2762306a36Sopenharmony_ci#define FM93C56A_ERASE 0x3 2862306a36Sopenharmony_ci#define FM93C56A_ERASE_ALL 0x0 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci/* Command Extensions */ 3162306a36Sopenharmony_ci#define FM93C56A_WEN_EXT 0x3 3262306a36Sopenharmony_ci#define FM93C56A_WRITE_ALL_EXT 0x1 3362306a36Sopenharmony_ci#define FM93C56A_WDS_EXT 0x0 3462306a36Sopenharmony_ci#define FM93C56A_ERASE_ALL_EXT 0x2 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci/* Address Bits */ 3762306a36Sopenharmony_ci#define FM93C56A_NO_ADDR_BITS_16 8 /* 4010 */ 3862306a36Sopenharmony_ci#define FM93C56A_NO_ADDR_BITS_8 9 /* 4010 */ 3962306a36Sopenharmony_ci#define FM93C86A_NO_ADDR_BITS_16 10 /* 4022 */ 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci/* Data Bits */ 4262306a36Sopenharmony_ci#define FM93C56A_DATA_BITS_16 16 4362306a36Sopenharmony_ci#define FM93C56A_DATA_BITS_8 8 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci/* Special Bits */ 4662306a36Sopenharmony_ci#define FM93C56A_READ_DUMMY_BITS 1 4762306a36Sopenharmony_ci#define FM93C56A_READY 0 4862306a36Sopenharmony_ci#define FM93C56A_BUSY 1 4962306a36Sopenharmony_ci#define FM93C56A_CMD_BITS 2 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci/* Auburn Bits */ 5262306a36Sopenharmony_ci#define AUBURN_EEPROM_DI 0x8 5362306a36Sopenharmony_ci#define AUBURN_EEPROM_DI_0 0x0 5462306a36Sopenharmony_ci#define AUBURN_EEPROM_DI_1 0x8 5562306a36Sopenharmony_ci#define AUBURN_EEPROM_DO 0x4 5662306a36Sopenharmony_ci#define AUBURN_EEPROM_DO_0 0x0 5762306a36Sopenharmony_ci#define AUBURN_EEPROM_DO_1 0x4 5862306a36Sopenharmony_ci#define AUBURN_EEPROM_CS 0x2 5962306a36Sopenharmony_ci#define AUBURN_EEPROM_CS_0 0x0 6062306a36Sopenharmony_ci#define AUBURN_EEPROM_CS_1 0x2 6162306a36Sopenharmony_ci#define AUBURN_EEPROM_CLK_RISE 0x1 6262306a36Sopenharmony_ci#define AUBURN_EEPROM_CLK_FALL 0x0 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci/**/ 6562306a36Sopenharmony_ci/* EEPROM format */ 6662306a36Sopenharmony_ci/**/ 6762306a36Sopenharmony_cistruct bios_params { 6862306a36Sopenharmony_ci uint16_t SpinUpDelay:1; 6962306a36Sopenharmony_ci uint16_t BIOSDisable:1; 7062306a36Sopenharmony_ci uint16_t MMAPEnable:1; 7162306a36Sopenharmony_ci uint16_t BootEnable:1; 7262306a36Sopenharmony_ci uint16_t Reserved0:12; 7362306a36Sopenharmony_ci uint8_t bootID0:7; 7462306a36Sopenharmony_ci uint8_t bootID0Valid:1; 7562306a36Sopenharmony_ci uint8_t bootLUN0[8]; 7662306a36Sopenharmony_ci uint8_t bootID1:7; 7762306a36Sopenharmony_ci uint8_t bootID1Valid:1; 7862306a36Sopenharmony_ci uint8_t bootLUN1[8]; 7962306a36Sopenharmony_ci uint16_t MaxLunsPerTarget; 8062306a36Sopenharmony_ci uint8_t Reserved1[10]; 8162306a36Sopenharmony_ci}; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_cistruct eeprom_port_cfg { 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci /* MTU MAC 0 */ 8662306a36Sopenharmony_ci u16 etherMtu_mac; 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci /* Flow Control MAC 0 */ 8962306a36Sopenharmony_ci u16 pauseThreshold_mac; 9062306a36Sopenharmony_ci u16 resumeThreshold_mac; 9162306a36Sopenharmony_ci u16 reserved[13]; 9262306a36Sopenharmony_ci}; 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_cistruct eeprom_function_cfg { 9562306a36Sopenharmony_ci u8 reserved[30]; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci /* MAC ADDR */ 9862306a36Sopenharmony_ci u8 macAddress[6]; 9962306a36Sopenharmony_ci u8 macAddressSecondary[6]; 10062306a36Sopenharmony_ci u16 subsysVendorId; 10162306a36Sopenharmony_ci u16 subsysDeviceId; 10262306a36Sopenharmony_ci}; 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_cistruct eeprom_data { 10562306a36Sopenharmony_ci union { 10662306a36Sopenharmony_ci struct { /* isp4010 */ 10762306a36Sopenharmony_ci u8 asic_id[4]; /* x00 */ 10862306a36Sopenharmony_ci u8 version; /* x04 */ 10962306a36Sopenharmony_ci u8 reserved; /* x05 */ 11062306a36Sopenharmony_ci u16 board_id; /* x06 */ 11162306a36Sopenharmony_ci#define EEPROM_BOARDID_ELDORADO 1 11262306a36Sopenharmony_ci#define EEPROM_BOARDID_PLACER 2 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci#define EEPROM_SERIAL_NUM_SIZE 16 11562306a36Sopenharmony_ci u8 serial_number[EEPROM_SERIAL_NUM_SIZE]; /* x08 */ 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci /* ExtHwConfig: */ 11862306a36Sopenharmony_ci /* Offset = 24bytes 11962306a36Sopenharmony_ci * 12062306a36Sopenharmony_ci * | SSRAM Size| |ST|PD|SDRAM SZ| W| B| SP | | 12162306a36Sopenharmony_ci * |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| 12262306a36Sopenharmony_ci * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 12362306a36Sopenharmony_ci */ 12462306a36Sopenharmony_ci u16 ext_hw_conf; /* x18 */ 12562306a36Sopenharmony_ci u8 mac0[6]; /* x1A */ 12662306a36Sopenharmony_ci u8 mac1[6]; /* x20 */ 12762306a36Sopenharmony_ci u8 mac2[6]; /* x26 */ 12862306a36Sopenharmony_ci u8 mac3[6]; /* x2C */ 12962306a36Sopenharmony_ci u16 etherMtu; /* x32 */ 13062306a36Sopenharmony_ci u16 macConfig; /* x34 */ 13162306a36Sopenharmony_ci#define MAC_CONFIG_ENABLE_ANEG 0x0001 13262306a36Sopenharmony_ci#define MAC_CONFIG_ENABLE_PAUSE 0x0002 13362306a36Sopenharmony_ci u16 phyConfig; /* x36 */ 13462306a36Sopenharmony_ci#define PHY_CONFIG_PHY_ADDR_MASK 0x1f 13562306a36Sopenharmony_ci#define PHY_CONFIG_ENABLE_FW_MANAGEMENT_MASK 0x20 13662306a36Sopenharmony_ci u16 reserved_56; /* x38 */ 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci#define EEPROM_UNUSED_1_SIZE 2 13962306a36Sopenharmony_ci u8 unused_1[EEPROM_UNUSED_1_SIZE]; /* x3A */ 14062306a36Sopenharmony_ci u16 bufletSize; /* x3C */ 14162306a36Sopenharmony_ci u16 bufletCount; /* x3E */ 14262306a36Sopenharmony_ci u16 bufletPauseThreshold; /* x40 */ 14362306a36Sopenharmony_ci u16 tcpWindowThreshold50; /* x42 */ 14462306a36Sopenharmony_ci u16 tcpWindowThreshold25; /* x44 */ 14562306a36Sopenharmony_ci u16 tcpWindowThreshold0; /* x46 */ 14662306a36Sopenharmony_ci u16 ipHashTableBaseHi; /* x48 */ 14762306a36Sopenharmony_ci u16 ipHashTableBaseLo; /* x4A */ 14862306a36Sopenharmony_ci u16 ipHashTableSize; /* x4C */ 14962306a36Sopenharmony_ci u16 tcpHashTableBaseHi; /* x4E */ 15062306a36Sopenharmony_ci u16 tcpHashTableBaseLo; /* x50 */ 15162306a36Sopenharmony_ci u16 tcpHashTableSize; /* x52 */ 15262306a36Sopenharmony_ci u16 ncbTableBaseHi; /* x54 */ 15362306a36Sopenharmony_ci u16 ncbTableBaseLo; /* x56 */ 15462306a36Sopenharmony_ci u16 ncbTableSize; /* x58 */ 15562306a36Sopenharmony_ci u16 drbTableBaseHi; /* x5A */ 15662306a36Sopenharmony_ci u16 drbTableBaseLo; /* x5C */ 15762306a36Sopenharmony_ci u16 drbTableSize; /* x5E */ 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci#define EEPROM_UNUSED_2_SIZE 4 16062306a36Sopenharmony_ci u8 unused_2[EEPROM_UNUSED_2_SIZE]; /* x60 */ 16162306a36Sopenharmony_ci u16 ipReassemblyTimeout; /* x64 */ 16262306a36Sopenharmony_ci u16 tcpMaxWindowSizeHi; /* x66 */ 16362306a36Sopenharmony_ci u16 tcpMaxWindowSizeLo; /* x68 */ 16462306a36Sopenharmony_ci u32 net_ip_addr0; /* x6A Added for TOE 16562306a36Sopenharmony_ci * functionality. */ 16662306a36Sopenharmony_ci u32 net_ip_addr1; /* x6E */ 16762306a36Sopenharmony_ci u32 scsi_ip_addr0; /* x72 */ 16862306a36Sopenharmony_ci u32 scsi_ip_addr1; /* x76 */ 16962306a36Sopenharmony_ci#define EEPROM_UNUSED_3_SIZE 128 /* changed from 144 to account 17062306a36Sopenharmony_ci * for ip addresses */ 17162306a36Sopenharmony_ci u8 unused_3[EEPROM_UNUSED_3_SIZE]; /* x7A */ 17262306a36Sopenharmony_ci u16 subsysVendorId_f0; /* xFA */ 17362306a36Sopenharmony_ci u16 subsysDeviceId_f0; /* xFC */ 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci /* Address = 0x7F */ 17662306a36Sopenharmony_ci#define FM93C56A_SIGNATURE 0x9356 17762306a36Sopenharmony_ci#define FM93C66A_SIGNATURE 0x9366 17862306a36Sopenharmony_ci u16 signature; /* xFE */ 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci#define EEPROM_UNUSED_4_SIZE 250 18162306a36Sopenharmony_ci u8 unused_4[EEPROM_UNUSED_4_SIZE]; /* x100 */ 18262306a36Sopenharmony_ci u16 subsysVendorId_f1; /* x1FA */ 18362306a36Sopenharmony_ci u16 subsysDeviceId_f1; /* x1FC */ 18462306a36Sopenharmony_ci u16 checksum; /* x1FE */ 18562306a36Sopenharmony_ci } __attribute__ ((packed)) isp4010; 18662306a36Sopenharmony_ci struct { /* isp4022 */ 18762306a36Sopenharmony_ci u8 asicId[4]; /* x00 */ 18862306a36Sopenharmony_ci u8 version; /* x04 */ 18962306a36Sopenharmony_ci u8 reserved_5; /* x05 */ 19062306a36Sopenharmony_ci u16 boardId; /* x06 */ 19162306a36Sopenharmony_ci u8 boardIdStr[16]; /* x08 */ 19262306a36Sopenharmony_ci u8 serialNumber[16]; /* x18 */ 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci /* External Hardware Configuration */ 19562306a36Sopenharmony_ci u16 ext_hw_conf; /* x28 */ 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci /* MAC 0 CONFIGURATION */ 19862306a36Sopenharmony_ci struct eeprom_port_cfg macCfg_port0; /* x2A */ 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci /* MAC 1 CONFIGURATION */ 20162306a36Sopenharmony_ci struct eeprom_port_cfg macCfg_port1; /* x4A */ 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci /* DDR SDRAM Configuration */ 20462306a36Sopenharmony_ci u16 bufletSize; /* x6A */ 20562306a36Sopenharmony_ci u16 bufletCount; /* x6C */ 20662306a36Sopenharmony_ci u16 tcpWindowThreshold50; /* x6E */ 20762306a36Sopenharmony_ci u16 tcpWindowThreshold25; /* x70 */ 20862306a36Sopenharmony_ci u16 tcpWindowThreshold0; /* x72 */ 20962306a36Sopenharmony_ci u16 ipHashTableBaseHi; /* x74 */ 21062306a36Sopenharmony_ci u16 ipHashTableBaseLo; /* x76 */ 21162306a36Sopenharmony_ci u16 ipHashTableSize; /* x78 */ 21262306a36Sopenharmony_ci u16 tcpHashTableBaseHi; /* x7A */ 21362306a36Sopenharmony_ci u16 tcpHashTableBaseLo; /* x7C */ 21462306a36Sopenharmony_ci u16 tcpHashTableSize; /* x7E */ 21562306a36Sopenharmony_ci u16 ncbTableBaseHi; /* x80 */ 21662306a36Sopenharmony_ci u16 ncbTableBaseLo; /* x82 */ 21762306a36Sopenharmony_ci u16 ncbTableSize; /* x84 */ 21862306a36Sopenharmony_ci u16 drbTableBaseHi; /* x86 */ 21962306a36Sopenharmony_ci u16 drbTableBaseLo; /* x88 */ 22062306a36Sopenharmony_ci u16 drbTableSize; /* x8A */ 22162306a36Sopenharmony_ci u16 reserved_142[4]; /* x8C */ 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci /* TCP/IP Parameters */ 22462306a36Sopenharmony_ci u16 ipReassemblyTimeout; /* x94 */ 22562306a36Sopenharmony_ci u16 tcpMaxWindowSize; /* x96 */ 22662306a36Sopenharmony_ci u16 ipSecurity; /* x98 */ 22762306a36Sopenharmony_ci u8 reserved_156[294]; /* x9A */ 22862306a36Sopenharmony_ci u16 qDebug[8]; /* QLOGIC USE ONLY x1C0 */ 22962306a36Sopenharmony_ci struct eeprom_function_cfg funcCfg_fn0; /* x1D0 */ 23062306a36Sopenharmony_ci u16 reserved_510; /* x1FE */ 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ci /* Address = 512 */ 23362306a36Sopenharmony_ci u8 oemSpace[432]; /* x200 */ 23462306a36Sopenharmony_ci struct bios_params sBIOSParams_fn1; /* x3B0 */ 23562306a36Sopenharmony_ci struct eeprom_function_cfg funcCfg_fn1; /* x3D0 */ 23662306a36Sopenharmony_ci u16 reserved_1022; /* x3FE */ 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ci /* Address = 1024 */ 23962306a36Sopenharmony_ci u8 reserved_1024[464]; /* x400 */ 24062306a36Sopenharmony_ci struct eeprom_function_cfg funcCfg_fn2; /* x5D0 */ 24162306a36Sopenharmony_ci u16 reserved_1534; /* x5FE */ 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ci /* Address = 1536 */ 24462306a36Sopenharmony_ci u8 reserved_1536[432]; /* x600 */ 24562306a36Sopenharmony_ci struct bios_params sBIOSParams_fn3; /* x7B0 */ 24662306a36Sopenharmony_ci struct eeprom_function_cfg funcCfg_fn3; /* x7D0 */ 24762306a36Sopenharmony_ci u16 checksum; /* x7FE */ 24862306a36Sopenharmony_ci } __attribute__ ((packed)) isp4022; 24962306a36Sopenharmony_ci }; 25062306a36Sopenharmony_ci}; 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci#endif /* _QL4XNVRM_H_ */ 254