qla_fw.h revision 09ff701a177b116c6c15b6e501e58fbfb306b424
1fa90c54f6d27664cc67691f9e52d9165e0c25ca7Andrew Vasquez/*
2fa90c54f6d27664cc67691f9e52d9165e0c25ca7Andrew Vasquez * QLogic Fibre Channel HBA Driver
301e58d8eac93f3b73246b8d0bdee071d9fb85661Andrew Vasquez * Copyright (c)  2003-2008 QLogic Corporation
4fa90c54f6d27664cc67691f9e52d9165e0c25ca7Andrew Vasquez *
5fa90c54f6d27664cc67691f9e52d9165e0c25ca7Andrew Vasquez * See LICENSE.qla2xxx for copyright and licensing details.
6fa90c54f6d27664cc67691f9e52d9165e0c25ca7Andrew Vasquez */
73d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#ifndef __QLA_FW_H
83d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define __QLA_FW_H
93d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MBS_CHECKSUM_ERROR	0x4010
11c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define MBS_INVALID_PRODUCT_KEY	0x4020
123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * Firmware Options.
153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FO1_ENABLE_PUREX	BIT_10
173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FO1_DISABLE_LED_CTRL	BIT_6
18c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FO1_ENABLE_8016		BIT_0
193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FO2_ENABLE_SEL_CLASS2	BIT_5
203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FO3_NO_ABTS_ON_LINKDOWN	BIT_14
21c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FO3_HOLD_STS_IOCB	BIT_12
223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * Port Database structure definition for ISP 24xx.
253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDO_FORCE_ADISC		BIT_1
273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDO_FORCE_PLOGI		BIT_0
283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define	PORT_DATABASE_24XX_SIZE		64
313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct port_database_24xx {
323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t flags;
333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDF_TASK_RETRY_ID	BIT_14
343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDF_FC_TAPE		BIT_7
353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDF_ACK0_CAPABLE	BIT_6
363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDF_FCP2_CONF		BIT_5
373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDF_CLASS_2		BIT_4
383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDF_HARD_ADDR		BIT_1
393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t current_login_state;
413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t last_login_state;
423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDS_PLOGI_PENDING	0x03
433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDS_PLOGI_COMPLETE	0x04
443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDS_PRLI_PENDING	0x05
453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDS_PRLI_COMPLETE	0x06
463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDS_PORT_UNAVAILABLE	0x07
473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDS_PRLO_PENDING	0x09
483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDS_LOGO_PENDING	0x11
493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PDS_PRLI2_PENDING	0x12
503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t hard_address[3];
523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_1;
533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];
553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sequence_id;
563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t port_timer;
583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;			/* N_PORT handle. */
603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t receive_data_size;
623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_2;
633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t prli_svc_param_word_0[2];	/* Big endian */
653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez						/* Bits 15-0 of word 0 */
663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t prli_svc_param_word_3[2];	/* Big endian */
673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez						/* Bits 15-0 of word 3 */
683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name[WWN_SIZE];
703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name[WWN_SIZE];
713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_3[24];
733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
752c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Justruct vp_database_24xx {
762c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t vp_status;
772c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t  options;
782c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t  id;
792c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t  port_name[WWN_SIZE];
802c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t  node_name[WWN_SIZE];
812c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t port_id_low;
822c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t port_id_high;
832c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju};
842c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju
853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct nvram_24xx {
863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* NVRAM header. */
873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t id[4];
883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nvram_version;
893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_0;
903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Firmware Initialization Control Block. */
923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t version;
933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;
943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t frame_payload_size;
953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t execution_throttle;
963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t exchange_count;
973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t hard_address;
983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name[WWN_SIZE];
1003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name[WWN_SIZE];
1013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t login_retry_count;
1033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t link_down_on_nos;
1043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t interrupt_delay_timer;
1053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t login_timeout;
1063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t firmware_options_1;
1083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t firmware_options_2;
1093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t firmware_options_3;
1103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 56. */
1123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/*
1143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0     = Control Enable
1153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 1-15  =
1163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 *
1173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0-7   = Reserved
1183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 8-10  = Output Swing 1G
1193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 11-13 = Output Emphasis 1G
1203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 14-15 = Reserved
1213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 *
1223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0-7   = Reserved
1233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 8-10  = Output Swing 2G
1243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 11-13 = Output Emphasis 2G
1253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 14-15 = Reserved
1263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 *
1273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0-7   = Reserved
1283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 8-10  = Output Swing 4G
1293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 11-13 = Output Emphasis 4G
1303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 14-15 = Reserved
1313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 */
1323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t seriallink_options[4];
1333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_2[16];
1353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 96. */
1373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_3[16];
1383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* PCIe table entries. */
1403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_4[16];
1413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 160. */
1433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_5[16];
1443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 192. */
1463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_6[16];
1473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 224. */
1493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_7[16];
1503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/*
1523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0  = Enable spinup delay
1533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 1  = Disable BIOS
1543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 2  = Enable Memory Map BIOS
1553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 3  = Enable Selectable Boot
1563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 4  = Disable RISC code load
157d4c760c2119fca982f335d83ff9095479c5d6737Andrew Vasquez	 * BIT 5  = Disable Serdes
1583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 6  =
1593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 7  =
1603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 *
1613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 8  =
1623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 9  =
1633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 10 = Enable lip full login
1643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 11 = Enable target reset
1653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 12 =
1663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 13 =
1673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 14 =
1683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 15 = Enable alternate WWN
1693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 *
1703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 16-31 =
1713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 */
1723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t host_p;
1733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t alternate_port_name[WWN_SIZE];
1753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t alternate_node_name[WWN_SIZE];
1763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t boot_port_name[WWN_SIZE];
1783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t boot_lun_number;
1793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_8;
1803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t alt1_boot_port_name[WWN_SIZE];
1823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t alt1_boot_lun_number;
1833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_9;
1843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t alt2_boot_port_name[WWN_SIZE];
1863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t alt2_boot_lun_number;
1873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_10;
1883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t alt3_boot_port_name[WWN_SIZE];
1903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t alt3_boot_lun_number;
1913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_11;
1923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/*
1943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0 = Selective Login
1953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 1 = Alt-Boot Enable
1963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 2 = Reserved
1973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 3 = Boot Order List
1983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 4 = Reserved
1993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 5 = Selective LUN
2003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 6 = Reserved
2013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 7-31 =
2023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 */
2033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t efi_parameters;
2043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reset_delay;
2063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_12;
2073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_13;
2083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t boot_id_number;
2103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_14;
2113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t max_luns_per_target;
2133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_15;
2143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t port_down_retry_count;
2163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t link_down_timeout;
2173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* FCode parameters. */
2193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t fcode_parameter;
2203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_16[3];
2223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 352. */
2243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t prev_drv_ver_major;
2253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t prev_drv_ver_submajob;
2263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t prev_drv_ver_minor;
2273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t prev_drv_ver_subminor;
2283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t prev_bios_ver_major;
2303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t prev_bios_ver_minor;
2313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t prev_efi_ver_major;
2333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t prev_efi_ver_minor;
2343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t prev_fw_ver_major;
2363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t prev_fw_ver_minor;
2373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t prev_fw_ver_subminor;
2383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_17[8];
2403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 384. */
2423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_18[16];
2433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 416. */
2453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_19[16];
2463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 448. */
2483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_20[16];
2493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 480. */
2513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t model_name[16];
2523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_21[2];
2543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* Offset 500. */
2563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/* HW Parameter Block. */
2573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t pcie_table_sig;
2583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t pcie_table_offset;
2593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t subsystem_vendor_id;
2613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t subsystem_device_id;
2623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t checksum;
2643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
2653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
2673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP Initialization Control Block.
2683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * Little endian except where noted.
2693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
2703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define	ICB_VERSION 1
2713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct init_cb_24xx {
2723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t version;
2733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;
2743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t frame_payload_size;
2763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t execution_throttle;
2773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t exchange_count;
2783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t hard_address;
2803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name[WWN_SIZE];		/* Big endian. */
2823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name[WWN_SIZE];		/* Big endian. */
2833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t response_q_inpointer;
2853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t request_q_outpointer;
2863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t login_retry_count;
2883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t prio_request_q_outpointer;
2903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t response_q_length;
2923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t request_q_length;
2933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2943ea66e28c20e3b23749c9001c58b37ad44263442Andrew Vasquez	uint16_t link_down_on_nos;		/* Milliseconds. */
2953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t prio_request_q_length;
2973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
2983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t request_q_address[2];
2993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t response_q_address[2];
3003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t prio_request_q_address[2];
3013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
30273208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint16_t msix;
30373208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint8_t reserved_2[6];
3043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t atio_q_inpointer;
3063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t atio_q_length;
3073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t atio_q_address[2];
3083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t interrupt_delay_timer;		/* 100us increments. */
3103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t login_timeout;
3113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/*
3133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0  = Enable Hard Loop Id
3143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 1  = Enable Fairness
3153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 2  = Enable Full-Duplex
3163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 3  = Reserved
3173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 4  = Enable Target Mode
3183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 5  = Disable Initiator Mode
3193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 6  = Reserved
3203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 7  = Reserved
3213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 *
3223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 8  = Reserved
3233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 9  = Non Participating LIP
3243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 10 = Descending Loop ID Search
3253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 11 = Acquire Loop ID in LIPA
3263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 12 = Reserved
3273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 13 = Full Login after LIP
3283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 14 = Node Name Option
3293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 15-31 = Reserved
3303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 */
3313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t firmware_options_1;
3323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/*
3343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0  = Operation Mode bit 0
3353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 1  = Operation Mode bit 1
3363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 2  = Operation Mode bit 2
3373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 3  = Operation Mode bit 3
3383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 4  = Connection Options bit 0
3393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 5  = Connection Options bit 1
3403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 6  = Connection Options bit 2
3413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 7  = Enable Non part on LIHA failure
3423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 *
3433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 8  = Enable Class 2
3443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 9  = Enable ACK0
3453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 10 = Reserved
3463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 11 = Enable FC-SP Security
3473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 12 = FC Tape Enable
348c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	 * BIT 13 = Reserved
349c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	 * BIT 14 = Enable Target PRLI Control
350c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	 * BIT 15-31 = Reserved
3513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 */
3523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t firmware_options_2;
3533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/*
3553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0  = Reserved
3563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 1  = Soft ID only
3573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 2  = Reserved
3583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 3  = Reserved
3593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 4  = FCP RSP Payload bit 0
3603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 5  = FCP RSP Payload bit 1
3613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 6  = Enable Receive Out-of-Order data frame handling
3623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 7  = Disable Automatic PLOGI on Local Loop
3633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 *
3643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 8  = Reserved
3653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 9  = Enable Out-of-Order FCP_XFER_RDY relative offset handling
3663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 10 = Reserved
3673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 11 = Reserved
3683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 12 = Reserved
3693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 13 = Data Rate bit 0
3703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 14 = Data Rate bit 1
3713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 15 = Data Rate bit 2
372c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	 * BIT 16 = Enable 75 ohm Termination Select
373c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	 * BIT 17-31 = Reserved
3743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 */
3753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t firmware_options_3;
37673208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint16_t qos;
37773208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint16_t rid;
37873208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint8_t  reserved_3[20];
3793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
3803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
3823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP queue - command entry structure definition.
3833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
3843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define COMMAND_TYPE_6	0x48		/* Command Type 6 entry */
3853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct cmd_type_6 {
3863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
3873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
3883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System defined. */
3893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
3903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
3923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
3943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t timeout;		/* Command timeout. */
3953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t dseg_count;		/* Data segment count. */
3973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
3983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t fcp_rsp_dsd_len;	/* FCP_RSP DSD length. */
3993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
400661c3f6cc32e1307fc7df724149884c95e98358dAndrew Vasquez	struct scsi_lun lun;		/* FCP LUN (BE). */
4013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t control_flags;		/* Control flags. */
4033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CF_DATA_SEG_DESCR_ENABLE	BIT_2
4043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CF_READ_DATA			BIT_1
4053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CF_WRITE_DATA			BIT_0
4063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t fcp_cmnd_dseg_len;		/* Data segment length. */
4083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t fcp_cmnd_dseg_address[2];	/* Data segment address. */
4093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t fcp_rsp_dseg_address[2];	/* Data segment address. */
4113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t byte_count;		/* Total byte count. */
4133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];		/* PortID of destination port. */
4153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
4163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t fcp_data_dseg_address[2];	/* Data segment address. */
4183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t fcp_data_dseg_len;		/* Data segment length. */
4193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;			/* MUST be set to 0. */
4203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
4213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define COMMAND_TYPE_7	0x18		/* Command Type 7 entry */
4233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct cmd_type_7 {
4243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
4253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
4263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System defined. */
4273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
4283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
4303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
4323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t timeout;		/* Command timeout. */
4333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FW_MAX_TIMEOUT		0x1999
4343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t dseg_count;		/* Data segment count. */
4363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;
4373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
438661c3f6cc32e1307fc7df724149884c95e98358dAndrew Vasquez	struct scsi_lun lun;		/* FCP LUN (BE). */
4393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t task_mgmt_flags;	/* Task management flags. */
4413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TMF_CLEAR_ACA		BIT_14
4423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TMF_TARGET_RESET	BIT_13
4433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TMF_LUN_RESET		BIT_12
4443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TMF_CLEAR_TASK_SET	BIT_10
4453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TMF_ABORT_TASK_SET	BIT_9
446c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define TMF_DSD_LIST_ENABLE	BIT_2
4473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TMF_READ_DATA		BIT_1
4483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TMF_WRITE_DATA		BIT_0
4493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t task;
4513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TSK_SIMPLE		0
4523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TSK_HEAD_OF_QUEUE	1
4533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TSK_ORDERED		2
4543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TSK_ACA			4
4553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TSK_UNTAGGED		5
4563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t crn;
4583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t fcp_cdb[MAX_CMDSZ]; 	/* SCSI command words. */
4603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t byte_count;		/* Total byte count. */
4613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];		/* PortID of destination port. */
4633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
4643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t dseg_0_address[2];	/* Data segment 0 address. */
4663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t dseg_0_len;		/* Data segment 0 length. */
4673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
4683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
4703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP queue - status entry structure definition.
4713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
4723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define	STATUS_TYPE	0x03		/* Status entry. */
4733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct sts_entry_24xx {
4743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
4753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
4763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System defined. */
4773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
4783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
4803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t comp_status;		/* Completion status. */
4823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t ox_id;			/* OX_ID used by the firmware. */
4833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
484ed17c71b5d11327efd40666fd621486f964fae4fRavi Anand	uint32_t residual_len;		/* FW calc residual transfer length. */
4853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;
4873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t state_flags;		/* State flags. */
4883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define SF_TRANSFERRED_DATA	BIT_11
4893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define SF_FCP_RSP_DMA		BIT_0
4903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_2;
4923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t scsi_status;		/* SCSI status. */
4933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define SS_CONFIRMATION_REQ		BIT_12
4943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rsp_residual_count;	/* FCP RSP residual count. */
4963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
4973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t sense_len;		/* FCP SENSE length. */
4983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rsp_data_len;		/* FCP response data length. */
4993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t data[28];		/* FCP response/sense information. */
5013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
5023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
5043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * Status entry completion status
5053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
5063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_DATA_REASSEMBLY_ERROR 0x11	/* Data Reassembly Error.. */
5073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_ABTS_BY_TARGET	0x13	/* Target send ABTS to abort IOCB. */
5083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_FW_RESOURCE		0x2C	/* Firmware Resource Unavailable. */
5093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_TASK_MGMT_OVERRUN	0x30	/* Task management overrun (8+). */
5103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_ABORT_BY_TARGET	0x47	/* Abort By Target. */
5113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
5133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP queue - marker entry structure definition.
5143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
5153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MARKER_TYPE	0x04		/* Marker entry. */
5163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct mrk_entry_24xx {
5173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
5183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
5193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t handle_count;		/* Handle count. */
5203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
5213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
5233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
5253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t modifier;		/* Modifier (7-0). */
5273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MK_SYNC_ID_LUN	0		/* Synchronize ID/LUN */
5283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MK_SYNC_ID	1		/* Synchronize ID */
5293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MK_SYNC_ALL	2		/* Synchronize all ID/LUN */
5303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_1;
5313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_2;
5333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
5343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_3;
5363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t lun[8];			/* FCP LUN (BE). */
5383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_4[40];
5393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
5403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
5423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP queue - CT Pass-Through entry structure definition.
5433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
5443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CT_IOCB_TYPE		0x29	/* CT Pass-Through IOCB entry */
5453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct ct_entry_24xx {
5463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
5473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
5483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System Defined. */
5493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
5503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
5523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t comp_status;		/* Completion status. */
5543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
5563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t cmd_dsd_count;
5583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
5603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_1;
5613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t timeout;		/* Command timeout. */
5633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_2;
5643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t rsp_dsd_count;
5663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_3[10];
5683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rsp_byte_count;
5703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t cmd_byte_count;
5713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t dseg_0_address[2];	/* Data segment 0 address. */
5733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t dseg_0_len;		/* Data segment 0 length. */
5743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t dseg_1_address[2];	/* Data segment 1 address. */
5753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t dseg_1_len;		/* Data segment 1 length. */
5763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
5773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
5793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP queue - ELS Pass-Through entry structure definition.
5803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
5813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ELS_IOCB_TYPE		0x53	/* ELS Pass-Through IOCB entry */
5823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct els_entry_24xx {
5833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
5843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
5853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System Defined. */
5863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
5873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
5893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;
5913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
5933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t tx_dsd_count;
5953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
5963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
5973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sof_type;
5983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define EST_SOFI3		(1 << 4)
5993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define EST_SOFI2		(3 << 4)
6003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
601c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t rx_xchg_address;	/* Receive exchange address. */
6023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t rx_dsd_count;
6033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t opcode;
6053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_2;
6063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];
6083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_3;
6093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_4;
6113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t control_flags;		/* Control flags. */
6133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ECF_PAYLOAD_DESCR_MASK	(BIT_15|BIT_14|BIT_13)
6143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define EPD_ELS_COMMAND		(0 << 13)
6153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define EPD_ELS_ACC		(1 << 13)
6163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define EPD_ELS_RJT		(2 << 13)
6173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define EPD_RX_XCHG		(3 << 13)
6183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ECF_CLR_PASSTHRU_PEND	BIT_12
6193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ECF_INCL_FRAME_HDR	BIT_11
6203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rx_byte_count;
6223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t tx_byte_count;
6233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t tx_address[2];		/* Data segment 0 address. */
6253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t tx_len;		/* Data segment 0 length. */
6263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rx_address[2];		/* Data segment 1 address. */
6273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rx_len;		/* Data segment 1 length. */
6283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
6293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6309a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavalistruct els_sts_entry_24xx {
6319a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t entry_type;		/* Entry type. */
6329a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t entry_count;		/* Entry count. */
6339a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t sys_define;		/* System Defined. */
6349a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t entry_status;		/* Entry Status. */
6359a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6369a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint32_t handle;		/* System handle. */
6379a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6389a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint16_t comp_status;
6399a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6409a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint16_t nport_handle;		/* N_PORT handle. */
6419a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6429a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint16_t reserved_1;
6439a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6449a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t vp_index;
6459a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t sof_type;
6469a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6479a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint32_t rx_xchg_address;	/* Receive exchange address. */
6489a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint16_t reserved_2;
6499a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6509a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t opcode;
6519a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t reserved_3;
6529a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6539a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t port_id[3];
6549a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint8_t reserved_4;
6559a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6569a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint16_t reserved_5;
6579a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali
6589a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint16_t control_flags;		/* Control flags. */
6599a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint32_t total_byte_count;
6609a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint32_t error_subcode_1;
6619a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali	uint32_t error_subcode_2;
6629a069e196767d7b87184fd8d8211d22bb5b9c0b8Giridhar Malavali};
6633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
6643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP queue - Mailbox Command entry structure definition.
6653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
6663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MBX_IOCB_TYPE	0x39
6673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct mbx_entry_24xx {
6683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
6693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
6703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t handle_count;		/* Handle count. */
6713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
6723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
6743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mbx[28];
6763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
6773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LOGINOUT_PORT_IOCB_TYPE	0x52	/* Login/Logout Port entry. */
6803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct logio_entry_24xx {
6813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
6823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
6833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System defined. */
6843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
6853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
6873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t comp_status;		/* Completion status. */
6893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_LOGIO_ERROR		0x31	/* Login/Logout IOCB error. */
6903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
6923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t control_flags;		/* Control flags. */
6943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Modifiers. */
695c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define LCF_INCLUDE_SNS		BIT_10	/* Include SNS (FFFFFC) during LOGO. */
6963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_FCP2_OVERRIDE	BIT_9	/* Set/Reset word 3 of PRLI. */
6973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_CLASS_2		BIT_8	/* Enable class 2 during PLOGI. */
6983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_FREE_NPORT		BIT_7	/* Release NPORT handle after LOGO. */
6993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_EXPL_LOGO		BIT_6	/* Perform an explicit LOGO. */
7003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_SKIP_PRLI		BIT_5	/* Skip PRLI after PLOGI. */
7013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_IMPL_LOGO_ALL	BIT_5	/* Implicit LOGO to all ports. */
7023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COND_PLOGI		BIT_4	/* PLOGI only if not logged-in. */
7033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_IMPL_LOGO		BIT_4	/* Perform an implicit LOGO. */
7043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_IMPL_PRLO		BIT_4	/* Perform an implicit PRLO. */
7053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Commands. */
7063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_PLOGI	0x00	/* PLOGI. */
7073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_PRLI	0x01	/* PRLI. */
7083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_PDISC	0x02	/* PDISC. */
7093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_ADISC	0x03	/* ADISC. */
7103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_LOGO	0x08	/* LOGO. */
7113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_PRLO	0x09	/* PRLO. */
7123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_TPRLO	0x0A	/* TPRLO. */
7133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
7153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_1;
7163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];		/* PortID of destination port. */
7183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t rsp_size;		/* Response size in 32bit words. */
7203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t io_parameter[11];	/* General I/O parameters. */
7223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOLINK	0x01
7233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOIOCB	0x02
7243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOXCB		0x03
7253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_CMD_FAILED	0x04
7263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOFABRIC	0x05
7273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_FW_NOT_READY	0x07
7283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOT_LOGGED_IN	0x09
7293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOPCB		0x0A
7303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_ELS_REJECT	0x18
7323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_CMD_PARAM_ERR	0x19
7333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_PORTID_USED	0x1A
7343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NPORT_USED	0x1B
7353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NONPORT	0x1C
7363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_LOGGED_IN	0x1D
7373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOFLOGI_ACC	0x1F
7383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
7393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TSK_MGMT_IOCB_TYPE	0x14
7413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct tsk_mgmt_entry {
7423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
7433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
7443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t handle_count;		/* Handle count. */
7453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
7463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
7483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
7503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;
7523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t delay;			/* Activity delay in seconds. */
7543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t timeout;		/* Command timeout. */
7563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
757523ec773b8ffb1c607bc3a54c9526558e3b1eab1Andrew Vasquez	struct scsi_lun lun;		/* FCP LUN (BE). */
7583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t control_flags;		/* Control Flags. */
7603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_NOTMCMD_TO_TARGET	BIT_31
7613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_LUN_RESET		BIT_4
7623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_ABORT_TASK_SET	BIT_3
7633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_CLEAR_TASK_SET	BIT_2
7643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_TARGET_RESET	BIT_1
7653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_CLEAR_ACA		BIT_0
7663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_2[20];
7683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];		/* PortID of destination port. */
7703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
7713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_3[12];
7733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
7743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ABORT_IOCB_TYPE	0x33
7763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct abort_entry_24xx {
7773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
7783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
7793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t handle_count;		/* Handle count. */
7803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
7813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
7833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
7853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* or Completion status. */
7863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t options;		/* Options. */
7883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define AOF_NO_ABTS		BIT_0	/* Do not send any ABTS. */
7893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle_to_abort;	/* System handle to abort. */
7913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
79273208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint16_t req_que_no;
79373208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint8_t reserved_1[30];
7943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];		/* PortID of destination port. */
7963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
7973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_2[12];
7993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
8003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
8023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP I/O Register Set structure definitions.
8033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
8043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct device_reg_24xx {
8053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t flash_addr;		/* Flash/NVRAM BIOS address. */
8063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_DATA_FLAG	BIT_31
8073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_ACCESS_FLASH_CONF	0x7FFD0000
8083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_ACCESS_FLASH_DATA	0x7FF00000
8093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_ACCESS_NVRAM_CONF	0x7FFF0000
8103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_ACCESS_NVRAM_DATA	0x7FFE0000
8113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_NVRAM_FUNC0_ADDR	0x80
8133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_NVRAM_FUNC1_ADDR	0x180
8143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8156f6417905cf272337a9762e1f92a1fffa651fcd3Andrew Vasquez#define FA_NVRAM_VPD_SIZE	0x200
8163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_NVRAM_VPD0_ADDR	0x00
8173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_NVRAM_VPD1_ADDR	0x100
818b7cc176c9eb3aa6989ac099efd8bdd6d0eaa784aJoe Carnuccio
819b7cc176c9eb3aa6989ac099efd8bdd6d0eaa784aJoe Carnuccio#define FA_BOOT_CODE_ADDR	0x00000
8203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/*
8213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 * RISC code begins at offset 512KB
8223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 * within flash. Consisting of two
8233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 * contiguous RISC code segments.
8243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 */
8253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_RISC_CODE_ADDR	0x20000
8263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_RISC_CODE_SEGMENTS	2
8273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
828c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FA_FLASH_DESCR_ADDR_24	0x11000
829c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FA_FLASH_LAYOUT_ADDR_24	0x11400
830272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FA_NPIV_CONF0_ADDR_24	0x16000
831272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FA_NPIV_CONF1_ADDR_24	0x17000
832c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
833c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FA_FW_AREA_ADDR		0x40000
834c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FA_VPD_NVRAM_ADDR	0x48000
835c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FA_FEATURE_ADDR		0x4C000
836c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FA_FLASH_DESCR_ADDR	0x50000
837c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FA_FLASH_LAYOUT_ADDR	0x50400
838cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define FA_HW_EVENT0_ADDR	0x54000
839c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FA_HW_EVENT1_ADDR	0x54400
840cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define FA_HW_EVENT_SIZE	0x200
841cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define FA_HW_EVENT_ENTRY_SIZE	4
842272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FA_NPIV_CONF0_ADDR	0x5C000
843272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FA_NPIV_CONF1_ADDR	0x5D000
84409ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FA_FCP_PRIO0_ADDR	0x10000
84509ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FA_FCP_PRIO1_ADDR	0x12000
846272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez
847cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez/*
848cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez * Flash Error Log Event Codes.
849cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez */
850cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_RESET_ERR	0xF00B
851cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_ISP_ERR	0xF020
852cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_PARITY_ERR	0xF022
853cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_NVRAM_CHKSUM_ERR	0xF023
854cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_FLASH_FW_ERR	0xF024
855cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez
8563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t flash_data;		/* Flash/NVRAM BIOS data. */
8573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t ctrl_status;		/* Control/Status. */
8593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_FLASH_ACCESS_ERROR	BIT_18	/* Flash/NVRAM Access Error. */
8603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_DMA_ACTIVE		BIT_17	/* DMA Active status. */
8613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_DMA_SHUTDOWN	BIT_16	/* DMA Shutdown control status. */
8623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_FUNCTION		BIT_15	/* Function number. */
8633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* PCI-X Bus Mode. */
8643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_PCIX_BUS_MODE_MASK	(BIT_11|BIT_10|BIT_9|BIT_8)
8653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCI_33MHZ		(0 << 8)
8663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M1_66MHZ	(1 << 8)
8673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M1_100MHZ	(2 << 8)
8683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M1_133MHZ	(3 << 8)
8693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M2_66MHZ	(5 << 8)
8703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M2_100MHZ	(6 << 8)
8713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M2_133MHZ	(7 << 8)
8723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCI_66MHZ		(8 << 8)
8733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Max Write Burst byte count. */
8743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_MAX_WRT_BURST_MASK	(BIT_5|BIT_4)
8753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MWB_512_BYTES		(0 << 4)
8763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MWB_1024_BYTES		(1 << 4)
8773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MWB_2048_BYTES		(2 << 4)
8783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MWB_4096_BYTES		(3 << 4)
8793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_64BIT_SLOT		BIT_2	/* PCI 64-Bit Bus Slot. */
8813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_FLASH_ENABLE	BIT_1	/* Flash BIOS Read/Write enable. */
8823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_ISP_SOFT_RESET	BIT_0	/* ISP soft reset. */
8833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t ictrl;			/* Interrupt control. */
8853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ICRX_EN_RISC_INT	BIT_3	/* Enable RISC interrupts on PCI. */
8863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t istatus;		/* Interrupt status. */
8883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ISRX_RISC_INT		BIT_3	/* RISC interrupt. */
8893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t unused_1[2];		/* Gap. */
8913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Request Queue. */
8933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t req_q_in;		/*  In-Pointer. */
8943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t req_q_out;		/*  Out-Pointer. */
8953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Response Queue. */
8963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rsp_q_in;		/*  In-Pointer. */
8973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rsp_q_out;		/*  Out-Pointer. */
8983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Priority Request Queue. */
8993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t preq_q_in;		/*  In-Pointer. */
9003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t preq_q_out;		/*  Out-Pointer. */
9013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t unused_2[2];		/* Gap. */
9033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* ATIO Queue. */
9053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t atio_q_in;		/*  In-Pointer. */
9063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t atio_q_out;		/*  Out-Pointer. */
9073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t host_status;
9093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HSRX_RISC_INT		BIT_15	/* RISC to Host interrupt. */
9103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HSRX_RISC_PAUSED	BIT_8	/* RISC Paused. */
9113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t hccr;			/* Host command & control register. */
9133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* HCCR statuses. */
9143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_HOST_INT		BIT_6	/* Host to RISC interrupt bit. */
9153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_RISC_RESET	BIT_5	/* RISC Reset mode bit. */
9163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* HCCR commands. */
9173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* NOOP. */
9183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_NOOP		0x00000000
9193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Set RISC Reset. */
9203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_SET_RISC_RESET	0x10000000
9213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Clear RISC Reset. */
9223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_CLR_RISC_RESET	0x20000000
9233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Set RISC Pause. */
9243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_SET_RISC_PAUSE	0x30000000
9253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Releases RISC Pause. */
9263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_REL_RISC_PAUSE	0x40000000
9273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Set HOST to RISC interrupt. */
9283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_SET_HOST_INT	0x50000000
9293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Clear HOST to RISC interrupt. */
9303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_CLR_HOST_INT	0x60000000
9313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Clear RISC to PCI interrupt. */
9323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_CLR_RISC_INT	0xA0000000
9333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t gpiod;			/* GPIO Data register. */
935c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez
9363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* LED update mask. */
9373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_UPDATE_MASK	(BIT_20|BIT_19|BIT_18)
9383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Data update mask. */
9393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_DATA_UPDATE_MASK	(BIT_17|BIT_16)
940c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez					/* Data update mask. */
941c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define GPDX_DATA_UPDATE_2_MASK	(BIT_28|BIT_27|BIT_26|BIT_17|BIT_16)
9423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* LED control mask. */
9433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_COLOR_MASK	(BIT_4|BIT_3|BIT_2)
9443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* LED bit values. Color names as
9453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 * referenced in fw spec.
9463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 */
9473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_YELLOW_ON	BIT_2
9483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_GREEN_ON	BIT_3
9493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_AMBER_ON	BIT_4
9503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Data in/out. */
9513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_DATA_INOUT		(BIT_1|BIT_0)
9523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t gpioe;			/* GPIO Enable register. */
9543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Enable update mask. */
9553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPEX_ENABLE_UPDATE_MASK	(BIT_17|BIT_16)
956c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez					/* Enable update mask. */
957c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define GPEX_ENABLE_UPDATE_2_MASK (BIT_28|BIT_27|BIT_26|BIT_17|BIT_16)
9583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Enable. */
9593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPEX_ENABLE		(BIT_1|BIT_0)
9603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t iobase_addr;		/* I/O Bus Base Address register. */
9623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t unused_3[10];		/* Gap. */
9643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox0;
9663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox1;
9673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox2;
9683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox3;
9693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox4;
9703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox5;
9713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox6;
9723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox7;
9733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox8;
9743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox9;
9753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox10;
9763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox11;
9773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox12;
9783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox13;
9793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox14;
9803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox15;
9813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox16;
9823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox17;
9833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox18;
9843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox19;
9853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox20;
9863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox21;
9873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox22;
9883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox23;
9893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox24;
9903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox25;
9913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox26;
9923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox27;
9933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox28;
9943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox29;
9953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox30;
9963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox31;
997c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez
998c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t iobase_window;
999b58369273956775c3e8b7bbbe152593d52762099Andrew Vasquez	uint32_t iobase_c4;
100005236a050f8e3a20962bad98ad8ceb94bbdb748cAndrew Vasquez	uint32_t iobase_c8;
100105236a050f8e3a20962bad98ad8ceb94bbdb748cAndrew Vasquez	uint32_t unused_4_1[6];		/* Gap. */
1002c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t iobase_q;
1003c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t unused_5[2];		/* Gap. */
1004c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t iobase_select;
1005c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t unused_6[2];		/* Gap. */
1006c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t iobase_sdata;
10073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
10083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
100900b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez/* Trace Control *************************************************************/
101000b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez
101100b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez#define TC_AEN_DISABLE		0
101200b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez
101300b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez#define TC_EFT_ENABLE		4
101400b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez#define TC_EFT_DISABLE		5
101500b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez
1016df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_ENABLE		8
1017df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_OPTIONS		0
1018df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_DEFAULT_RX_SIZE	2112
1019df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_DEFAULT_TX_SIZE	2112
1020df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_DISABLE		9
1021df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_DISABLE_TRACE	BIT_0
1022df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez
10233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/* MID Support ***************************************************************/
10243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1025eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez#define MIN_MULTI_ID_FABRIC	64	/* Must be power-of-2. */
1026eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez#define MAX_MULTI_ID_FABRIC	256	/* ... */
1027eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez
1028eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez#define for_each_mapped_vp_idx(_ha, _idx)		\
1029eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez	for (_idx = find_next_bit((_ha)->vp_idx_map,	\
1030eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez		(_ha)->max_npiv_vports + 1, 1);		\
1031eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez	    _idx <= (_ha)->max_npiv_vports;		\
1032eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez	    _idx = find_next_bit((_ha)->vp_idx_map,	\
1033eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez		(_ha)->max_npiv_vports + 1, _idx + 1))	\
10343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct mid_conf_entry_24xx {
10363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;
10373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/*
10393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0  = Enable Hard Loop Id
10403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 1  = Acquire Loop ID in LIPA
10413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 2  = ID not Acquired
10423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 3  = Enable VP
10433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 4  = Enable Initiator Mode
10443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 5  = Disable Target Mode
10453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 6-7 = Reserved
10463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 */
10473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t options;
10483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t hard_address;
10503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name[WWN_SIZE];
10523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name[WWN_SIZE];
10533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
10543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct mid_init_cb_24xx {
10563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	struct init_cb_24xx init_cb;
10573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t count;
10593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t options;
10603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1061eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez	struct mid_conf_entry_24xx entries[MAX_MULTI_ID_FABRIC];
10623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
10633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct mid_db_entry_24xx {
10663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t status;
10673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MDBS_NON_PARTIC		BIT_3
10683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MDBS_ID_ACQUIRED	BIT_1
10693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MDBS_ENABLED		BIT_0
10703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t options;
10723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t hard_address;
10733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name[WWN_SIZE];
10753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name[WWN_SIZE];
10763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];
10783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_1;
10793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
10803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10812c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju/*
10822c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju * Virtual Port Control IOCB
10832c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju */
10843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VP_CTRL_IOCB_TYPE	0x30	/* Vitual Port Control entry. */
10853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct vp_ctrl_entry_24xx {
10863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
10873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
10883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System defined. */
10893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
10903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
10923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t vp_idx_failed;
10943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t comp_status;		/* Completion status. */
10962c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define CS_VCE_IOCB_ERROR       0x01    /* Error processing IOCB */
10973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCE_ACQ_ID_ERROR	0x02	/* Error while acquireing ID. */
10983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCE_BUSY		0x05	/* Firmware not ready to accept cmd. */
10993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t command;
11013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VCE_COMMAND_ENABLE_VPS	0x00	/* Enable VPs. */
11023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VCE_COMMAND_DISABLE_VPS	0x08	/* Disable VPs. */
11033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VCE_COMMAND_DISABLE_VPS_REINIT	0x09 /* Disable VPs and reinit link. */
11043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VCE_COMMAND_DISABLE_VPS_LOGO	0x0a /* Disable VPs and LOGO ports. */
11052c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define VCE_COMMAND_DISABLE_VPS_LOGO_ALL        0x0b /* Disable VPs and LOGO ports. */
11063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t vp_count;
11083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_idx_map[16];
11102c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t flags;
1111c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint16_t id;
11122c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t reserved_4;
1113c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint16_t hopct;
1114c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint8_t reserved_5[24];
11153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
11163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11172c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju/*
11182c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju * Modify Virtual Port Configuration IOCB
11192c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju */
11203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VP_CONFIG_IOCB_TYPE	0x31	/* Vitual Port Config entry. */
11213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct vp_config_entry_24xx {
11223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
11233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
11242c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t handle_count;
11253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
11263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
11283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11292c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t flags;
11302c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define CS_VF_BIND_VPORTS_TO_VF         BIT_0
11312c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define CS_VF_SET_QOS_OF_VPORTS         BIT_1
11322c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define CS_VF_SET_HOPS_OF_VPORTS        BIT_2
11333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t comp_status;		/* Completion status. */
11353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_STS_ERROR	0x01	/* Specified VPs were not disabled. */
11363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_CNT_ERROR	0x02	/* Invalid VP count. */
11373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_ERROR		0x03	/* Unknown error. */
11383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_IDX_ERROR	0x02	/* Invalid VP index. */
11393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_BUSY		0x05	/* Firmware not ready to accept cmd. */
11403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t command;
11422c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define VCT_COMMAND_MOD_VPS     0x00    /* Modify VP configurations. */
11432c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define VCT_COMMAND_MOD_ENABLE_VPS 0x01 /* Modify configuration & enable VPs. */
11443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_count;
11463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11472c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t vp_index1;
11482c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t vp_index2;
11493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t options_idx1;
11513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t hard_address_idx1;
11522c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t reserved_vp1;
11533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name_idx1[WWN_SIZE];
11543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name_idx1[WWN_SIZE];
11553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t options_idx2;
11573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t hard_address_idx2;
11582c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t reserved_vp2;
11593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name_idx2[WWN_SIZE];
11603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name_idx2[WWN_SIZE];
1161c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint16_t id;
11622c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t reserved_4;
1163c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint16_t hopct;
1164f9e899ebe502e547fca37f64ebc4b1399880d8f7Shyam Sundar	uint8_t reserved_5[2];
11653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
11663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VP_RPT_ID_IOCB_TYPE	0x32	/* Report ID Acquisition entry. */
11683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct vp_rpt_id_entry_24xx {
11693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
11703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
11713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System defined. */
11723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
11733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
11753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t vp_count;		/* Format 0 -- | VP setup | VP acq |. */
11773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Format 1 -- | VP count |. */
11783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t vp_idx;		/* Format 0 -- Reserved. */
11793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Format 1 -- VP status and index. */
11803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];
11823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t format;
11833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_idx_map[16];
11853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_4[32];
11873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
11883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11892c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define VF_EVFP_IOCB_TYPE       0x26    /* Exchange Virtual Fabric Parameters entry. */
11902c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Justruct vf_evfp_entry_24xx {
11912c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint8_t entry_type;             /* Entry type. */
11922c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint8_t entry_count;            /* Entry count. */
11932c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint8_t sys_define;             /* System defined. */
11942c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint8_t entry_status;           /* Entry Status. */
11952c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju
11962c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t handle;                /* System handle. */
11972c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t comp_status;           /* Completion status. */
11982c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t timeout;               /* timeout */
11992c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t adim_tagging_mode;
12002c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju
12012c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t vfport_id;
12022c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t exch_addr;
12032c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju
12042c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t nport_handle;          /* N_PORT handle. */
12052c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t control_flags;
12062c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t io_parameter_0;
12072c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t io_parameter_1;
12082c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t tx_address[2];         /* Data segment 0 address. */
12092c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t tx_len;                /* Data segment 0 length. */
12102c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t rx_address[2];         /* Data segment 1 address. */
12112c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t rx_len;                /* Data segment 1 length. */
12122c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju};
12132c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju
12143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/* END MID Support ***********************************************************/
12157d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez
12167d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez/* Flash Description Table ***************************************************/
12177d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez
12187d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquezstruct qla_fdt_layout {
12197d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t sig[4];
12207d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t version;
12217d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t len;
12227d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t checksum;
12237d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t unused1[2];
12247d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t model[16];
12257d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t man_id;
12267d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t id;
12277d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t flags;
12287d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t erase_cmd;
12297d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t alt_erase_cmd;
12307d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t wrt_enable_cmd;
12317d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t wrt_enable_bits;
12327d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t wrt_sts_reg_cmd;
12337d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t unprotect_sec_cmd;
12347d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t read_man_id_cmd;
12357d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint32_t block_size;
12367d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint32_t alt_block_size;
12377d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint32_t flash_size;
12387d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint32_t wrt_enable_data;
12397d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t read_id_addr_len;
12407d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t wrt_disable_bits;
12417d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t read_dev_id_len;
12427d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t chip_erase_cmd;
12437d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t read_timeout;
12447d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t protect_sec_cmd;
12457d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t unused2[65];
12467d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez};
12474d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
1248c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez/* Flash Layout Table ********************************************************/
1249c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1250c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquezstruct qla_flt_location {
1251c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint8_t sig[4];
12523a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t start_lo;
12533a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t start_hi;
12543a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t version;
12553a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t unused[5];
1256c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t checksum;
1257c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez};
1258c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1259c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquezstruct qla_flt_header {
1260c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t version;
1261c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t length;
1262c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t checksum;
1263c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t unused;
1264c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez};
1265c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1266c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_FW		0x01
1267c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_BOOT_CODE	0x07
1268c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_VPD_0		0x14
1269c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_NVRAM_0		0x15
1270c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_VPD_1		0x16
1271c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_NVRAM_1		0x17
1272c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_FDT		0x1a
1273c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_FLT		0x1c
1274c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_HW_EVENT_0	0x1d
1275c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_HW_EVENT_1	0x1f
1276272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FLT_REG_NPIV_CONF_0	0x29
1277272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FLT_REG_NPIV_CONF_1	0x2a
1278cbc8eb67da11a4972834f61fe4729f4c037a17c9Andrew Vasquez#define FLT_REG_GOLD_FW		0x2f
127909ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FLT_REG_FCP_PRIO_0	0x87
128009ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FLT_REG_FCP_PRIO_1	0x88
1281c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1282c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquezstruct qla_flt_region {
1283c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint32_t code;
1284c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint32_t size;
1285c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint32_t start;
1286c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint32_t end;
1287c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez};
1288c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1289272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez/* Flash NPIV Configuration Table ********************************************/
1290272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez
1291272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquezstruct qla_npiv_header {
1292272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint8_t sig[2];
1293272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t version;
1294272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t entries;
1295272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t unused[4];
1296272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t checksum;
1297272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez};
1298272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez
1299272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquezstruct qla_npiv_entry {
1300272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t flags;
1301272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t vf_id;
130273208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint8_t q_qos;
130373208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint8_t f_qos;
1304272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t unused1;
1305272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint8_t port_name[WWN_SIZE];
1306272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint8_t node_name[WWN_SIZE];
1307272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez};
1308272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez
13094d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam/* 84XX Support **************************************************************/
13104d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13114d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define MBA_ISP84XX_ALERT	0x800f  /* Alert Notification. */
13124d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define A84_PANIC_RECOVERY	0x1
13134d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define A84_OP_LOGIN_COMPLETE	0x2
13144d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define A84_DIAG_LOGIN_COMPLETE	0x3
13154d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define A84_GOLD_LOGIN_COMPLETE	0x4
13164d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13174d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define MBC_ISP84XX_RESET	0x3a    /* Reset. */
13184d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13194d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_REMOTE_FC_DOWN	BIT_0
13204d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_NSL_LINK_DOWN	BIT_1
13214d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_IS_DIAG_FW	BIT_2
13224d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_LOGGED_IN	BIT_3
13234d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_WAITING_FOR_VERIFY	BIT_4
13244d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13254d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VERIFY_CHIP_IOCB_TYPE	0x1B
13264d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayamstruct verify_chip_entry_84xx {
13274d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_type;
13284d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_count;
13294d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t sys_defined;
13304d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_status;
13314d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13324d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t handle;
13334d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13344d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t options;
13354d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_DONT_UPDATE_FW	BIT_0
13364d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_FORCE_UPDATE	BIT_1
13374d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_DONT_RESET_UPDATE	BIT_2
13384d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_DIAG_FW		BIT_3
13394d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_END_OF_DATA		BIT_14
13404d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_ENABLE_DSD		BIT_15
13414d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13424d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved_1;
13434d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13444d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t data_seg_cnt;
13454d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved_2[3];
13464d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13474d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t fw_ver;
13484d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t exchange_address;
13494d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13504d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved_3[3];
13514d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t fw_size;
13524d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t fw_seq_size;
13534d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t relative_offset;
13544d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13554d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t dseg_address[2];
13564d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t dseg_length;
13574d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam};
13584d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13594d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayamstruct verify_chip_rsp_84xx {
13604d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_type;
13614d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_count;
13624d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t sys_defined;
13634d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_status;
13644d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13654d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t handle;
13664d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13674d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t comp_status;
13684d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define CS_VCS_CHIP_FAILURE	0x3
13694d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define CS_VCS_BAD_EXCHANGE	0x8
13704d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define CS_VCS_SEQ_COMPLETEi	0x40
13714d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13724d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t failure_code;
13734d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VFC_CHECKSUM_ERROR	0x1
13744d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VFC_INVALID_LEN		0x2
13754d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VFC_ALREADY_IN_PROGRESS	0x8
13764d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13774d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved_1[4];
13784d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13794d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t fw_ver;
13804d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t exchange_address;
13814d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13824d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved_2[6];
13834d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam};
13844d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13854d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACCESS_CHIP_IOCB_TYPE	0x2B
13864d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayamstruct access_chip_84xx {
13874d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_type;
13884d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_count;
13894d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t sys_defined;
13904d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_status;
13914d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13924d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t handle;
13934d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13944d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t options;
13954d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACO_DUMP_MEMORY		0x0
13964d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACO_LOAD_MEMORY		0x1
13974d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACO_CHANGE_CONFIG_PARAM	0x2
13984d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACO_REQUEST_INFO	0x3
13994d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
14004d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved1;
14014d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
14024d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t dseg_count;
14034d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved2[3];
14044d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
14054d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t parameter1;
14064d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t parameter2;
14074d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t parameter3;
14084d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
14094d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved3[3];
14104d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t total_byte_cnt;
14114d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved4;
14124d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
14134d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t dseg_address[2];
14144d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t dseg_length;
14154d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam};
14164d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
14174d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayamstruct access_chip_rsp_84xx {
14184d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_type;
14194d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_count;
14204d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t sys_defined;
14214d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_status;
14224d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
14234d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t handle;
14244d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
14254d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t comp_status;
14264d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t failure_code;
14274d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t residual_count;
14284d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
14294d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved[12];
14304d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam};
14313a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14323a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez/* 81XX Support **************************************************************/
14333a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14343a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_DCBX_START		0x8016
14353a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_DCBX_COMPLETE	0x8030
14363a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_FCF_CONF_ERR	0x8031
14373a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_DCBX_PARAM_UPDATE	0x8032
14383a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_IDC_COMPLETE	0x8100
14393a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_IDC_NOTIFY		0x8101
14403a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_IDC_TIME_EXT	0x8102
14413a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14428a659571eccfde1df9bd057d67be51d1aaa0e2dbAndrew Vasquez#define MBC_IDC_ACK		0x101
14436e181be508cf81fda4407b4689befeb7e4149607Lalit Chandivade#define MBC_RESTART_MPI_FW	0x3d
14441d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define MBC_FLASH_ACCESS_CTRL	0x3e	/* Control flash access. */
1445ce0423f4a23317d0166addd7d6fcc4a0fa95e751Andrew Vasquez#define MBC_GET_XGMAC_STATS	0x7a
144611bbc1d896637c1d83b11cc3b97ed3d6d2076c63Andrew Vasquez#define MBC_GET_DCBX_PARAMS	0x51
14471d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio
14481d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio/* Flash access control option field bit definitions */
14491d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_FORCE_SEMAPHORE		BIT_15
14501d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_REQUESTOR_ID		BIT_14
14511d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_SUBCODE		0xff
14521d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio
14531d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio/* Flash access control command subcodes */
14541d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_WRITE_PROTECT	0x00
14551d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_WRITE_ENABLE	0x01
14561d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_ERASE_SECTOR	0x02
14571d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_LOCK_SEMAPHORE	0x03
14581d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_UNLOCK_SEMAPHORE	0x04
14591d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_GET_SECTOR_SIZE	0x05
14608a659571eccfde1df9bd057d67be51d1aaa0e2dbAndrew Vasquez
14613a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquezstruct nvram_81xx {
14623a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* NVRAM header. */
14633a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t id[4];
14643a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t nvram_version;
14653a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_0;
14663a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14673a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Firmware Initialization Control Block. */
14683a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t version;
14693a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_1;
14703a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t frame_payload_size;
14713a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t execution_throttle;
14723a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t exchange_count;
14733a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_2;
14743a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14753a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t port_name[WWN_SIZE];
14763a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t node_name[WWN_SIZE];
14773a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14783a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t login_retry_count;
14793a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_3;
14803a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t interrupt_delay_timer;
14813a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t login_timeout;
14823a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14833a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_1;
14843a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_2;
14853a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_3;
14863a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14873a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_4[4];
14883a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14893a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 64. */
14903a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t enode_mac[6];
14913a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_5[5];
14923a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14933a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 80. */
14943a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_6[24];
14953a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14963a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 128. */
1497b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t ex_version;
1498b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t prio_fcf_matching_flags;
1499b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t reserved_6_1[3];
1500b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t pri_fcf_vlan_id;
1501b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t pri_fcf_fabric_name[8];
1502b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_6_2[7];
1503b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t spma_mac_addr[6];
1504b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_6_3[14];
1505b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez
1506b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	/* Offset 192. */
1507b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_7[32];
15083a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15093a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
15103a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0  = Enable spinup delay
15113a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 1  = Disable BIOS
15123a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 2  = Enable Memory Map BIOS
15133a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 3  = Enable Selectable Boot
15143a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4  = Disable RISC code load
15153a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 5  = Disable Serdes
15163a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 6  = Opt boot mode
15173a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 7  = Interrupt enable
15183a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
15193a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 8  = EV Control enable
15203a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 9  = Enable lip reset
15213a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 10 = Enable lip full login
15223a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 11 = Enable target reset
15233a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 12 = Stop firmware
15243a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 13 = Enable nodename option
15253a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 14 = Default WWPN valid
15263a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 15 = Enable alternate WWN
15273a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
15283a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 16 = CLP LUN string
15293a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 17 = CLP Target string
15303a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 18 = CLP BIOS enable string
15313a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 19 = CLP Serdes string
15323a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 20 = CLP WWPN string
15333a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 21 = CLP WWNN string
15343a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 22 =
15353a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 23 =
15363a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 24 = Keep WWPN
15373a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 25 = Temp WWPN
15383a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 26-31 =
15393a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
15403a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t host_p;
15413a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15423a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alternate_port_name[WWN_SIZE];
15433a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alternate_node_name[WWN_SIZE];
15443a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15453a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t boot_port_name[WWN_SIZE];
15463a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t boot_lun_number;
15473a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_8;
15483a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15493a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alt1_boot_port_name[WWN_SIZE];
15503a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t alt1_boot_lun_number;
15513a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_9;
15523a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15533a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alt2_boot_port_name[WWN_SIZE];
15543a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t alt2_boot_lun_number;
15553a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_10;
15563a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15573a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alt3_boot_port_name[WWN_SIZE];
15583a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t alt3_boot_lun_number;
15593a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_11;
15603a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15613a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
15623a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0 = Selective Login
15633a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 1 = Alt-Boot Enable
15643a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 2 = Reserved
15653a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 3 = Boot Order List
15663a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4 = Reserved
15673a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 5 = Selective LUN
15683a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 6 = Reserved
15693a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 7-31 =
15703a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
15713a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t efi_parameters;
15723a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15733a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reset_delay;
15743a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_12;
15753a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_13;
15763a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15773a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t boot_id_number;
15783a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_14;
15793a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15803a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t max_luns_per_target;
15813a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_15;
15823a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15833a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t port_down_retry_count;
15843a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t link_down_timeout;
15853a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15863a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* FCode parameters. */
15873a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t fcode_parameter;
15883a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15893a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_16[3];
15903a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15913a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 352. */
15923a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_17[4];
15933a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_18[5];
15943a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_19[2];
15953a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_20[8];
15963a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15973a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 384. */
15983a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_21[16];
1599cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	uint16_t reserved_22[3];
1600cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar
1601cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	/*
1602cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	 * BIT 0 = Extended BB credits for LR
1603cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	 * BIT 1 = Virtual Fabric Enable
1604cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	 * BIT 2 = Enhanced Features Unused
1605cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	 * BIT 3-7 = Enhanced Features Reserved
1606cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	 */
1607cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	/* Enhanced Features */
1608cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	uint8_t enhanced_features;
1609cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar
1610cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	uint8_t reserved_23;
1611cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	uint16_t reserved_24[4];
16123a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16133a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 416. */
1614cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	uint16_t reserved_25[32];
16153a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16163a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 480. */
16173a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t model_name[16];
16183a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16193a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 496. */
16203a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t feature_mask_l;
16213a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t feature_mask_h;
1622cad454b12a23c24fd7f409402cf51434655e76c1Santosh Vernekar	uint16_t reserved_26[2];
16233a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16243a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t subsystem_vendor_id;
16253a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t subsystem_device_id;
16263a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16273a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t checksum;
16283a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez};
16293a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16303a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez/*
16313a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez * ISP Initialization Control Block.
16323a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez * Little endian except where noted.
16333a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez */
16343a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define	ICB_VERSION 1
16353a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquezstruct init_cb_81xx {
16363a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t version;
16373a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_1;
16383a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16393a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t frame_payload_size;
16403a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t execution_throttle;
16413a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t exchange_count;
16423a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16433a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_2;
16443a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16453a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t port_name[WWN_SIZE];		/* Big endian. */
16463a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t node_name[WWN_SIZE];		/* Big endian. */
16473a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16483a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t response_q_inpointer;
16493a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t request_q_outpointer;
16503a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16513a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t login_retry_count;
16523a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16533a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t prio_request_q_outpointer;
16543a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16553a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t response_q_length;
16563a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t request_q_length;
16573a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16583a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_3;
16593a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16603a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t prio_request_q_length;
16613a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16623a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t request_q_address[2];
16633a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t response_q_address[2];
16643a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t prio_request_q_address[2];
16653a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16663a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_4[8];
16673a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16683a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t atio_q_inpointer;
16693a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t atio_q_length;
16703a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t atio_q_address[2];
16713a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16723a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t interrupt_delay_timer;		/* 100us increments. */
16733a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t login_timeout;
16743a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16753a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
16763a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0-3 = Reserved
16773a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4  = Enable Target Mode
16783a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 5  = Disable Initiator Mode
16793a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 6  = Reserved
16803a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 7  = Reserved
16813a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
16823a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 8-13 = Reserved
16833a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 14 = Node Name Option
16843a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 15-31 = Reserved
16853a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
16863a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_1;
16873a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16883a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
16893a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0  = Operation Mode bit 0
16903a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 1  = Operation Mode bit 1
16913a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 2  = Operation Mode bit 2
16923a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 3  = Operation Mode bit 3
16933a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4-7 = Reserved
16943a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
16953a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 8  = Enable Class 2
16963a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 9  = Enable ACK0
16973a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 10 = Reserved
16983a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 11 = Enable FC-SP Security
16993a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 12 = FC Tape Enable
17003a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 13 = Reserved
17013a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 14 = Enable Target PRLI Control
17023a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 15-31 = Reserved
17033a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
17043a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_2;
17053a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
17063a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
17073a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0-3 = Reserved
17083a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4  = FCP RSP Payload bit 0
17093a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 5  = FCP RSP Payload bit 1
17103a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 6  = Enable Receive Out-of-Order data frame handling
17113a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 7  = Reserved
17123a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
17133a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 8  = Reserved
17143a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 9  = Enable Out-of-Order FCP_XFER_RDY relative offset handling
17153a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 10-16 = Reserved
17163a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 17 = Enable multiple FCFs
17173a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 18-20 = MAC addressing mode
17183a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 21-25 = Ethernet data rate
17193a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 26 = Enable ethernet header rx IOCB for ATIO q
17203a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 27 = Enable ethernet header rx IOCB for response q
17213a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 28 = SPMA selection bit 0
17223a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 28 = SPMA selection bit 1
17233a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 30-31 = Reserved
17243a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
17253a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_3;
17263a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
17273a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t  reserved_5[8];
17283a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
17293a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t enode_mac[6];
17303a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
17313a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_6[10];
17323a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez};
17333a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
17343a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquezstruct mid_init_cb_81xx {
17353a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	struct init_cb_81xx init_cb;
17363a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
17373a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t count;
17383a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t options;
17393a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
17403a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	struct mid_conf_entry_24xx entries[MAX_MULTI_ID_FABRIC];
17413a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez};
17423a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
1743b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquezstruct ex_init_cb_81xx {
1744b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t ex_version;
1745b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t prio_fcf_matching_flags;
1746b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t reserved_1[3];
1747b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t pri_fcf_vlan_id;
1748b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t pri_fcf_fabric_name[8];
1749b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_2[7];
1750b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t spma_mac_addr[6];
1751b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_3[14];
1752b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez};
1753b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez
17543a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FARX_ACCESS_FLASH_CONF_81XX	0x7FFD0000
17553a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FARX_ACCESS_FLASH_DATA_81XX	0x7F800000
17563a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
175709ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke/* FCP priority config defines *************************************/
175809ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke/* operations */
175909ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define QLFC_FCP_PRIO_DISABLE           0x0
176009ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define QLFC_FCP_PRIO_ENABLE            0x1
176109ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define QLFC_FCP_PRIO_GET_CONFIG        0x2
176209ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define QLFC_FCP_PRIO_SET_CONFIG        0x3
176309ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke
176409ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radkestruct qla_fcp_prio_entry {
176509ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint16_t flags;         /* Describes parameter(s) in FCP        */
176609ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	/* priority entry that are valid        */
176709ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ENTRY_VALID            0x1
176809ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ENTRY_TAG_VALID        0x2
176909ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ENTRY_SPID_VALID       0x4
177009ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ENTRY_DPID_VALID       0x8
177109ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ENTRY_LUNB_VALID       0x10
177209ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ENTRY_LUNE_VALID       0x20
177309ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ENTRY_SWWN_VALID       0x40
177409ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ENTRY_DWWN_VALID       0x80
177509ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint8_t  tag;           /* Priority value                   */
177609ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint8_t  reserved;      /* Reserved for future use          */
177709ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint32_t src_pid;       /* Src port id. high order byte     */
177809ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke				/* unused; -1 (wild card)           */
177909ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint32_t dst_pid;       /* Src port id. high order byte     */
178009ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	/* unused; -1 (wild card)           */
178109ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint16_t lun_beg;       /* 1st lun num of lun range.        */
178209ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke				/* -1 (wild card)                   */
178309ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint16_t lun_end;       /* 2nd lun num of lun range.        */
178409ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke				/* -1 (wild card)                   */
178509ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint8_t  src_wwpn[8];   /* Source WWPN: -1 (wild card)      */
178609ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint8_t  dst_wwpn[8];   /* Destination WWPN: -1 (wild card) */
178709ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke};
178809ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke
178909ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radkestruct qla_fcp_prio_cfg {
179009ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint8_t  signature[4];  /* "HQOS" signature of config data  */
179109ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint16_t version;       /* 1: Initial version               */
179209ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint16_t length;        /* config data size in num bytes    */
179309ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint16_t checksum;      /* config data bytes checksum       */
179409ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint16_t num_entries;   /* Number of entries                */
179509ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint16_t size_of_entry; /* Size of each entry in num bytes  */
179609ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint8_t  attributes;    /* enable/disable, persistence      */
179709ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ATTR_DISABLE   0x0
179809ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ATTR_ENABLE    0x1
179909ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_ATTR_PERSIST   0x2
180009ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	uint8_t  reserved;      /* Reserved for future use          */
180109ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_CFG_HDR_SIZE   0x10
180209ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke	struct qla_fcp_prio_entry entry[1];     /* fcp priority entries  */
180309ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_CFG_ENTRY_SIZE 0x20
180409ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke};
180509ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke
180609ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FCP_PRIO_CFG_SIZE       (32*1024) /* fcp prio data per port*/
180709ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke
180809ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke/* 25XX Support ****************************************************/
180909ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FA_FCP_PRIO0_ADDR_25	0x3C000
181009ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke#define FA_FCP_PRIO1_ADDR_25	0x3E000
181109ff701a177b116c6c15b6e501e58fbfb306b424Sarang Radke
18123a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez/* 81XX Flash locations -- occupies second 2MB region. */
18133a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_BOOT_CODE_ADDR_81	0x80000
18143a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_RISC_CODE_ADDR_81	0xA0000
18153a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_FW_AREA_ADDR_81	0xC0000
18163a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_VPD_NVRAM_ADDR_81	0xD0000
18173d79038f92841052aced9aec43c9d9aa864d28abAndrew Vasquez#define FA_VPD0_ADDR_81		0xD0000
18183d79038f92841052aced9aec43c9d9aa864d28abAndrew Vasquez#define FA_VPD1_ADDR_81		0xD0400
18193d79038f92841052aced9aec43c9d9aa864d28abAndrew Vasquez#define FA_NVRAM0_ADDR_81	0xD0080
1820fc3ea9bcb86a1c5126807f747291563e08405944Harish Zunjarrao#define FA_NVRAM1_ADDR_81	0xD0180
18213a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_FEATURE_ADDR_81	0xD4000
18223a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_FLASH_DESCR_ADDR_81	0xD8000
18233a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_FLASH_LAYOUT_ADDR_81	0xD8400
18243a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_HW_EVENT0_ADDR_81	0xDC000
18253a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_HW_EVENT1_ADDR_81	0xDC400
18263a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_NPIV_CONF0_ADDR_81	0xD1000
18273a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_NPIV_CONF1_ADDR_81	0xD2000
18283a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
18293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#endif
1830