qla_fw.h revision f9e899ebe502e547fca37f64ebc4b1399880d8f7
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
6303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
6313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP queue - Mailbox Command entry structure definition.
6323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
6333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MBX_IOCB_TYPE	0x39
6343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct mbx_entry_24xx {
6353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
6363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
6373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t handle_count;		/* Handle count. */
6383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
6393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
6413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mbx[28];
6433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
6443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LOGINOUT_PORT_IOCB_TYPE	0x52	/* Login/Logout Port entry. */
6473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct logio_entry_24xx {
6483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
6493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
6503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System defined. */
6513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
6523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
6543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t comp_status;		/* Completion status. */
6563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_LOGIO_ERROR		0x31	/* Login/Logout IOCB error. */
6573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
6593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t control_flags;		/* Control flags. */
6613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Modifiers. */
662c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define LCF_INCLUDE_SNS		BIT_10	/* Include SNS (FFFFFC) during LOGO. */
6633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_FCP2_OVERRIDE	BIT_9	/* Set/Reset word 3 of PRLI. */
6643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_CLASS_2		BIT_8	/* Enable class 2 during PLOGI. */
6653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_FREE_NPORT		BIT_7	/* Release NPORT handle after LOGO. */
6663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_EXPL_LOGO		BIT_6	/* Perform an explicit LOGO. */
6673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_SKIP_PRLI		BIT_5	/* Skip PRLI after PLOGI. */
6683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_IMPL_LOGO_ALL	BIT_5	/* Implicit LOGO to all ports. */
6693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COND_PLOGI		BIT_4	/* PLOGI only if not logged-in. */
6703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_IMPL_LOGO		BIT_4	/* Perform an implicit LOGO. */
6713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_IMPL_PRLO		BIT_4	/* Perform an implicit PRLO. */
6723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Commands. */
6733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_PLOGI	0x00	/* PLOGI. */
6743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_PRLI	0x01	/* PRLI. */
6753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_PDISC	0x02	/* PDISC. */
6763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_ADISC	0x03	/* ADISC. */
6773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_LOGO	0x08	/* LOGO. */
6783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_PRLO	0x09	/* PRLO. */
6793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LCF_COMMAND_TPRLO	0x0A	/* TPRLO. */
6803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
6823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_1;
6833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];		/* PortID of destination port. */
6853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t rsp_size;		/* Response size in 32bit words. */
6873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t io_parameter[11];	/* General I/O parameters. */
6893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOLINK	0x01
6903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOIOCB	0x02
6913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOXCB		0x03
6923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_CMD_FAILED	0x04
6933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOFABRIC	0x05
6943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_FW_NOT_READY	0x07
6953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOT_LOGGED_IN	0x09
6963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOPCB		0x0A
6973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
6983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_ELS_REJECT	0x18
6993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_CMD_PARAM_ERR	0x19
7003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_PORTID_USED	0x1A
7013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NPORT_USED	0x1B
7023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NONPORT	0x1C
7033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_LOGGED_IN	0x1D
7043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define LSC_SCODE_NOFLOGI_ACC	0x1F
7053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
7063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TSK_MGMT_IOCB_TYPE	0x14
7083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct tsk_mgmt_entry {
7093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
7103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
7113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t handle_count;		/* Handle count. */
7123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
7133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
7153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
7173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;
7193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t delay;			/* Activity delay in seconds. */
7213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t timeout;		/* Command timeout. */
7233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
724523ec773b8ffb1c607bc3a54c9526558e3b1eab1Andrew Vasquez	struct scsi_lun lun;		/* FCP LUN (BE). */
7253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t control_flags;		/* Control Flags. */
7273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_NOTMCMD_TO_TARGET	BIT_31
7283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_LUN_RESET		BIT_4
7293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_ABORT_TASK_SET	BIT_3
7303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_CLEAR_TASK_SET	BIT_2
7313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_TARGET_RESET	BIT_1
7323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define TCF_CLEAR_ACA		BIT_0
7333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_2[20];
7353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];		/* PortID of destination port. */
7373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
7383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_3[12];
7403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
7413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ABORT_IOCB_TYPE	0x33
7433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct abort_entry_24xx {
7443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
7453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
7463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t handle_count;		/* Handle count. */
7473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
7483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
7503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t nport_handle;		/* N_PORT handle. */
7523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* or Completion status. */
7533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t options;		/* Options. */
7553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define AOF_NO_ABTS		BIT_0	/* Do not send any ABTS. */
7563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle_to_abort;	/* System handle to abort. */
7583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
75973208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint16_t req_que_no;
76073208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint8_t reserved_1[30];
7613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];		/* PortID of destination port. */
7633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_index;
7643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_2[12];
7663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
7673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/*
7693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez * ISP I/O Register Set structure definitions.
7703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez */
7713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct device_reg_24xx {
7723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t flash_addr;		/* Flash/NVRAM BIOS address. */
7733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_DATA_FLAG	BIT_31
7743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_ACCESS_FLASH_CONF	0x7FFD0000
7753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_ACCESS_FLASH_DATA	0x7FF00000
7763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_ACCESS_NVRAM_CONF	0x7FFF0000
7773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FARX_ACCESS_NVRAM_DATA	0x7FFE0000
7783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_NVRAM_FUNC0_ADDR	0x80
7803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_NVRAM_FUNC1_ADDR	0x180
7813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
7826f6417905cf272337a9762e1f92a1fffa651fcd3Andrew Vasquez#define FA_NVRAM_VPD_SIZE	0x200
7833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_NVRAM_VPD0_ADDR	0x00
7843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_NVRAM_VPD1_ADDR	0x100
785b7cc176c9eb3aa6989ac099efd8bdd6d0eaa784aJoe Carnuccio
786b7cc176c9eb3aa6989ac099efd8bdd6d0eaa784aJoe Carnuccio#define FA_BOOT_CODE_ADDR	0x00000
7873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/*
7883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 * RISC code begins at offset 512KB
7893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 * within flash. Consisting of two
7903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 * contiguous RISC code segments.
7913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 */
7923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_RISC_CODE_ADDR	0x20000
7933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define FA_RISC_CODE_SEGMENTS	2
7943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
795c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FA_FLASH_DESCR_ADDR_24	0x11000
796c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FA_FLASH_LAYOUT_ADDR_24	0x11400
797272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FA_NPIV_CONF0_ADDR_24	0x16000
798272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FA_NPIV_CONF1_ADDR_24	0x17000
799c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
800c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FA_FW_AREA_ADDR		0x40000
801c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FA_VPD_NVRAM_ADDR	0x48000
802c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FA_FEATURE_ADDR		0x4C000
803c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define FA_FLASH_DESCR_ADDR	0x50000
804c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FA_FLASH_LAYOUT_ADDR	0x50400
805cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define FA_HW_EVENT0_ADDR	0x54000
806c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FA_HW_EVENT1_ADDR	0x54400
807cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define FA_HW_EVENT_SIZE	0x200
808cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define FA_HW_EVENT_ENTRY_SIZE	4
809272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FA_NPIV_CONF0_ADDR	0x5C000
810272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FA_NPIV_CONF1_ADDR	0x5D000
811272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez
812cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez/*
813cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez * Flash Error Log Event Codes.
814cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez */
815cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_RESET_ERR	0xF00B
816cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_ISP_ERR	0xF020
817cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_PARITY_ERR	0xF022
818cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_NVRAM_CHKSUM_ERR	0xF023
819cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez#define HW_EVENT_FLASH_FW_ERR	0xF024
820cb8dacbf1110d8bd39413f3116ff1720f757854eAndrew Vasquez
8213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t flash_data;		/* Flash/NVRAM BIOS data. */
8223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t ctrl_status;		/* Control/Status. */
8243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_FLASH_ACCESS_ERROR	BIT_18	/* Flash/NVRAM Access Error. */
8253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_DMA_ACTIVE		BIT_17	/* DMA Active status. */
8263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_DMA_SHUTDOWN	BIT_16	/* DMA Shutdown control status. */
8273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_FUNCTION		BIT_15	/* Function number. */
8283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* PCI-X Bus Mode. */
8293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_PCIX_BUS_MODE_MASK	(BIT_11|BIT_10|BIT_9|BIT_8)
8303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCI_33MHZ		(0 << 8)
8313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M1_66MHZ	(1 << 8)
8323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M1_100MHZ	(2 << 8)
8333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M1_133MHZ	(3 << 8)
8343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M2_66MHZ	(5 << 8)
8353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M2_100MHZ	(6 << 8)
8363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCIX_M2_133MHZ	(7 << 8)
8373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define PBM_PCI_66MHZ		(8 << 8)
8383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Max Write Burst byte count. */
8393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_MAX_WRT_BURST_MASK	(BIT_5|BIT_4)
8403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MWB_512_BYTES		(0 << 4)
8413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MWB_1024_BYTES		(1 << 4)
8423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MWB_2048_BYTES		(2 << 4)
8433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MWB_4096_BYTES		(3 << 4)
8443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_64BIT_SLOT		BIT_2	/* PCI 64-Bit Bus Slot. */
8463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_FLASH_ENABLE	BIT_1	/* Flash BIOS Read/Write enable. */
8473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CSRX_ISP_SOFT_RESET	BIT_0	/* ISP soft reset. */
8483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t ictrl;			/* Interrupt control. */
8503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ICRX_EN_RISC_INT	BIT_3	/* Enable RISC interrupts on PCI. */
8513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t istatus;		/* Interrupt status. */
8533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define ISRX_RISC_INT		BIT_3	/* RISC interrupt. */
8543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t unused_1[2];		/* Gap. */
8563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Request Queue. */
8583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t req_q_in;		/*  In-Pointer. */
8593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t req_q_out;		/*  Out-Pointer. */
8603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Response Queue. */
8613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rsp_q_in;		/*  In-Pointer. */
8623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t rsp_q_out;		/*  Out-Pointer. */
8633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Priority Request Queue. */
8643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t preq_q_in;		/*  In-Pointer. */
8653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t preq_q_out;		/*  Out-Pointer. */
8663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t unused_2[2];		/* Gap. */
8683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* ATIO Queue. */
8703d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t atio_q_in;		/*  In-Pointer. */
8713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t atio_q_out;		/*  Out-Pointer. */
8723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t host_status;
8743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HSRX_RISC_INT		BIT_15	/* RISC to Host interrupt. */
8753d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HSRX_RISC_PAUSED	BIT_8	/* RISC Paused. */
8763d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8773d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t hccr;			/* Host command & control register. */
8783d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* HCCR statuses. */
8793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_HOST_INT		BIT_6	/* Host to RISC interrupt bit. */
8803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_RISC_RESET	BIT_5	/* RISC Reset mode bit. */
8813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* HCCR commands. */
8823d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* NOOP. */
8833d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_NOOP		0x00000000
8843d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Set RISC Reset. */
8853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_SET_RISC_RESET	0x10000000
8863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Clear RISC Reset. */
8873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_CLR_RISC_RESET	0x20000000
8883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Set RISC Pause. */
8893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_SET_RISC_PAUSE	0x30000000
8903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Releases RISC Pause. */
8913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_REL_RISC_PAUSE	0x40000000
8923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Set HOST to RISC interrupt. */
8933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_SET_HOST_INT	0x50000000
8943d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Clear HOST to RISC interrupt. */
8953d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_CLR_HOST_INT	0x60000000
8963d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Clear RISC to PCI interrupt. */
8973d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define HCCRX_CLR_RISC_INT	0xA0000000
8983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
8993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t gpiod;			/* GPIO Data register. */
900c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez
9013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* LED update mask. */
9023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_UPDATE_MASK	(BIT_20|BIT_19|BIT_18)
9033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Data update mask. */
9043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_DATA_UPDATE_MASK	(BIT_17|BIT_16)
905c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez					/* Data update mask. */
906c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define GPDX_DATA_UPDATE_2_MASK	(BIT_28|BIT_27|BIT_26|BIT_17|BIT_16)
9073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* LED control mask. */
9083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_COLOR_MASK	(BIT_4|BIT_3|BIT_2)
9093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* LED bit values. Color names as
9103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 * referenced in fw spec.
9113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					 */
9123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_YELLOW_ON	BIT_2
9133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_GREEN_ON	BIT_3
9143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_LED_AMBER_ON	BIT_4
9153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Data in/out. */
9163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPDX_DATA_INOUT		(BIT_1|BIT_0)
9173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t gpioe;			/* GPIO Enable register. */
9193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Enable update mask. */
9203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPEX_ENABLE_UPDATE_MASK	(BIT_17|BIT_16)
921c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez					/* Enable update mask. */
922c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez#define GPEX_ENABLE_UPDATE_2_MASK (BIT_28|BIT_27|BIT_26|BIT_17|BIT_16)
9233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Enable. */
9243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define GPEX_ENABLE		(BIT_1|BIT_0)
9253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9263d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t iobase_addr;		/* I/O Bus Base Address register. */
9273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t unused_3[10];		/* Gap. */
9293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
9303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox0;
9313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox1;
9323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox2;
9333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox3;
9343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox4;
9353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox5;
9363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox6;
9373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox7;
9383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox8;
9393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox9;
9403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox10;
9413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox11;
9423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox12;
9433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox13;
9443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox14;
9453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox15;
9463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox16;
9473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox17;
9483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox18;
9493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox19;
9503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox20;
9513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox21;
9523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox22;
9533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox23;
9543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox24;
9553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox25;
9563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox26;
9573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox27;
9583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox28;
9593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox29;
9603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox30;
9613d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t mailbox31;
962c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez
963c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t iobase_window;
964b58369273956775c3e8b7bbbe152593d52762099Andrew Vasquez	uint32_t iobase_c4;
96505236a050f8e3a20962bad98ad8ceb94bbdb748cAndrew Vasquez	uint32_t iobase_c8;
96605236a050f8e3a20962bad98ad8ceb94bbdb748cAndrew Vasquez	uint32_t unused_4_1[6];		/* Gap. */
967c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t iobase_q;
968c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t unused_5[2];		/* Gap. */
969c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t iobase_select;
970c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t unused_6[2];		/* Gap. */
971c3a2f0dfe1cecac76950f340f540c1a887dd2500Andrew Vasquez	uint32_t iobase_sdata;
9723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
9733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
97400b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez/* Trace Control *************************************************************/
97500b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez
97600b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez#define TC_AEN_DISABLE		0
97700b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez
97800b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez#define TC_EFT_ENABLE		4
97900b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez#define TC_EFT_DISABLE		5
98000b6bd25166e2a4bad23c614c10c55993bb2489eAndrew Vasquez
981df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_ENABLE		8
982df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_OPTIONS		0
983df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_DEFAULT_RX_SIZE	2112
984df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_DEFAULT_TX_SIZE	2112
985df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_DISABLE		9
986df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez#define TC_FCE_DISABLE_TRACE	BIT_0
987df613b96077cee826b14089ae6e75eeabf71faa3Andrew Vasquez
9883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/* MID Support ***************************************************************/
9893d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
990eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez#define MIN_MULTI_ID_FABRIC	64	/* Must be power-of-2. */
991eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez#define MAX_MULTI_ID_FABRIC	256	/* ... */
992eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez
993eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez#define for_each_mapped_vp_idx(_ha, _idx)		\
994eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez	for (_idx = find_next_bit((_ha)->vp_idx_map,	\
995eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez		(_ha)->max_npiv_vports + 1, 1);		\
996eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez	    _idx <= (_ha)->max_npiv_vports;		\
997eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez	    _idx = find_next_bit((_ha)->vp_idx_map,	\
998eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez		(_ha)->max_npiv_vports + 1, _idx + 1))	\
9993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct mid_conf_entry_24xx {
10013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t reserved_1;
10023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	/*
10043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 0  = Enable Hard Loop Id
10053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 1  = Acquire Loop ID in LIPA
10063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 2  = ID not Acquired
10073d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 3  = Enable VP
10083d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 4  = Enable Initiator Mode
10093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 5  = Disable Target Mode
10103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 * BIT 6-7 = Reserved
10113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	 */
10123d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t options;
10133d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t hard_address;
10153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name[WWN_SIZE];
10173d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name[WWN_SIZE];
10183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
10193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct mid_init_cb_24xx {
10213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	struct init_cb_24xx init_cb;
10223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10233d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t count;
10243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t options;
10253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
1026eb66dc60be5a72bc940458a5adfd400e4d810d49Andrew Vasquez	struct mid_conf_entry_24xx entries[MAX_MULTI_ID_FABRIC];
10273d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
10283d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10293d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct mid_db_entry_24xx {
10313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t status;
10323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MDBS_NON_PARTIC		BIT_3
10333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MDBS_ID_ACQUIRED	BIT_1
10343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define MDBS_ENABLED		BIT_0
10353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t options;
10373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t hard_address;
10383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name[WWN_SIZE];
10403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name[WWN_SIZE];
10413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];
10433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_1;
10443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
10453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10462c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju/*
10472c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju * Virtual Port Control IOCB
10482c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju */
10493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VP_CTRL_IOCB_TYPE	0x30	/* Vitual Port Control entry. */
10503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct vp_ctrl_entry_24xx {
10513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
10523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
10533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System defined. */
10543d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
10553d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10563d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
10573d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10583d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t vp_idx_failed;
10593d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10603d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t comp_status;		/* Completion status. */
10612c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define CS_VCE_IOCB_ERROR       0x01    /* Error processing IOCB */
10623d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCE_ACQ_ID_ERROR	0x02	/* Error while acquireing ID. */
10633d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCE_BUSY		0x05	/* Firmware not ready to accept cmd. */
10643d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10653d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t command;
10663d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VCE_COMMAND_ENABLE_VPS	0x00	/* Enable VPs. */
10673d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VCE_COMMAND_DISABLE_VPS	0x08	/* Disable VPs. */
10683d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VCE_COMMAND_DISABLE_VPS_REINIT	0x09 /* Disable VPs and reinit link. */
10693d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VCE_COMMAND_DISABLE_VPS_LOGO	0x0a /* Disable VPs and LOGO ports. */
10702c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define VCE_COMMAND_DISABLE_VPS_LOGO_ALL        0x0b /* Disable VPs and LOGO ports. */
10713d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10723d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t vp_count;
10733d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10743d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_idx_map[16];
10752c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t flags;
1076c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint16_t id;
10772c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t reserved_4;
1078c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint16_t hopct;
1079c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint8_t reserved_5[24];
10803d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
10813d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10822c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju/*
10832c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju * Modify Virtual Port Configuration IOCB
10842c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju */
10853d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VP_CONFIG_IOCB_TYPE	0x31	/* Vitual Port Config entry. */
10863d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct vp_config_entry_24xx {
10873d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
10883d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
10892c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t handle_count;
10903d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
10913d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10923d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
10933d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10942c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t flags;
10952c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define CS_VF_BIND_VPORTS_TO_VF         BIT_0
10962c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define CS_VF_SET_QOS_OF_VPORTS         BIT_1
10972c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define CS_VF_SET_HOPS_OF_VPORTS        BIT_2
10983d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
10993d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t comp_status;		/* Completion status. */
11003d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_STS_ERROR	0x01	/* Specified VPs were not disabled. */
11013d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_CNT_ERROR	0x02	/* Invalid VP count. */
11023d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_ERROR		0x03	/* Unknown error. */
11033d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_IDX_ERROR	0x02	/* Invalid VP index. */
11043d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define CS_VCT_BUSY		0x05	/* Firmware not ready to accept cmd. */
11053d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11063d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t command;
11072c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define VCT_COMMAND_MOD_VPS     0x00    /* Modify VP configurations. */
11082c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define VCT_COMMAND_MOD_ENABLE_VPS 0x01 /* Modify configuration & enable VPs. */
11093d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11103d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_count;
11113d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11122c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t vp_index1;
11132c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint8_t vp_index2;
11143d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11153d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t options_idx1;
11163d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t hard_address_idx1;
11172c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t reserved_vp1;
11183d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name_idx1[WWN_SIZE];
11193d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name_idx1[WWN_SIZE];
11203d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11213d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t options_idx2;
11223d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t hard_address_idx2;
11232c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t reserved_vp2;
11243d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_name_idx2[WWN_SIZE];
11253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t node_name_idx2[WWN_SIZE];
1126c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint16_t id;
11272c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju	uint16_t reserved_4;
1128c6852c4c5984fff130a859792d4b26d30c85c54bSeokmann Ju	uint16_t hopct;
1129f9e899ebe502e547fca37f64ebc4b1399880d8f7Shyam Sundar	uint8_t reserved_5[2];
11303d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
11313d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11323d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#define VP_RPT_ID_IOCB_TYPE	0x32	/* Report ID Acquisition entry. */
11333d71644cf952fd1157a13173237258422ba3c569Andrew Vasquezstruct vp_rpt_id_entry_24xx {
11343d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_type;		/* Entry type. */
11353d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_count;		/* Entry count. */
11363d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t sys_define;		/* System defined. */
11373d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t entry_status;		/* Entry Status. */
11383d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11393d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint32_t handle;		/* System handle. */
11403d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11413d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t vp_count;		/* Format 0 -- | VP setup | VP acq |. */
11423d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Format 1 -- | VP count |. */
11433d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint16_t vp_idx;		/* Format 0 -- Reserved. */
11443d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez					/* Format 1 -- VP status and index. */
11453d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11463d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t port_id[3];
11473d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t format;
11483d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11493d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t vp_idx_map[16];
11503d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11513d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez	uint8_t reserved_4[32];
11523d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez};
11533d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez
11542c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju#define VF_EVFP_IOCB_TYPE       0x26    /* Exchange Virtual Fabric Parameters entry. */
11552c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Justruct vf_evfp_entry_24xx {
11562c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint8_t entry_type;             /* Entry type. */
11572c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint8_t entry_count;            /* Entry count. */
11582c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint8_t sys_define;             /* System defined. */
11592c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint8_t entry_status;           /* Entry Status. */
11602c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju
11612c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t handle;                /* System handle. */
11622c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t comp_status;           /* Completion status. */
11632c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t timeout;               /* timeout */
11642c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t adim_tagging_mode;
11652c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju
11662c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t vfport_id;
11672c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t exch_addr;
11682c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju
11692c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t nport_handle;          /* N_PORT handle. */
11702c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint16_t control_flags;
11712c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t io_parameter_0;
11722c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t io_parameter_1;
11732c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t tx_address[2];         /* Data segment 0 address. */
11742c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t tx_len;                /* Data segment 0 length. */
11752c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t rx_address[2];         /* Data segment 1 address. */
11762c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju        uint32_t rx_len;                /* Data segment 1 length. */
11772c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju};
11782c3dfe3f6ad8daff5acdb01713e4f2b116e78136Seokmann Ju
11793d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez/* END MID Support ***********************************************************/
11807d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez
11817d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez/* Flash Description Table ***************************************************/
11827d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez
11837d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquezstruct qla_fdt_layout {
11847d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t sig[4];
11857d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t version;
11867d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t len;
11877d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t checksum;
11887d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t unused1[2];
11897d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t model[16];
11907d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t man_id;
11917d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t id;
11927d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t flags;
11937d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t erase_cmd;
11947d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t alt_erase_cmd;
11957d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t wrt_enable_cmd;
11967d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t wrt_enable_bits;
11977d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t wrt_sts_reg_cmd;
11987d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t unprotect_sec_cmd;
11997d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t read_man_id_cmd;
12007d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint32_t block_size;
12017d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint32_t alt_block_size;
12027d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint32_t flash_size;
12037d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint32_t wrt_enable_data;
12047d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t read_id_addr_len;
12057d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t wrt_disable_bits;
12067d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t read_dev_id_len;
12077d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t chip_erase_cmd;
12087d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint16_t read_timeout;
12097d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t protect_sec_cmd;
12107d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez	uint8_t unused2[65];
12117d232c745ef2ce141cc9d9538421affa32846fdbAndrew Vasquez};
12124d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
1213c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez/* Flash Layout Table ********************************************************/
1214c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1215c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquezstruct qla_flt_location {
1216c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint8_t sig[4];
12173a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t start_lo;
12183a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t start_hi;
12193a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t version;
12203a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t unused[5];
1221c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t checksum;
1222c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez};
1223c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1224c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquezstruct qla_flt_header {
1225c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t version;
1226c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t length;
1227c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t checksum;
1228c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint16_t unused;
1229c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez};
1230c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1231c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_FW		0x01
1232c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_BOOT_CODE	0x07
1233c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_VPD_0		0x14
1234c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_NVRAM_0		0x15
1235c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_VPD_1		0x16
1236c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_NVRAM_1		0x17
1237c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_FDT		0x1a
1238c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_FLT		0x1c
1239c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_HW_EVENT_0	0x1d
1240c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez#define FLT_REG_HW_EVENT_1	0x1f
1241272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FLT_REG_NPIV_CONF_0	0x29
1242272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez#define FLT_REG_NPIV_CONF_1	0x2a
1243cbc8eb67da11a4972834f61fe4729f4c037a17c9Andrew Vasquez#define FLT_REG_GOLD_FW		0x2f
1244c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1245c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquezstruct qla_flt_region {
1246c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint32_t code;
1247c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint32_t size;
1248c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint32_t start;
1249c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez	uint32_t end;
1250c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez};
1251c00d8994d91e51aa6b891ad0e877f66cc1011de2Andrew Vasquez
1252272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez/* Flash NPIV Configuration Table ********************************************/
1253272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez
1254272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquezstruct qla_npiv_header {
1255272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint8_t sig[2];
1256272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t version;
1257272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t entries;
1258272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t unused[4];
1259272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t checksum;
1260272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez};
1261272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez
1262272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquezstruct qla_npiv_entry {
1263272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t flags;
1264272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t vf_id;
126573208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint8_t q_qos;
126673208dfd7ab19f379d73e8a0fbf30f92c203e5e8Anirban Chakraborty	uint8_t f_qos;
1267272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint16_t unused1;
1268272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint8_t port_name[WWN_SIZE];
1269272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez	uint8_t node_name[WWN_SIZE];
1270272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez};
1271272976ca186982f7bbc4f22876c53d6c9f7b6e32Andrew Vasquez
12724d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam/* 84XX Support **************************************************************/
12734d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
12744d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define MBA_ISP84XX_ALERT	0x800f  /* Alert Notification. */
12754d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define A84_PANIC_RECOVERY	0x1
12764d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define A84_OP_LOGIN_COMPLETE	0x2
12774d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define A84_DIAG_LOGIN_COMPLETE	0x3
12784d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define A84_GOLD_LOGIN_COMPLETE	0x4
12794d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
12804d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define MBC_ISP84XX_RESET	0x3a    /* Reset. */
12814d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
12824d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_REMOTE_FC_DOWN	BIT_0
12834d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_NSL_LINK_DOWN	BIT_1
12844d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_IS_DIAG_FW	BIT_2
12854d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_LOGGED_IN	BIT_3
12864d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define FSTATE_WAITING_FOR_VERIFY	BIT_4
12874d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
12884d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VERIFY_CHIP_IOCB_TYPE	0x1B
12894d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayamstruct verify_chip_entry_84xx {
12904d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_type;
12914d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_count;
12924d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t sys_defined;
12934d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_status;
12944d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
12954d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t handle;
12964d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
12974d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t options;
12984d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_DONT_UPDATE_FW	BIT_0
12994d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_FORCE_UPDATE	BIT_1
13004d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_DONT_RESET_UPDATE	BIT_2
13014d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_DIAG_FW		BIT_3
13024d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_END_OF_DATA		BIT_14
13034d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VCO_ENABLE_DSD		BIT_15
13044d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13054d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved_1;
13064d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13074d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t data_seg_cnt;
13084d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved_2[3];
13094d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13104d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t fw_ver;
13114d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t exchange_address;
13124d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13134d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved_3[3];
13144d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t fw_size;
13154d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t fw_seq_size;
13164d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t relative_offset;
13174d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13184d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t dseg_address[2];
13194d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t dseg_length;
13204d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam};
13214d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13224d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayamstruct verify_chip_rsp_84xx {
13234d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_type;
13244d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_count;
13254d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t sys_defined;
13264d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_status;
13274d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13284d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t handle;
13294d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13304d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t comp_status;
13314d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define CS_VCS_CHIP_FAILURE	0x3
13324d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define CS_VCS_BAD_EXCHANGE	0x8
13334d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define CS_VCS_SEQ_COMPLETEi	0x40
13344d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13354d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t failure_code;
13364d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VFC_CHECKSUM_ERROR	0x1
13374d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VFC_INVALID_LEN		0x2
13384d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define VFC_ALREADY_IN_PROGRESS	0x8
13394d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13404d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved_1[4];
13414d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13424d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t fw_ver;
13434d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t exchange_address;
13444d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13454d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved_2[6];
13464d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam};
13474d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13484d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACCESS_CHIP_IOCB_TYPE	0x2B
13494d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayamstruct access_chip_84xx {
13504d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_type;
13514d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_count;
13524d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t sys_defined;
13534d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_status;
13544d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13554d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t handle;
13564d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13574d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t options;
13584d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACO_DUMP_MEMORY		0x0
13594d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACO_LOAD_MEMORY		0x1
13604d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACO_CHANGE_CONFIG_PARAM	0x2
13614d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam#define ACO_REQUEST_INFO	0x3
13624d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13634d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved1;
13644d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13654d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t dseg_count;
13664d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t reserved2[3];
13674d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13684d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t parameter1;
13694d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t parameter2;
13704d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t parameter3;
13714d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13724d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved3[3];
13734d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t total_byte_cnt;
13744d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved4;
13754d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13764d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t dseg_address[2];
13774d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t dseg_length;
13784d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam};
13794d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13804d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayamstruct access_chip_rsp_84xx {
13814d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_type;
13824d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_count;
13834d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t sys_defined;
13844d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint8_t entry_status;
13854d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13864d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t handle;
13874d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13884d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t comp_status;
13894d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint16_t failure_code;
13904d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t residual_count;
13914d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam
13924d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam	uint32_t reserved[12];
13934d4df1932b6b116aecc81039066fec27f2050762Harihara Kadayam};
13943a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
13953a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez/* 81XX Support **************************************************************/
13963a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
13973a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_DCBX_START		0x8016
13983a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_DCBX_COMPLETE	0x8030
13993a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_FCF_CONF_ERR	0x8031
14003a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_DCBX_PARAM_UPDATE	0x8032
14013a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_IDC_COMPLETE	0x8100
14023a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_IDC_NOTIFY		0x8101
14033a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define MBA_IDC_TIME_EXT	0x8102
14043a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14058a659571eccfde1df9bd057d67be51d1aaa0e2dbAndrew Vasquez#define MBC_IDC_ACK		0x101
14066e181be508cf81fda4407b4689befeb7e4149607Lalit Chandivade#define MBC_RESTART_MPI_FW	0x3d
14071d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define MBC_FLASH_ACCESS_CTRL	0x3e	/* Control flash access. */
1408ce0423f4a23317d0166addd7d6fcc4a0fa95e751Andrew Vasquez#define MBC_GET_XGMAC_STATS	0x7a
140911bbc1d896637c1d83b11cc3b97ed3d6d2076c63Andrew Vasquez#define MBC_GET_DCBX_PARAMS	0x51
14101d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio
14111d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio/* Flash access control option field bit definitions */
14121d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_FORCE_SEMAPHORE		BIT_15
14131d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_REQUESTOR_ID		BIT_14
14141d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_SUBCODE		0xff
14151d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio
14161d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio/* Flash access control command subcodes */
14171d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_WRITE_PROTECT	0x00
14181d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_WRITE_ENABLE	0x01
14191d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_ERASE_SECTOR	0x02
14201d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_LOCK_SEMAPHORE	0x03
14211d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_UNLOCK_SEMAPHORE	0x04
14221d2874de809a14e6780246b99a18bbc0fc0a8f2aJoe Carnuccio#define FAC_OPT_CMD_GET_SECTOR_SIZE	0x05
14238a659571eccfde1df9bd057d67be51d1aaa0e2dbAndrew Vasquez
14243a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquezstruct nvram_81xx {
14253a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* NVRAM header. */
14263a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t id[4];
14273a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t nvram_version;
14283a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_0;
14293a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14303a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Firmware Initialization Control Block. */
14313a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t version;
14323a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_1;
14333a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t frame_payload_size;
14343a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t execution_throttle;
14353a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t exchange_count;
14363a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_2;
14373a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14383a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t port_name[WWN_SIZE];
14393a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t node_name[WWN_SIZE];
14403a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14413a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t login_retry_count;
14423a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_3;
14433a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t interrupt_delay_timer;
14443a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t login_timeout;
14453a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14463a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_1;
14473a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_2;
14483a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_3;
14493a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14503a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_4[4];
14513a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14523a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 64. */
14533a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t enode_mac[6];
14543a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_5[5];
14553a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14563a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 80. */
14573a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_6[24];
14583a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14593a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 128. */
1460b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t ex_version;
1461b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t prio_fcf_matching_flags;
1462b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t reserved_6_1[3];
1463b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t pri_fcf_vlan_id;
1464b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t pri_fcf_fabric_name[8];
1465b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_6_2[7];
1466b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t spma_mac_addr[6];
1467b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_6_3[14];
1468b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez
1469b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	/* Offset 192. */
1470b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_7[32];
14713a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
14723a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
14733a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0  = Enable spinup delay
14743a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 1  = Disable BIOS
14753a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 2  = Enable Memory Map BIOS
14763a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 3  = Enable Selectable Boot
14773a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4  = Disable RISC code load
14783a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 5  = Disable Serdes
14793a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 6  = Opt boot mode
14803a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 7  = Interrupt enable
14813a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
14823a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 8  = EV Control enable
14833a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 9  = Enable lip reset
14843a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 10 = Enable lip full login
14853a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 11 = Enable target reset
14863a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 12 = Stop firmware
14873a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 13 = Enable nodename option
14883a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 14 = Default WWPN valid
14893a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 15 = Enable alternate WWN
14903a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
14913a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 16 = CLP LUN string
14923a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 17 = CLP Target string
14933a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 18 = CLP BIOS enable string
14943a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 19 = CLP Serdes string
14953a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 20 = CLP WWPN string
14963a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 21 = CLP WWNN string
14973a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 22 =
14983a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 23 =
14993a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 24 = Keep WWPN
15003a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 25 = Temp WWPN
15013a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 26-31 =
15023a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
15033a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t host_p;
15043a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15053a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alternate_port_name[WWN_SIZE];
15063a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alternate_node_name[WWN_SIZE];
15073a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15083a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t boot_port_name[WWN_SIZE];
15093a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t boot_lun_number;
15103a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_8;
15113a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15123a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alt1_boot_port_name[WWN_SIZE];
15133a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t alt1_boot_lun_number;
15143a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_9;
15153a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15163a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alt2_boot_port_name[WWN_SIZE];
15173a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t alt2_boot_lun_number;
15183a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_10;
15193a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15203a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t alt3_boot_port_name[WWN_SIZE];
15213a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t alt3_boot_lun_number;
15223a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_11;
15233a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15243a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
15253a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0 = Selective Login
15263a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 1 = Alt-Boot Enable
15273a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 2 = Reserved
15283a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 3 = Boot Order List
15293a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4 = Reserved
15303a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 5 = Selective LUN
15313a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 6 = Reserved
15323a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 7-31 =
15333a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
15343a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t efi_parameters;
15353a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15363a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reset_delay;
15373a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_12;
15383a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_13;
15393a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15403a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t boot_id_number;
15413a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_14;
15423a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15433a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t max_luns_per_target;
15443a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_15;
15453a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15463a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t port_down_retry_count;
15473a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t link_down_timeout;
15483a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15493a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* FCode parameters. */
15503a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t fcode_parameter;
15513a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15523a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_16[3];
15533a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15543a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 352. */
15553a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_17[4];
15563a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_18[5];
15573a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_19[2];
15583a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_20[8];
15593a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15603a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 384. */
15613a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_21[16];
15623a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_22[8];
15633a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15643a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 416. */
15653a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_23[32];
15663a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15673a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 480. */
15683a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t model_name[16];
15693a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15703a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/* Offset 496. */
15713a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t feature_mask_l;
15723a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t feature_mask_h;
15733a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_24[2];
15743a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15753a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t subsystem_vendor_id;
15763a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t subsystem_device_id;
15773a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15783a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t checksum;
15793a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez};
15803a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15813a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez/*
15823a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez * ISP Initialization Control Block.
15833a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez * Little endian except where noted.
15843a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez */
15853a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define	ICB_VERSION 1
15863a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquezstruct init_cb_81xx {
15873a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t version;
15883a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_1;
15893a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15903a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t frame_payload_size;
15913a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t execution_throttle;
15923a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t exchange_count;
15933a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15943a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_2;
15953a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15963a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t port_name[WWN_SIZE];		/* Big endian. */
15973a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t node_name[WWN_SIZE];		/* Big endian. */
15983a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
15993a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t response_q_inpointer;
16003a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t request_q_outpointer;
16013a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16023a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t login_retry_count;
16033a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16043a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t prio_request_q_outpointer;
16053a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16063a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t response_q_length;
16073a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t request_q_length;
16083a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16093a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t reserved_3;
16103a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16113a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t prio_request_q_length;
16123a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16133a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t request_q_address[2];
16143a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t response_q_address[2];
16153a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t prio_request_q_address[2];
16163a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16173a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_4[8];
16183a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16193a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t atio_q_inpointer;
16203a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t atio_q_length;
16213a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t atio_q_address[2];
16223a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16233a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t interrupt_delay_timer;		/* 100us increments. */
16243a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t login_timeout;
16253a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16263a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
16273a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0-3 = Reserved
16283a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4  = Enable Target Mode
16293a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 5  = Disable Initiator Mode
16303a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 6  = Reserved
16313a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 7  = Reserved
16323a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
16333a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 8-13 = Reserved
16343a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 14 = Node Name Option
16353a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 15-31 = Reserved
16363a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
16373a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_1;
16383a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16393a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
16403a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0  = Operation Mode bit 0
16413a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 1  = Operation Mode bit 1
16423a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 2  = Operation Mode bit 2
16433a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 3  = Operation Mode bit 3
16443a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4-7 = Reserved
16453a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
16463a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 8  = Enable Class 2
16473a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 9  = Enable ACK0
16483a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 10 = Reserved
16493a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 11 = Enable FC-SP Security
16503a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 12 = FC Tape Enable
16513a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 13 = Reserved
16523a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 14 = Enable Target PRLI Control
16533a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 15-31 = Reserved
16543a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
16553a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_2;
16563a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16573a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	/*
16583a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 0-3 = Reserved
16593a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 4  = FCP RSP Payload bit 0
16603a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 5  = FCP RSP Payload bit 1
16613a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 6  = Enable Receive Out-of-Order data frame handling
16623a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 7  = Reserved
16633a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 *
16643a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 8  = Reserved
16653a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 9  = Enable Out-of-Order FCP_XFER_RDY relative offset handling
16663a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 10-16 = Reserved
16673a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 17 = Enable multiple FCFs
16683a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 18-20 = MAC addressing mode
16693a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 21-25 = Ethernet data rate
16703a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 26 = Enable ethernet header rx IOCB for ATIO q
16713a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 27 = Enable ethernet header rx IOCB for response q
16723a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 28 = SPMA selection bit 0
16733a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 28 = SPMA selection bit 1
16743a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 * BIT 30-31 = Reserved
16753a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	 */
16763a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint32_t firmware_options_3;
16773a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16783a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t  reserved_5[8];
16793a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16803a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t enode_mac[6];
16813a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16823a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint8_t reserved_6[10];
16833a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez};
16843a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16853a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquezstruct mid_init_cb_81xx {
16863a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	struct init_cb_81xx init_cb;
16873a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16883a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t count;
16893a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	uint16_t options;
16903a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
16913a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez	struct mid_conf_entry_24xx entries[MAX_MULTI_ID_FABRIC];
16923a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez};
16933a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
1694b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquezstruct ex_init_cb_81xx {
1695b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t ex_version;
1696b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t prio_fcf_matching_flags;
1697b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t reserved_1[3];
1698b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t pri_fcf_vlan_id;
1699b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t pri_fcf_fabric_name[8];
1700b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_2[7];
1701b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint8_t spma_mac_addr[6];
1702b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez	uint16_t reserved_3[14];
1703b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez};
1704b64b0e8fd964ce637794d4aaa772db1ae4298ea9Andrew Vasquez
17053a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FARX_ACCESS_FLASH_CONF_81XX	0x7FFD0000
17063a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FARX_ACCESS_FLASH_DATA_81XX	0x7F800000
17073a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
17083a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez/* 81XX Flash locations -- occupies second 2MB region. */
17093a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_BOOT_CODE_ADDR_81	0x80000
17103a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_RISC_CODE_ADDR_81	0xA0000
17113a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_FW_AREA_ADDR_81	0xC0000
17123a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_VPD_NVRAM_ADDR_81	0xD0000
17133d79038f92841052aced9aec43c9d9aa864d28abAndrew Vasquez#define FA_VPD0_ADDR_81		0xD0000
17143d79038f92841052aced9aec43c9d9aa864d28abAndrew Vasquez#define FA_VPD1_ADDR_81		0xD0400
17153d79038f92841052aced9aec43c9d9aa864d28abAndrew Vasquez#define FA_NVRAM0_ADDR_81	0xD0080
1716fc3ea9bcb86a1c5126807f747291563e08405944Harish Zunjarrao#define FA_NVRAM1_ADDR_81	0xD0180
17173a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_FEATURE_ADDR_81	0xD4000
17183a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_FLASH_DESCR_ADDR_81	0xD8000
17193a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_FLASH_LAYOUT_ADDR_81	0xD8400
17203a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_HW_EVENT0_ADDR_81	0xDC000
17213a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_HW_EVENT1_ADDR_81	0xDC400
17223a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_NPIV_CONF0_ADDR_81	0xD1000
17233a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez#define FA_NPIV_CONF1_ADDR_81	0xD2000
17243a03eb797ce76ae8868a1497e9e746ad0add1e3bAndrew Vasquez
17253d71644cf952fd1157a13173237258422ba3c569Andrew Vasquez#endif
1726