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