xref: /onnv-gate/usr/src/uts/common/sys/fibre-channel/fca/qlc/ql_init.h (revision 10736:d831c82c5d2c)
18311SSukumar.Swaminathan@Sun.COM /*
28311SSukumar.Swaminathan@Sun.COM  * CDDL HEADER START
38311SSukumar.Swaminathan@Sun.COM  *
48311SSukumar.Swaminathan@Sun.COM  * The contents of this file are subject to the terms of the
58311SSukumar.Swaminathan@Sun.COM  * Common Development and Distribution License (the "License").
68311SSukumar.Swaminathan@Sun.COM  * You may not use this file except in compliance with the License.
78311SSukumar.Swaminathan@Sun.COM  *
88311SSukumar.Swaminathan@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
98311SSukumar.Swaminathan@Sun.COM  * or http://www.opensolaris.org/os/licensing.
108311SSukumar.Swaminathan@Sun.COM  * See the License for the specific language governing permissions
118311SSukumar.Swaminathan@Sun.COM  * and limitations under the License.
128311SSukumar.Swaminathan@Sun.COM  *
138311SSukumar.Swaminathan@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
148311SSukumar.Swaminathan@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
158311SSukumar.Swaminathan@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
168311SSukumar.Swaminathan@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
178311SSukumar.Swaminathan@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
188311SSukumar.Swaminathan@Sun.COM  *
198311SSukumar.Swaminathan@Sun.COM  * CDDL HEADER END
208311SSukumar.Swaminathan@Sun.COM  */
218311SSukumar.Swaminathan@Sun.COM 
229156SDaniel.Beauregard@Sun.COM /* Copyright 2009 QLogic Corporation */
238311SSukumar.Swaminathan@Sun.COM 
248311SSukumar.Swaminathan@Sun.COM /*
259156SDaniel.Beauregard@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
268311SSukumar.Swaminathan@Sun.COM  * Use is subject to license terms.
278311SSukumar.Swaminathan@Sun.COM  */
288311SSukumar.Swaminathan@Sun.COM 
298311SSukumar.Swaminathan@Sun.COM #ifndef	_QL_INIT_H
308311SSukumar.Swaminathan@Sun.COM #define	_QL_INIT_H
318311SSukumar.Swaminathan@Sun.COM 
328311SSukumar.Swaminathan@Sun.COM /*
338311SSukumar.Swaminathan@Sun.COM  * ISP2xxx Solaris Fibre Channel Adapter (FCA) driver header file.
348311SSukumar.Swaminathan@Sun.COM  *
358311SSukumar.Swaminathan@Sun.COM  * ***********************************************************************
368311SSukumar.Swaminathan@Sun.COM  * *									**
378311SSukumar.Swaminathan@Sun.COM  * *				NOTICE					**
389156SDaniel.Beauregard@Sun.COM  * *		COPYRIGHT (C) 1996-2009 QLOGIC CORPORATION		**
398311SSukumar.Swaminathan@Sun.COM  * *			ALL RIGHTS RESERVED				**
408311SSukumar.Swaminathan@Sun.COM  * *									**
418311SSukumar.Swaminathan@Sun.COM  * ***********************************************************************
428311SSukumar.Swaminathan@Sun.COM  *
438311SSukumar.Swaminathan@Sun.COM  */
448311SSukumar.Swaminathan@Sun.COM 
458311SSukumar.Swaminathan@Sun.COM #ifdef	__cplusplus
468311SSukumar.Swaminathan@Sun.COM extern "C" {
478311SSukumar.Swaminathan@Sun.COM #endif
488311SSukumar.Swaminathan@Sun.COM 
498311SSukumar.Swaminathan@Sun.COM /*
508311SSukumar.Swaminathan@Sun.COM  * ISP2200 NVRAM structure definition.
518311SSukumar.Swaminathan@Sun.COM  * Little endian except where noted.
528311SSukumar.Swaminathan@Sun.COM  */
538311SSukumar.Swaminathan@Sun.COM typedef struct nvram {
548311SSukumar.Swaminathan@Sun.COM 	/*
558311SSukumar.Swaminathan@Sun.COM 	 * NVRAM header
568311SSukumar.Swaminathan@Sun.COM 	 */
578311SSukumar.Swaminathan@Sun.COM 	uint8_t	 id[4];
588311SSukumar.Swaminathan@Sun.COM 	uint8_t	 nvram_version;
598311SSukumar.Swaminathan@Sun.COM 	uint8_t	 reserved_0;
608311SSukumar.Swaminathan@Sun.COM 
618311SSukumar.Swaminathan@Sun.COM 	/*
628311SSukumar.Swaminathan@Sun.COM 	 * NVRAM RISC parameter block
638311SSukumar.Swaminathan@Sun.COM 	 */
648311SSukumar.Swaminathan@Sun.COM 	uint8_t	 parameter_block_version;
658311SSukumar.Swaminathan@Sun.COM 	uint8_t	 reserved_1;
668311SSukumar.Swaminathan@Sun.COM 
678311SSukumar.Swaminathan@Sun.COM 	/*
688311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 0  = enable_hard_loop_id
698311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 1  = enable_fairness
708311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 2  = enable_full_duplex
718311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 3  = enable_fast_posting
728311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 4  = enable_target_mode
738311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 5  = disable_initiator_mode
748311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 6  = enable_adisc
758311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 7  = enable_target_inquiry_data
768311SSukumar.Swaminathan@Sun.COM 	 *
778311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 0  = enable_port_update_ae
788311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 1  = disable_initial_lip
798311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 2  = enable_decending_soft_assign
808311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 3  = previous_assigned_addressing
818311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 4  = enable_stop_q_on_full
828311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 5  = enable_full_login_on_lip
838311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 6  = enable_node_name
848311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 7  = extended_control_block
858311SSukumar.Swaminathan@Sun.COM 	 */
868311SSukumar.Swaminathan@Sun.COM 	uint8_t	 firmware_options[2];
878311SSukumar.Swaminathan@Sun.COM 
888311SSukumar.Swaminathan@Sun.COM 	uint8_t	 max_frame_length[2];
898311SSukumar.Swaminathan@Sun.COM 	uint8_t	 max_iocb_allocation[2];
908311SSukumar.Swaminathan@Sun.COM 	uint8_t	 execution_throttle[2];
918311SSukumar.Swaminathan@Sun.COM 	uint8_t	 login_retry_count;
928311SSukumar.Swaminathan@Sun.COM 	uint8_t	 retry_delay;			/* unused */
938311SSukumar.Swaminathan@Sun.COM 	uint8_t	 port_name[8];			/* Big endian. */
948311SSukumar.Swaminathan@Sun.COM 	uint8_t	 hard_address[2];
958311SSukumar.Swaminathan@Sun.COM 	uint8_t	 inquiry;
968311SSukumar.Swaminathan@Sun.COM 	uint8_t	 login_timeout;
978311SSukumar.Swaminathan@Sun.COM 	uint8_t	 node_name[8];			/* Big endian. */
988311SSukumar.Swaminathan@Sun.COM 
998311SSukumar.Swaminathan@Sun.COM 	/*
1008311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 0 = Timer operation mode bit 0
1018311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 1 = Timer operation mode bit 1
1028311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 2 = Timer operation mode bit 2
1038311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 3 = Timer operation mode bit 3
1048311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 4 = P2P Connection option bit 0
1058311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 5 = P2P Connection option bit 1
1068311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 6 = P2P Connection option bit 2
1078311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 7 = Enable Non part on LIHA failure
1088311SSukumar.Swaminathan@Sun.COM 	 *
1098311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 0 = Enable class 2
1108311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 1 = Enable ACK0
1118311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 2 =
1128311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 3 =
1138311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 4 = FC Tape Enable
1148311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 5 = Enable FC Confirm
1158311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 6 = Enable command queuing in target mode
1168311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 7 = No Logo On Link Down
1178311SSukumar.Swaminathan@Sun.COM 	 */
1188311SSukumar.Swaminathan@Sun.COM 	uint8_t	 add_fw_opt[2];
1198311SSukumar.Swaminathan@Sun.COM 	uint8_t	 response_accumulation_timer;
1208311SSukumar.Swaminathan@Sun.COM 	uint8_t	 interrupt_delay_timer;
1218311SSukumar.Swaminathan@Sun.COM 
1228311SSukumar.Swaminathan@Sun.COM 	/*
1238311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 0 = Enable Read xfr_rdy
1248311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 1 = Soft ID only
1258311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 2 =
1268311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 3 =
1278311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 4 = FCP RSP Payload [0]
1288311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 5 = FCP RSP Payload [1] / Sbus enable - 2200
1298311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 6 =
1308311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 7 =
1318311SSukumar.Swaminathan@Sun.COM 	 *
1328311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 0 = Sbus enable - 2300
1338311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 1 =
1348311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 2 =
1358311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 3 =
1368311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 4 =
1378311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 5 = Enable 50 ohm termination
1388311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 6 = Data Rate (2300 only)
1398311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 7 = Data Rate (2300 only)
1408311SSukumar.Swaminathan@Sun.COM 	 */
1418311SSukumar.Swaminathan@Sun.COM 	uint8_t	 special_options[2];
1428311SSukumar.Swaminathan@Sun.COM 
1438311SSukumar.Swaminathan@Sun.COM 	/* Reserved for expanded RISC parameter block */
1448311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_4[26];
1458311SSukumar.Swaminathan@Sun.COM 
1468311SSukumar.Swaminathan@Sun.COM 	/*
1478311SSukumar.Swaminathan@Sun.COM 	 * NVRAM host parameter block
1488311SSukumar.Swaminathan@Sun.COM 	 *
1498311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 0 = unused
1508311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 1 = disable_bios
1518311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 2 = disable_luns
1528311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 3 = enable_selectable_boot
1538311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 4 = disable_risc_code_load
1548311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 5 = set_cache_line_size_1
1558311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 6 = pci_parity_disable
1568311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 7 = enable_extended_logging
1578311SSukumar.Swaminathan@Sun.COM 	 *
1588311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 0 = enable_64bit_addressing
1598311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 1 = enable_lip_reset
1608311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 2 = enable_lip_full_login
1618311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 3 = enable_target_reset
1628311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 4 = enable_database_storage
1638311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 5 = unused
1648311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 6 = unused
1658311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 7 = unused
1668311SSukumar.Swaminathan@Sun.COM 	 */
1678311SSukumar.Swaminathan@Sun.COM 	uint8_t	 host_p[2];
1688311SSukumar.Swaminathan@Sun.COM 
1698311SSukumar.Swaminathan@Sun.COM 	uint8_t	 boot_node_name[8];
1708311SSukumar.Swaminathan@Sun.COM 	uint8_t	 boot_lun_number;
1718311SSukumar.Swaminathan@Sun.COM 	uint8_t	 reset_delay;
1728311SSukumar.Swaminathan@Sun.COM 	uint8_t	 port_down_retry_count;
1738311SSukumar.Swaminathan@Sun.COM 	uint8_t	 reserved_5;
1748311SSukumar.Swaminathan@Sun.COM 
1758311SSukumar.Swaminathan@Sun.COM 	uint8_t  maximum_luns_per_target[2];
1768311SSukumar.Swaminathan@Sun.COM 
1778311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_6[14];
1788311SSukumar.Swaminathan@Sun.COM 
1798311SSukumar.Swaminathan@Sun.COM 	/* Offset 100 */
1808311SSukumar.Swaminathan@Sun.COM 	uint8_t reverved_7[12];
1818311SSukumar.Swaminathan@Sun.COM 
1828311SSukumar.Swaminathan@Sun.COM 	/* offset 112 */
1838311SSukumar.Swaminathan@Sun.COM 	uint8_t adapInfo[16];	/* Sun OEM HBA's 23xx only */
1848311SSukumar.Swaminathan@Sun.COM 
1858311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_8[22];
1868311SSukumar.Swaminathan@Sun.COM 
1878311SSukumar.Swaminathan@Sun.COM 	/* Offset 150 */
1888311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_9[50];
1898311SSukumar.Swaminathan@Sun.COM 
1908311SSukumar.Swaminathan@Sun.COM 	/* Offset 200 */
1918311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_10[32];
1928311SSukumar.Swaminathan@Sun.COM 
1938311SSukumar.Swaminathan@Sun.COM 	/*
1948311SSukumar.Swaminathan@Sun.COM 	 * NVRAM Adapter Features offset 232-239
1958311SSukumar.Swaminathan@Sun.COM 	 *
1968311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 0 = External GBIC
1978311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 1 = Risc RAM parity
1988311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 2 = Buffer Plus Module
1998311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 3 = Multi Chip Adapter
2008311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 4 =
2018311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 5 =
2028311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 6 =
2038311SSukumar.Swaminathan@Sun.COM 	 * LSB BIT 7 =
2048311SSukumar.Swaminathan@Sun.COM 	 *
2058311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 0 =
2068311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 1 =
2078311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 2 =
2088311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 3 =
2098311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 4 =
2108311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 5 =
2118311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 6 =
2128311SSukumar.Swaminathan@Sun.COM 	 * MSB BIT 7 =
2138311SSukumar.Swaminathan@Sun.COM 	 */
2148311SSukumar.Swaminathan@Sun.COM 	uint8_t adapter_features[2];
2158311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_11[6];
2168311SSukumar.Swaminathan@Sun.COM 
2178311SSukumar.Swaminathan@Sun.COM 	/*
2188311SSukumar.Swaminathan@Sun.COM 	 * Resrved for use with ISP2300 - offset 240
2198311SSukumar.Swaminathan@Sun.COM 	 */
2208311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_12[4];
2218311SSukumar.Swaminathan@Sun.COM 
2228311SSukumar.Swaminathan@Sun.COM 	/* Subsystem ID must be at offset 244 */
2238311SSukumar.Swaminathan@Sun.COM 	uint8_t subsystem_vendor_id[2];
2248311SSukumar.Swaminathan@Sun.COM 
2258311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_13[2];
2268311SSukumar.Swaminathan@Sun.COM 
2278311SSukumar.Swaminathan@Sun.COM 	/* Subsystem device ID must be at offset 248 */
2288311SSukumar.Swaminathan@Sun.COM 	uint8_t subsystem_device_id[2];
2298311SSukumar.Swaminathan@Sun.COM 
2308311SSukumar.Swaminathan@Sun.COM 	/* Subsystem vendor ID for ISP2200 */
2318311SSukumar.Swaminathan@Sun.COM 	uint8_t subsystem_vendor_id_2200[2];
2328311SSukumar.Swaminathan@Sun.COM 
2338311SSukumar.Swaminathan@Sun.COM 	/* Subsystem device ID for ISP2200 */
2348311SSukumar.Swaminathan@Sun.COM 	uint8_t subsystem_device_id_2200[2];
2358311SSukumar.Swaminathan@Sun.COM 
2368311SSukumar.Swaminathan@Sun.COM 	uint8_t	 reserved_14;
2378311SSukumar.Swaminathan@Sun.COM 	uint8_t	 checksum;
2388311SSukumar.Swaminathan@Sun.COM } nvram_t;
2398311SSukumar.Swaminathan@Sun.COM 
2408311SSukumar.Swaminathan@Sun.COM /*
2418311SSukumar.Swaminathan@Sun.COM  * NVRAM structure definition.
2428311SSukumar.Swaminathan@Sun.COM  */
2438311SSukumar.Swaminathan@Sun.COM typedef struct nvram_24xx {
2448311SSukumar.Swaminathan@Sun.COM 	/* NVRAM header. */
2458311SSukumar.Swaminathan@Sun.COM 	uint8_t id[4];
2468311SSukumar.Swaminathan@Sun.COM 	uint8_t nvram_version[2];
2478311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_0[2];
2488311SSukumar.Swaminathan@Sun.COM 
2498311SSukumar.Swaminathan@Sun.COM 	/* Firmware Initialization Control Block. */
2508311SSukumar.Swaminathan@Sun.COM 	uint8_t version[2];
2518311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_1[2];
2528311SSukumar.Swaminathan@Sun.COM 	uint8_t max_frame_length[2];
2538311SSukumar.Swaminathan@Sun.COM 	uint8_t execution_throttle[2];
2548311SSukumar.Swaminathan@Sun.COM 	uint8_t exchange_count[2];
2558311SSukumar.Swaminathan@Sun.COM 	uint8_t hard_address[2];
2568311SSukumar.Swaminathan@Sun.COM 	uint8_t port_name[8];
2578311SSukumar.Swaminathan@Sun.COM 	uint8_t node_name[8];
2588311SSukumar.Swaminathan@Sun.COM 	uint8_t login_retry_count[2];
2598311SSukumar.Swaminathan@Sun.COM 	uint8_t link_down_on_nos[2];
2608311SSukumar.Swaminathan@Sun.COM 	uint8_t interrupt_delay_timer[2];
2618311SSukumar.Swaminathan@Sun.COM 	uint8_t login_timeout[2];
2628311SSukumar.Swaminathan@Sun.COM 
2638311SSukumar.Swaminathan@Sun.COM 	/*
2648311SSukumar.Swaminathan@Sun.COM 	 * BIT 0  = Hard Assigned Loop ID
2658311SSukumar.Swaminathan@Sun.COM 	 * BIT 1  = Enable Fairness
2668311SSukumar.Swaminathan@Sun.COM 	 * BIT 2  = Enable Full-Duplex
2678311SSukumar.Swaminathan@Sun.COM 	 * BIT 3  = Reserved
2688311SSukumar.Swaminathan@Sun.COM 	 * BIT 4  = Target Mode Enable
2698311SSukumar.Swaminathan@Sun.COM 	 * BIT 5  = Initiator Mode Disable
2708311SSukumar.Swaminathan@Sun.COM 	 * BIT 6  = Reserved
2718311SSukumar.Swaminathan@Sun.COM 	 * BIT 7  = Reserved
2728311SSukumar.Swaminathan@Sun.COM 	 *
2738311SSukumar.Swaminathan@Sun.COM 	 * BIT 8  = Reserved
2748311SSukumar.Swaminathan@Sun.COM 	 * BIT 9  = Disable Initial LIP
2758311SSukumar.Swaminathan@Sun.COM 	 * BIT 10 = Descending Loop ID Search
2768311SSukumar.Swaminathan@Sun.COM 	 * BIT 11 = Previous Assigned Loop ID
2778311SSukumar.Swaminathan@Sun.COM 	 * BIT 12 = Reserved
2788311SSukumar.Swaminathan@Sun.COM 	 * BIT 13 = Full Login after LIP
2798311SSukumar.Swaminathan@Sun.COM 	 * BIT 14 = Node Name Option
2809446SDaniel.Beauregard@Sun.COM 	 * BIT 15 = Reserved
2819446SDaniel.Beauregard@Sun.COM 	 *
2829446SDaniel.Beauregard@Sun.COM 	 * BIT 16-31 = Reserved
2838311SSukumar.Swaminathan@Sun.COM 	 */
2848311SSukumar.Swaminathan@Sun.COM 	uint8_t firmware_options_1[4];
2858311SSukumar.Swaminathan@Sun.COM 
2868311SSukumar.Swaminathan@Sun.COM 	/*
2878311SSukumar.Swaminathan@Sun.COM 	 * BIT 0  = Operation Mode bit 0
2888311SSukumar.Swaminathan@Sun.COM 	 * BIT 1  = Operation Mode bit 1
2898311SSukumar.Swaminathan@Sun.COM 	 * BIT 2  = Operation Mode bit 2
2908311SSukumar.Swaminathan@Sun.COM 	 * BIT 3  = Operation Mode bit 3
2918311SSukumar.Swaminathan@Sun.COM 	 * BIT 4  = Connection Options bit 0
2928311SSukumar.Swaminathan@Sun.COM 	 * BIT 5  = Connection Options bit 1
2938311SSukumar.Swaminathan@Sun.COM 	 * BIT 6  = Connection Options bit 2
2948311SSukumar.Swaminathan@Sun.COM 	 * BIT 7  = Enable Non part on LIHA failure
2958311SSukumar.Swaminathan@Sun.COM 	 *
2968311SSukumar.Swaminathan@Sun.COM 	 * BIT 8  = Enable Class 2
2978311SSukumar.Swaminathan@Sun.COM 	 * BIT 9  = Enable ACK0
2989446SDaniel.Beauregard@Sun.COM 	 * BIT 10 = Enable Virtual Fabric
2998311SSukumar.Swaminathan@Sun.COM 	 * BIT 11 = Enable FC-SP Security
3008311SSukumar.Swaminathan@Sun.COM 	 * BIT 12 = FC Tape Enable
3019446SDaniel.Beauregard@Sun.COM 	 * BIT 13 = Reserved
3029446SDaniel.Beauregard@Sun.COM 	 * BIT 14 = Target PRLI Control
3039446SDaniel.Beauregard@Sun.COM 	 * BIT 15 = Reserved
3049446SDaniel.Beauregard@Sun.COM 	 *
3059446SDaniel.Beauregard@Sun.COM 	 * BIT 16  = Enable Emulated MSIX
3069446SDaniel.Beauregard@Sun.COM 	 * BIT 17  = Reserved
3079446SDaniel.Beauregard@Sun.COM 	 * BIT 18  = Enable Alternate Device Number
3089446SDaniel.Beauregard@Sun.COM 	 * BIT 19  = Enable Alternate Bus Number
3099446SDaniel.Beauregard@Sun.COM 	 * BIT 20  = Enable Translated Address
3109446SDaniel.Beauregard@Sun.COM 	 * BIT 21  = Enable VM Security
3119446SDaniel.Beauregard@Sun.COM 	 * BIT 22  = Enable Interrupt Handshake
3129446SDaniel.Beauregard@Sun.COM 	 * BIT 23  = Enable Multiple Queue
3139446SDaniel.Beauregard@Sun.COM 	 *
3149446SDaniel.Beauregard@Sun.COM 	 * BIT 24  = IOCB Security
3159446SDaniel.Beauregard@Sun.COM 	 * BIT 25  = qos
3169446SDaniel.Beauregard@Sun.COM 	 * BIT 26-31 = Reserved
3178311SSukumar.Swaminathan@Sun.COM 	 */
3188311SSukumar.Swaminathan@Sun.COM 	uint8_t firmware_options_2[4];
3198311SSukumar.Swaminathan@Sun.COM 
3208311SSukumar.Swaminathan@Sun.COM 	/*
3218311SSukumar.Swaminathan@Sun.COM 	 * BIT 0  = Reserved
3228311SSukumar.Swaminathan@Sun.COM 	 * BIT 1  = Soft ID only
3238311SSukumar.Swaminathan@Sun.COM 	 * BIT 2  = Reserved
3249446SDaniel.Beauregard@Sun.COM 	 * BIT 3  = disable split completion timeout
3258311SSukumar.Swaminathan@Sun.COM 	 * BIT 4  = FCP RSP Payload bit 0
3268311SSukumar.Swaminathan@Sun.COM 	 * BIT 5  = FCP RSP Payload bit 1
3278311SSukumar.Swaminathan@Sun.COM 	 * BIT 6  = Enable Rec Out-of-Order data frame handling
3288311SSukumar.Swaminathan@Sun.COM 	 * BIT 7  = Disable Automatic PLOGI on Local Loop
3298311SSukumar.Swaminathan@Sun.COM 	 *
3308311SSukumar.Swaminathan@Sun.COM 	 * BIT 8  = Reserved
3318311SSukumar.Swaminathan@Sun.COM 	 * BIT 9  = Enable Out-of-Order FCP_XFER_RDY relative
3328311SSukumar.Swaminathan@Sun.COM 	 *	    offset handling
3338311SSukumar.Swaminathan@Sun.COM 	 * BIT 10 = Reserved
3348311SSukumar.Swaminathan@Sun.COM 	 * BIT 11 = Reserved
3358311SSukumar.Swaminathan@Sun.COM 	 * BIT 12 = Reserved
3368311SSukumar.Swaminathan@Sun.COM 	 * BIT 13 = Data Rate bit 0
3378311SSukumar.Swaminathan@Sun.COM 	 * BIT 14 = Data Rate bit 1
3388311SSukumar.Swaminathan@Sun.COM 	 * BIT 15 = Data Rate bit 2
3399446SDaniel.Beauregard@Sun.COM 	 *
3408311SSukumar.Swaminathan@Sun.COM 	 * BIT 16 = 75-ohm Termination Select
3419446SDaniel.Beauregard@Sun.COM 	 * BIT 17 = Enable Multiple FCFs
3429446SDaniel.Beauregard@Sun.COM 	 * BIT 18 = MAC Addressing Mode
3439446SDaniel.Beauregard@Sun.COM 	 * BIT 19 = MAC Addressing Mode
3449446SDaniel.Beauregard@Sun.COM 	 * BIT 20 = MAC Addressing Mode
3459446SDaniel.Beauregard@Sun.COM 	 * BIT 21 = Ethernet Data Rate
3469446SDaniel.Beauregard@Sun.COM 	 * BIT 22 = Ethernet Data Rate
3479446SDaniel.Beauregard@Sun.COM 	 * BIT 23 = Ethernet Data Rate
3489446SDaniel.Beauregard@Sun.COM 	 *
3499446SDaniel.Beauregard@Sun.COM 	 * BIT 24 = Ethernet Data Rate
3509446SDaniel.Beauregard@Sun.COM 	 * BIT 25 = Ethernet Data Rate
3519446SDaniel.Beauregard@Sun.COM 	 * BIT 26 = Enable Ethernet Header ATIO Queue
3529446SDaniel.Beauregard@Sun.COM 	 * BIT 27 = Enable Ethernet Header Response Queue
3539446SDaniel.Beauregard@Sun.COM 	 * BIT 28 = SPMA Selection
3549446SDaniel.Beauregard@Sun.COM 	 * BIT 29 = SPMA Selection
3559446SDaniel.Beauregard@Sun.COM 	 * BIT 30 = Reserved
3569446SDaniel.Beauregard@Sun.COM 	 * BIT 31 = Reserved
3578311SSukumar.Swaminathan@Sun.COM 	 */
3588311SSukumar.Swaminathan@Sun.COM 	uint8_t firmware_options_3[4];
3598311SSukumar.Swaminathan@Sun.COM 
3609446SDaniel.Beauregard@Sun.COM 	union {
3619446SDaniel.Beauregard@Sun.COM 		struct {
3629446SDaniel.Beauregard@Sun.COM 			/*
3639446SDaniel.Beauregard@Sun.COM 			 * Offset 56 (38h)
3649446SDaniel.Beauregard@Sun.COM 			 * Serial Link Control
3659446SDaniel.Beauregard@Sun.COM 			 * BIT 0 = control enable
3669446SDaniel.Beauregard@Sun.COM 			 * BIT 1-15 = Reserved
3679446SDaniel.Beauregard@Sun.COM 			 */
3689446SDaniel.Beauregard@Sun.COM 			uint8_t swing_opt[2];
3699446SDaniel.Beauregard@Sun.COM 			/*
3709446SDaniel.Beauregard@Sun.COM 			 * Offset 58 (3Ah)
3719446SDaniel.Beauregard@Sun.COM 			 * Serial Link Control 1G
3729446SDaniel.Beauregard@Sun.COM 			 * BIT 0-7   = Reserved
3739446SDaniel.Beauregard@Sun.COM 			 *
3749446SDaniel.Beauregard@Sun.COM 			 * BIT 8-10  = output swing
3759446SDaniel.Beauregard@Sun.COM 			 * BIT 11-13 = output emphasis
3769446SDaniel.Beauregard@Sun.COM 			 * BIT 14-15 = Reserved
3779446SDaniel.Beauregard@Sun.COM 			 */
3789446SDaniel.Beauregard@Sun.COM 			uint8_t swing_1g[2];
3799446SDaniel.Beauregard@Sun.COM 			/*
3809446SDaniel.Beauregard@Sun.COM 			 * Offset 60 (3Ch)
3819446SDaniel.Beauregard@Sun.COM 			 * Serial Link Control 2G
3829446SDaniel.Beauregard@Sun.COM 			 * BIT 0-7   = Reserved
3839446SDaniel.Beauregard@Sun.COM 			 *
3849446SDaniel.Beauregard@Sun.COM 			 * BIT 8-10  = output swing
3859446SDaniel.Beauregard@Sun.COM 			 * BIT 11-13 = output emphasis
3869446SDaniel.Beauregard@Sun.COM 			 * BIT 14-15 = Reserved
3879446SDaniel.Beauregard@Sun.COM 			 */
3889446SDaniel.Beauregard@Sun.COM 			uint8_t swing_2g[2];
3899446SDaniel.Beauregard@Sun.COM 			/*
3909446SDaniel.Beauregard@Sun.COM 			 * Offset 62 (3Eh)
3919446SDaniel.Beauregard@Sun.COM 			 * Serial Link Control 4G
3929446SDaniel.Beauregard@Sun.COM 			 * BIT 0-7   = Reserved
3939446SDaniel.Beauregard@Sun.COM 			 *
3949446SDaniel.Beauregard@Sun.COM 			 * BIT 8-10  = output swing
3959446SDaniel.Beauregard@Sun.COM 			 * BIT 11-13 = output emphasis
3969446SDaniel.Beauregard@Sun.COM 			 * BIT 14-15 = Reserved
3979446SDaniel.Beauregard@Sun.COM 			 */
3989446SDaniel.Beauregard@Sun.COM 			uint8_t swing_4g[2];
3999446SDaniel.Beauregard@Sun.COM 
4009446SDaniel.Beauregard@Sun.COM 			/* Offset 64 (40h). */
4019446SDaniel.Beauregard@Sun.COM 			uint8_t reserved[32];
4029446SDaniel.Beauregard@Sun.COM 		} isp2400;
4039446SDaniel.Beauregard@Sun.COM 		struct {
4049446SDaniel.Beauregard@Sun.COM 			/*
4059446SDaniel.Beauregard@Sun.COM 			 * Offset 56 (38h)
4069446SDaniel.Beauregard@Sun.COM 			 * Serial Link Control
4079446SDaniel.Beauregard@Sun.COM 			 * BIT 0  = Reserved
4089446SDaniel.Beauregard@Sun.COM 			 * BIT 1  = 25xx TX control enable
4099446SDaniel.Beauregard@Sun.COM 			 * BIT 2  = 25xx RX control enable (lmtg)
4109446SDaniel.Beauregard@Sun.COM 			 * BIT 3  = 25xx RX control enable (linear)
4119446SDaniel.Beauregard@Sun.COM 			 * BIT 4  = embedded HBA
4129446SDaniel.Beauregard@Sun.COM 			 * BIT 5  = unused
4139446SDaniel.Beauregard@Sun.COM 			 * BIT 6  = 25xx E7 Addr27 Preset
4149446SDaniel.Beauregard@Sun.COM 			 * BIT 7  = 25xx E6 Addr0 Ch0 enable
4159446SDaniel.Beauregard@Sun.COM 			 *
4169446SDaniel.Beauregard@Sun.COM 			 * BIT 8-15 = 25xx E6 Addr0 Ch0
4179446SDaniel.Beauregard@Sun.COM 			 *
4189446SDaniel.Beauregard@Sun.COM 			 * BIT 16-31 = Reserved
4199446SDaniel.Beauregard@Sun.COM 			 */
4209446SDaniel.Beauregard@Sun.COM 			uint8_t swing_opt[4];
4218311SSukumar.Swaminathan@Sun.COM 
4229446SDaniel.Beauregard@Sun.COM 			/*
4239446SDaniel.Beauregard@Sun.COM 			 * Offset 60 (3Ch)
4249446SDaniel.Beauregard@Sun.COM 			 * Serial Link TX Parameters
4259446SDaniel.Beauregard@Sun.COM 			 * BIT 0 = TX Amplitude
4269446SDaniel.Beauregard@Sun.COM 			 * BIT 1 = TX Amplitude
4279446SDaniel.Beauregard@Sun.COM 			 * BIT 2 = TX Amplitude
4289446SDaniel.Beauregard@Sun.COM 			 * BIT 3 = TX Amplitude
4299446SDaniel.Beauregard@Sun.COM 			 * BIT 4 = TX Amplitude
4309446SDaniel.Beauregard@Sun.COM 			 * BIT 5 = TX iPost
4319446SDaniel.Beauregard@Sun.COM 			 * BIT 6 = TX iPost
4329446SDaniel.Beauregard@Sun.COM 			 * BIT 7 = TX iPost
4339446SDaniel.Beauregard@Sun.COM 			 *
4349446SDaniel.Beauregard@Sun.COM 			 * BIT 8 = TX iPost
4359446SDaniel.Beauregard@Sun.COM 			 * BIT 9 = TX iPre
4369446SDaniel.Beauregard@Sun.COM 			 * BIT 10 = TX iPre
4379446SDaniel.Beauregard@Sun.COM 			 * BIT 11 = TX iPre
4389446SDaniel.Beauregard@Sun.COM 			 * BIT 12 = TX iPre
4399446SDaniel.Beauregard@Sun.COM 			 * BIT 13 = TX iMain
4409446SDaniel.Beauregard@Sun.COM 			 * BIT 14 = TX iMain
4419446SDaniel.Beauregard@Sun.COM 			 * BIT 15 = TX iMain
4429446SDaniel.Beauregard@Sun.COM 			 *
4439446SDaniel.Beauregard@Sun.COM 			 * BIT 16 = TX iMain
4449446SDaniel.Beauregard@Sun.COM 			 * BIT 17 = TX iMain
4459446SDaniel.Beauregard@Sun.COM 			 * BIT 18-23 = Reserved
4469446SDaniel.Beauregard@Sun.COM 			 *
4479446SDaniel.Beauregard@Sun.COM 			 * BIT 24-31 = Reserved
4489446SDaniel.Beauregard@Sun.COM 			 */
4499446SDaniel.Beauregard@Sun.COM 			uint8_t tx_8g[4];
4509446SDaniel.Beauregard@Sun.COM 			/* Offset 64 (40h) */
4519446SDaniel.Beauregard@Sun.COM 			uint8_t tx_4g[4];
4529446SDaniel.Beauregard@Sun.COM 			/* Offset 68 (44h) */
4539446SDaniel.Beauregard@Sun.COM 			uint8_t tx_2g[4];
4549446SDaniel.Beauregard@Sun.COM 
4559446SDaniel.Beauregard@Sun.COM 			/*
4569446SDaniel.Beauregard@Sun.COM 			 * Offset 72 (48h)
4579446SDaniel.Beauregard@Sun.COM 			 * Serial Link RX Parameters
4589446SDaniel.Beauregard@Sun.COM 			 * BIT 0 = RX Z1Cnt
4599446SDaniel.Beauregard@Sun.COM 			 * BIT 1 = RX Z1Cnt
4609446SDaniel.Beauregard@Sun.COM 			 * BIT 2 = RX Z1Cnt
4619446SDaniel.Beauregard@Sun.COM 			 * BIT 3 = RX Z1Cnt
4629446SDaniel.Beauregard@Sun.COM 			 * BIT 4 = RX G1Cnt
4639446SDaniel.Beauregard@Sun.COM 			 * BIT 5 = RX ZCnt
4649446SDaniel.Beauregard@Sun.COM 			 * BIT 6 = RX ZCnt
4659446SDaniel.Beauregard@Sun.COM 			 * BIT 7 = RX ZCnt
4669446SDaniel.Beauregard@Sun.COM 			 *
4679446SDaniel.Beauregard@Sun.COM 			 * BIT 8 = RX ZCnt
4689446SDaniel.Beauregard@Sun.COM 			 * BIT 9 = RX ZCnt
4699446SDaniel.Beauregard@Sun.COM 			 * BIT 10 = RX TLTH
4709446SDaniel.Beauregard@Sun.COM 			 * BIT 11 = RX TLTH
4719446SDaniel.Beauregard@Sun.COM 			 * BIT 12 = RX TLTH
4729446SDaniel.Beauregard@Sun.COM 			 * BIT 13 = RX TLTH
4739446SDaniel.Beauregard@Sun.COM 			 * BIT 14 = RX TLTH
4749446SDaniel.Beauregard@Sun.COM 			 * BIT 15 = RX TLTH
4759446SDaniel.Beauregard@Sun.COM 			 *
4769446SDaniel.Beauregard@Sun.COM 			 * BIT 16 = RX DFELTH
4779446SDaniel.Beauregard@Sun.COM 			 * BIT 17 = RX DFELTH
4789446SDaniel.Beauregard@Sun.COM 			 * BIT 18 = RX DFELTH
4799446SDaniel.Beauregard@Sun.COM 			 * BIT 19 = RX DFELTH
4809446SDaniel.Beauregard@Sun.COM 			 * BIT 20 = RX DFELTH
4819446SDaniel.Beauregard@Sun.COM 			 * BIT 21 = RX DFELTH
4829446SDaniel.Beauregard@Sun.COM 			 * BIT 22-23 = Reserved
4839446SDaniel.Beauregard@Sun.COM 			 *
4849446SDaniel.Beauregard@Sun.COM 			 * BIT 24-31 = Reserved
4859446SDaniel.Beauregard@Sun.COM 			 */
4869446SDaniel.Beauregard@Sun.COM 			uint8_t rx_limit_8g[4];
4879446SDaniel.Beauregard@Sun.COM 			/* Offset 76 (4Ch) */
4889446SDaniel.Beauregard@Sun.COM 			uint8_t rx_limit_4g[4];
4899446SDaniel.Beauregard@Sun.COM 			/* Offset 80 (50h) */
4909446SDaniel.Beauregard@Sun.COM 			uint8_t rx_limit_2g[4];
4919446SDaniel.Beauregard@Sun.COM 			/* Offset 84 (54h) */
4929446SDaniel.Beauregard@Sun.COM 			uint8_t rx_linear_8g[4];
4939446SDaniel.Beauregard@Sun.COM 			/* Offset 88 (58h) */
4949446SDaniel.Beauregard@Sun.COM 			uint8_t rx_linear_4g[4];
4959446SDaniel.Beauregard@Sun.COM 			/* Offset 92 (5Ch) */
4969446SDaniel.Beauregard@Sun.COM 			uint8_t rx_linear_2g[4];
4979446SDaniel.Beauregard@Sun.COM 		} isp2500;
4989446SDaniel.Beauregard@Sun.COM 		struct {
4999446SDaniel.Beauregard@Sun.COM 			/* Offset 56 (38h) */
5009446SDaniel.Beauregard@Sun.COM 			uint8_t reserved[8];
5019446SDaniel.Beauregard@Sun.COM 
5029446SDaniel.Beauregard@Sun.COM 			/* Offset 64 (40h). */
5039446SDaniel.Beauregard@Sun.COM 			uint8_t e_node_mac_addr[6];
5049446SDaniel.Beauregard@Sun.COM 
5059446SDaniel.Beauregard@Sun.COM 			/* Offset 70 (46h). */
5069446SDaniel.Beauregard@Sun.COM 			uint8_t reserved2[26];
5079446SDaniel.Beauregard@Sun.COM 		} isp8001;
5089446SDaniel.Beauregard@Sun.COM 	} fw;
5098311SSukumar.Swaminathan@Sun.COM 
5108311SSukumar.Swaminathan@Sun.COM 	/*
5119446SDaniel.Beauregard@Sun.COM 	 * Offset 96 (60h)
5129446SDaniel.Beauregard@Sun.COM 	 * BIT 0   = initiator op
5139446SDaniel.Beauregard@Sun.COM 	 * BIT 1   = target op
5149446SDaniel.Beauregard@Sun.COM 	 * BIT 2   = VI op
5159446SDaniel.Beauregard@Sun.COM 	 * BIT 3-7 = Reserved
5168311SSukumar.Swaminathan@Sun.COM 	 */
5179446SDaniel.Beauregard@Sun.COM 	uint8_t oem_specific;
5189446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_4[15];
5199446SDaniel.Beauregard@Sun.COM 
5209446SDaniel.Beauregard@Sun.COM 	/* Offset 112 (70h). */
5219446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_5[16];
5228311SSukumar.Swaminathan@Sun.COM 
5238311SSukumar.Swaminathan@Sun.COM 	/*
5249446SDaniel.Beauregard@Sun.COM 	 * Offset 128 (80h).
5259446SDaniel.Beauregard@Sun.COM 	 * PCIe table entries.
5269446SDaniel.Beauregard@Sun.COM 	 * Firmware Extended Initialization Control Block.
5278311SSukumar.Swaminathan@Sun.COM 	 */
5289446SDaniel.Beauregard@Sun.COM 	ql_ext_icb_8100_t	ext_blk;
5298311SSukumar.Swaminathan@Sun.COM 
5308311SSukumar.Swaminathan@Sun.COM 	/* Offset 192. */
5318311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_6[32];
5328311SSukumar.Swaminathan@Sun.COM 
5338311SSukumar.Swaminathan@Sun.COM 	/* Offset 224. */
5348311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_7[32];
5358311SSukumar.Swaminathan@Sun.COM 
5368311SSukumar.Swaminathan@Sun.COM 	/*
5378311SSukumar.Swaminathan@Sun.COM 	 * BIT 0  = Enable spinup delay
5388311SSukumar.Swaminathan@Sun.COM 	 * BIT 1  = Disable BIOS
5398311SSukumar.Swaminathan@Sun.COM 	 * BIT 2  = Enable Memory Map BIOS
5408311SSukumar.Swaminathan@Sun.COM 	 * BIT 3  = Enable Selectable Boot
5418311SSukumar.Swaminathan@Sun.COM 	 * BIT 4  = Disable RISC code load
5428311SSukumar.Swaminathan@Sun.COM 	 * BIT 5  = Disable serdes
5438311SSukumar.Swaminathan@Sun.COM 	 * BIT 6  = Enable opt boot mode
5448311SSukumar.Swaminathan@Sun.COM 	 * BIT 7  = Enable int mode BIOS
5458311SSukumar.Swaminathan@Sun.COM 	 *
5469446SDaniel.Beauregard@Sun.COM 	 * BIT 8  = EV control enable
5479446SDaniel.Beauregard@Sun.COM 	 * BIT 9  = Enable lip reset
5488311SSukumar.Swaminathan@Sun.COM 	 * BIT 10 = Enable lip full login
5498311SSukumar.Swaminathan@Sun.COM 	 * BIT 11 = Enable target reset
5509446SDaniel.Beauregard@Sun.COM 	 * BIT 12 = Stop firmware
5518311SSukumar.Swaminathan@Sun.COM 	 * BIT 13 = Default Node Name Option
5529446SDaniel.Beauregard@Sun.COM 	 * BIT 14 = Default WWPN valid
5538311SSukumar.Swaminathan@Sun.COM 	 * BIT 15 = Enable alternate WWN
5548311SSukumar.Swaminathan@Sun.COM 	 *
5559446SDaniel.Beauregard@Sun.COM 	 * CLP BIOS flags
5569446SDaniel.Beauregard@Sun.COM 	 *
5579446SDaniel.Beauregard@Sun.COM 	 * BIT 16 = clp lun string
5589446SDaniel.Beauregard@Sun.COM 	 * BIT 17 = clp target string
5599446SDaniel.Beauregard@Sun.COM 	 * BIT 18 = clp bios enable string
5609446SDaniel.Beauregard@Sun.COM 	 * BIT 19 = clp serdes_string
5619446SDaniel.Beauregard@Sun.COM 	 * BIT 20 = clp wwpn string
5629446SDaniel.Beauregard@Sun.COM 	 * BIT 21 = clp wwnn string
5639446SDaniel.Beauregard@Sun.COM 	 * BIT 22 = win reserverd 0
5649446SDaniel.Beauregard@Sun.COM 	 * BIT 23 = win reserverd 1
5659446SDaniel.Beauregard@Sun.COM 	 *
5669446SDaniel.Beauregard@Sun.COM 	 * BIT 24 = keep wwpn
5679446SDaniel.Beauregard@Sun.COM 	 * BIT 25 = temp wwpn
5689446SDaniel.Beauregard@Sun.COM 	 * BIT 26 = win reserverd 2
5699446SDaniel.Beauregard@Sun.COM 	 * BIT 27 = win reserverd 3
5709446SDaniel.Beauregard@Sun.COM 	 * BIT 28 = clear WBT in flash (win driver)
5719446SDaniel.Beauregard@Sun.COM 	 * BIT 29 = write WBT in flash (win driver)
5729446SDaniel.Beauregard@Sun.COM 	 * BIT 30 = load fw from flash (win driver)
5739446SDaniel.Beauregard@Sun.COM 	 * BIT 31 = enable alternate WWN (win driver)
5748311SSukumar.Swaminathan@Sun.COM 	 */
5758311SSukumar.Swaminathan@Sun.COM 	uint8_t host_p[4];
5768311SSukumar.Swaminathan@Sun.COM 
5778311SSukumar.Swaminathan@Sun.COM 	uint8_t alternate_port_name[8];
5788311SSukumar.Swaminathan@Sun.COM 	uint8_t alternate_node_name[8];
5798311SSukumar.Swaminathan@Sun.COM 
5808311SSukumar.Swaminathan@Sun.COM 	uint8_t boot_port_name[8];
5818311SSukumar.Swaminathan@Sun.COM 	uint8_t boot_lun_number[2];
5828311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_8[2];
5838311SSukumar.Swaminathan@Sun.COM 
5848311SSukumar.Swaminathan@Sun.COM 	uint8_t alt1_boot_port_name[8];
5858311SSukumar.Swaminathan@Sun.COM 	uint8_t alt1_boot_lun_number[2];
5868311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_9[2];
5878311SSukumar.Swaminathan@Sun.COM 
5888311SSukumar.Swaminathan@Sun.COM 	uint8_t alt2_boot_port_name[8];
5898311SSukumar.Swaminathan@Sun.COM 	uint8_t alt2_boot_lun_number[2];
5908311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_10[2];
5918311SSukumar.Swaminathan@Sun.COM 
5928311SSukumar.Swaminathan@Sun.COM 	uint8_t alt3_boot_port_name[8];
5938311SSukumar.Swaminathan@Sun.COM 	uint8_t alt3_boot_lun_number[2];
5948311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_11[2];
5958311SSukumar.Swaminathan@Sun.COM 
5968311SSukumar.Swaminathan@Sun.COM 	/*
5978311SSukumar.Swaminathan@Sun.COM 	 * BIT 0 = Selective Login
5988311SSukumar.Swaminathan@Sun.COM 	 * BIT 1 = Alt-Boot Enable
5998311SSukumar.Swaminathan@Sun.COM 	 * BIT 2 = Reserved
6008311SSukumar.Swaminathan@Sun.COM 	 * BIT 3 = Enable Boot Order List
6018311SSukumar.Swaminathan@Sun.COM 	 * BIT 4 = Reserved
6028311SSukumar.Swaminathan@Sun.COM 	 * BIT 5 = Enable Selective LUN
6038311SSukumar.Swaminathan@Sun.COM 	 * BIT 6 = Reserved
6048311SSukumar.Swaminathan@Sun.COM 	 * BIT 7-31 =
6058311SSukumar.Swaminathan@Sun.COM 	 */
6068311SSukumar.Swaminathan@Sun.COM 	uint8_t efi_parameters[4];
6078311SSukumar.Swaminathan@Sun.COM 
6088311SSukumar.Swaminathan@Sun.COM 	uint8_t reset_delay;
6098311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_12;
6108311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_13[2];
6118311SSukumar.Swaminathan@Sun.COM 
6128311SSukumar.Swaminathan@Sun.COM 	uint8_t boot_id_number[2];
6138311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_14[2];
6148311SSukumar.Swaminathan@Sun.COM 
6158311SSukumar.Swaminathan@Sun.COM 	uint8_t max_luns_per_target[2];
6168311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_15[2];
6178311SSukumar.Swaminathan@Sun.COM 
6188311SSukumar.Swaminathan@Sun.COM 	uint8_t port_down_retry_count[2];
6198311SSukumar.Swaminathan@Sun.COM 	uint8_t link_down_timeout[2];
6208311SSukumar.Swaminathan@Sun.COM 
6218311SSukumar.Swaminathan@Sun.COM 	/*
6228311SSukumar.Swaminathan@Sun.COM 	 * FCode parameters word (offset 344)
6238311SSukumar.Swaminathan@Sun.COM 	 *
6248311SSukumar.Swaminathan@Sun.COM 	 * BIT 0 = Enable BIOS pathname
6258311SSukumar.Swaminathan@Sun.COM 	 * BIT 1 = fcode qlc
6268311SSukumar.Swaminathan@Sun.COM 	 * BIT 2 = fcode host
6279446SDaniel.Beauregard@Sun.COM 	 * BIT 3 = fcode sunid
6289446SDaniel.Beauregard@Sun.COM 	 * BIT 4-7 =
6298311SSukumar.Swaminathan@Sun.COM 	 */
6308311SSukumar.Swaminathan@Sun.COM 	uint8_t	fcode_p0;
6318311SSukumar.Swaminathan@Sun.COM 	uint8_t reserved_16[7];
6328311SSukumar.Swaminathan@Sun.COM 
6339446SDaniel.Beauregard@Sun.COM 	/*
6349446SDaniel.Beauregard@Sun.COM 	 * Offset 352 (160h).
6359446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_drv_ver_major;
6369446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_drv_ver_submajob;
6379446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_drv_ver_minor;
6389446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_drv_ver_subminor;
6399446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_bios_ver_major[2];
6409446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_bios_ver_minor[2];
6419446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_efi_ver_major[2];
6429446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_efi_ver_minor[2];
6439446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_fw_ver_major[2];
6449446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_fw_ver_minor;
6459446SDaniel.Beauregard@Sun.COM 	 * uint8_t prev_fw_ver_subminor;
6469446SDaniel.Beauregard@Sun.COM 	 * uint8_t reserved[16];
6479446SDaniel.Beauregard@Sun.COM 	 */
6489446SDaniel.Beauregard@Sun.COM 	uint8_t mac_address[6];
6499446SDaniel.Beauregard@Sun.COM 	uint8_t clp_flag[2];
6509446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_18[24];
6518311SSukumar.Swaminathan@Sun.COM 
6529446SDaniel.Beauregard@Sun.COM 	/* Offset 384 (180h). */
6538311SSukumar.Swaminathan@Sun.COM 	uint8_t	def_port_name[8];
6548311SSukumar.Swaminathan@Sun.COM 	uint8_t def_node_name[8];
6559446SDaniel.Beauregard@Sun.COM 	uint8_t clp_flag1[2];
6569446SDaniel.Beauregard@Sun.COM 	uint8_t clp_flag2[2];
6578311SSukumar.Swaminathan@Sun.COM 
6589446SDaniel.Beauregard@Sun.COM 	/* Offset 404 (194h). */
6599446SDaniel.Beauregard@Sun.COM 	uint8_t default_firmware_options[2];
6609446SDaniel.Beauregard@Sun.COM 
6619446SDaniel.Beauregard@Sun.COM 	/* Offset 406 (196h). */
6629446SDaniel.Beauregard@Sun.COM 	uint8_t enhanced_features[2];
6639446SDaniel.Beauregard@Sun.COM 	uint8_t serdes_index[2];
6649446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_19[6];
6659446SDaniel.Beauregard@Sun.COM 
6669446SDaniel.Beauregard@Sun.COM 	/* Offset 416 (1A0h). */
6679446SDaniel.Beauregard@Sun.COM 	uint8_t alt4_boot_port_name[8];
6689446SDaniel.Beauregard@Sun.COM 	uint8_t alt4_boot_lun_number[2];
6699446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_20[2];
6708311SSukumar.Swaminathan@Sun.COM 
6719446SDaniel.Beauregard@Sun.COM 	/* Offset 428 (1ACh). */
6729446SDaniel.Beauregard@Sun.COM 	uint8_t alt5_boot_port_name[8];
6739446SDaniel.Beauregard@Sun.COM 	uint8_t alt5_boot_lun_number[2];
6749446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_21[2];
6759446SDaniel.Beauregard@Sun.COM 
6769446SDaniel.Beauregard@Sun.COM 	/* Offset 440 (1B8h). */
6779446SDaniel.Beauregard@Sun.COM 	uint8_t alt6_boot_port_name[8];
6789446SDaniel.Beauregard@Sun.COM 	uint8_t alt6_boot_lun_number[2];
6799446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_22[2];
6808311SSukumar.Swaminathan@Sun.COM 
6819446SDaniel.Beauregard@Sun.COM 	/* Offset 452 (1C4h). */
6829446SDaniel.Beauregard@Sun.COM 	uint8_t alt7_boot_port_name[8];
6839446SDaniel.Beauregard@Sun.COM 	uint8_t alt7_boot_lun_number[2];
6849446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_23[2];
6858311SSukumar.Swaminathan@Sun.COM 
6869446SDaniel.Beauregard@Sun.COM 	/* Offset 464 (1D0h). */
6879446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_24[12];
6889446SDaniel.Beauregard@Sun.COM 
6899446SDaniel.Beauregard@Sun.COM 	/* Offset 476 (1DCh). */
6908311SSukumar.Swaminathan@Sun.COM 	uint8_t	fw_table_offset[2];
6918311SSukumar.Swaminathan@Sun.COM 	uint8_t fw_table_sig[2];
6928311SSukumar.Swaminathan@Sun.COM 
6939446SDaniel.Beauregard@Sun.COM 	/* Offset 480 (1E0h). */
6949446SDaniel.Beauregard@Sun.COM 	int8_t  model_name[4];
6959446SDaniel.Beauregard@Sun.COM 	int8_t  model_name1[12]; /* 24xx power_table[8]. */
6968311SSukumar.Swaminathan@Sun.COM 
6979446SDaniel.Beauregard@Sun.COM 	/* Offset 496 (1F0h). */
6989446SDaniel.Beauregard@Sun.COM 	uint8_t feature_mask_l[2];
6999446SDaniel.Beauregard@Sun.COM 	uint8_t feature_mask_h[2];
7009446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_25[4];
7018311SSukumar.Swaminathan@Sun.COM 
7029446SDaniel.Beauregard@Sun.COM 	/* Offset 504 (1F8h). */
7038311SSukumar.Swaminathan@Sun.COM 	uint8_t subsystem_vendor_id[2];
7048311SSukumar.Swaminathan@Sun.COM 	uint8_t subsystem_device_id[2];
7058311SSukumar.Swaminathan@Sun.COM 
7068311SSukumar.Swaminathan@Sun.COM 	uint8_t checksum[4];
7078311SSukumar.Swaminathan@Sun.COM } nvram_24xx_t;
7088311SSukumar.Swaminathan@Sun.COM 
7098311SSukumar.Swaminathan@Sun.COM /*
7108311SSukumar.Swaminathan@Sun.COM  * Firmware Dump structure definition
7118311SSukumar.Swaminathan@Sun.COM  */
7128311SSukumar.Swaminathan@Sun.COM #define	QL_2200_FW_DUMP_SIZE	0x68000		/* bytes */
7138311SSukumar.Swaminathan@Sun.COM #define	QL_2300_FW_DUMP_SIZE	0xE2000		/* bytes */
7148311SSukumar.Swaminathan@Sun.COM #define	QL_6322_FW_DUMP_SIZE	0xE2000		/* bytes */
7159156SDaniel.Beauregard@Sun.COM #define	QL_24XX_FW_DUMP_SIZE	0x0330000	/* bytes */
7169156SDaniel.Beauregard@Sun.COM #define	QL_25XX_FW_DUMP_SIZE	0x0330000	/* bytes */
7178311SSukumar.Swaminathan@Sun.COM 
7188311SSukumar.Swaminathan@Sun.COM #define	QL_24XX_VPD_SIZE	0x200		/* bytes */
7198311SSukumar.Swaminathan@Sun.COM #define	QL_24XX_SFP_SIZE	0x200		/* bytes */
7208311SSukumar.Swaminathan@Sun.COM 
7218311SSukumar.Swaminathan@Sun.COM /*
7228311SSukumar.Swaminathan@Sun.COM  * firmware dump struct for 2300 is a superset of firmware dump struct
7238311SSukumar.Swaminathan@Sun.COM  * for 2200. Fields which are 2300 only or are enhanced for 2300 are
7248311SSukumar.Swaminathan@Sun.COM  * marked below.
7258311SSukumar.Swaminathan@Sun.COM  */
7268311SSukumar.Swaminathan@Sun.COM typedef struct ql_fw_dump {
7278311SSukumar.Swaminathan@Sun.COM 	uint16_t pbiu_reg[8];
7288311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_host_reg[8];	/* 2300 only. */
7298311SSukumar.Swaminathan@Sun.COM 	uint16_t mailbox_reg[16];	/* 2200 only needs 8 */
7308311SSukumar.Swaminathan@Sun.COM 	uint16_t resp_dma_reg[32];	/* 2300 only. */
7318311SSukumar.Swaminathan@Sun.COM 	uint16_t dma_reg[48];
7328311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_hdw_reg[16];
7338311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_gp0_reg[16];
7348311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_gp1_reg[16];
7358311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_gp2_reg[16];
7368311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_gp3_reg[16];
7378311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_gp4_reg[16];
7388311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_gp5_reg[16];
7398311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_gp6_reg[16];
7408311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_gp7_reg[16];
7418311SSukumar.Swaminathan@Sun.COM 	uint16_t frame_buf_hdw_reg[64];	/* 2200 has only 16 */
7428311SSukumar.Swaminathan@Sun.COM 	uint16_t fpm_b0_reg[64];
7438311SSukumar.Swaminathan@Sun.COM 	uint16_t fpm_b1_reg[64];
7448311SSukumar.Swaminathan@Sun.COM 	uint16_t risc_ram[0xf800];	/* 2200 needs only 0xf000 */
7458311SSukumar.Swaminathan@Sun.COM 	uint16_t stack_ram[0x800];	/* 2300 only */
7468311SSukumar.Swaminathan@Sun.COM 	uint16_t data_ram[0xf800];	/* 2300 only */
7479156SDaniel.Beauregard@Sun.COM 	uint32_t req_q[REQUEST_QUEUE_SIZE / 4];
7489156SDaniel.Beauregard@Sun.COM 	uint32_t rsp_q[RESPONSE_QUEUE_SIZE / 4];
7498311SSukumar.Swaminathan@Sun.COM } ql_fw_dump_t;
7508311SSukumar.Swaminathan@Sun.COM 
7518311SSukumar.Swaminathan@Sun.COM typedef struct ql_24xx_fw_dump {
7528311SSukumar.Swaminathan@Sun.COM 	uint32_t hccr;
7538311SSukumar.Swaminathan@Sun.COM 	uint32_t host_reg[32];
7548311SSukumar.Swaminathan@Sun.COM 	uint16_t mailbox_reg[32];
7558311SSukumar.Swaminathan@Sun.COM 	uint32_t xseq_gp_reg[128];
7568311SSukumar.Swaminathan@Sun.COM 	uint32_t xseq_0_reg[16];
7578311SSukumar.Swaminathan@Sun.COM 	uint32_t xseq_1_reg[16];
7588311SSukumar.Swaminathan@Sun.COM 	uint32_t rseq_gp_reg[128];
7598311SSukumar.Swaminathan@Sun.COM 	uint32_t rseq_0_reg[16];
7608311SSukumar.Swaminathan@Sun.COM 	uint32_t rseq_1_reg[16];
7618311SSukumar.Swaminathan@Sun.COM 	uint32_t rseq_2_reg[16];
7628311SSukumar.Swaminathan@Sun.COM 	uint32_t cmd_dma_reg[16];
7638311SSukumar.Swaminathan@Sun.COM 	uint32_t req0_dma_reg[15];
7648311SSukumar.Swaminathan@Sun.COM 	uint32_t resp0_dma_reg[15];
7658311SSukumar.Swaminathan@Sun.COM 	uint32_t req1_dma_reg[15];
7668311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt0_dma_reg[32];
7678311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt1_dma_reg[32];
7688311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt2_dma_reg[32];
7698311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt3_dma_reg[32];
7708311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt4_dma_reg[32];
7718311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt_data_dma_reg[16];
7728311SSukumar.Swaminathan@Sun.COM 	uint32_t rcvt0_data_dma_reg[32];
7738311SSukumar.Swaminathan@Sun.COM 	uint32_t rcvt1_data_dma_reg[32];
7748311SSukumar.Swaminathan@Sun.COM 	uint32_t risc_gp_reg[128];
7758311SSukumar.Swaminathan@Sun.COM 	uint32_t shadow_reg[7];
7768311SSukumar.Swaminathan@Sun.COM 	uint32_t lmc_reg[112];
7778311SSukumar.Swaminathan@Sun.COM 	uint32_t fpm_hdw_reg[192];
7788311SSukumar.Swaminathan@Sun.COM 	uint32_t fb_hdw_reg[176];
7798311SSukumar.Swaminathan@Sun.COM 	uint32_t code_ram[0x2000];
7809156SDaniel.Beauregard@Sun.COM 	uint32_t req_q[REQUEST_QUEUE_SIZE / 4];
7819156SDaniel.Beauregard@Sun.COM 	uint32_t rsp_q[RESPONSE_QUEUE_SIZE / 4];
7829156SDaniel.Beauregard@Sun.COM 	uint32_t ext_trace_buf[FWEXTSIZE / 4];
7839156SDaniel.Beauregard@Sun.COM 	uint32_t fce_trace_buf[FWFCESIZE / 4];
7848311SSukumar.Swaminathan@Sun.COM 	uint32_t ext_mem[1];
7858311SSukumar.Swaminathan@Sun.COM } ql_24xx_fw_dump_t;
7868311SSukumar.Swaminathan@Sun.COM 
7878311SSukumar.Swaminathan@Sun.COM typedef struct ql_25xx_fw_dump {
7888311SSukumar.Swaminathan@Sun.COM 	uint32_t r2h_status;
7898311SSukumar.Swaminathan@Sun.COM 	uint32_t hostrisc_reg[32];
7908311SSukumar.Swaminathan@Sun.COM 	uint32_t pcie_reg[4];
7918311SSukumar.Swaminathan@Sun.COM 	uint32_t host_reg[32];
7928311SSukumar.Swaminathan@Sun.COM 	uint16_t mailbox_reg[32];
7938311SSukumar.Swaminathan@Sun.COM 	uint32_t xseq_gp_reg[128];
7948311SSukumar.Swaminathan@Sun.COM 	uint32_t xseq_0_reg[48];
7958311SSukumar.Swaminathan@Sun.COM 	uint32_t xseq_1_reg[16];
7968311SSukumar.Swaminathan@Sun.COM 	uint32_t rseq_gp_reg[128];
7978311SSukumar.Swaminathan@Sun.COM 	uint32_t rseq_0_reg[32];
7988311SSukumar.Swaminathan@Sun.COM 	uint32_t rseq_1_reg[16];
7998311SSukumar.Swaminathan@Sun.COM 	uint32_t rseq_2_reg[16];
8008311SSukumar.Swaminathan@Sun.COM 	uint32_t aseq_gp_reg[128];
8018311SSukumar.Swaminathan@Sun.COM 	uint32_t aseq_0_reg[32];
8028311SSukumar.Swaminathan@Sun.COM 	uint32_t aseq_1_reg[16];
8038311SSukumar.Swaminathan@Sun.COM 	uint32_t aseq_2_reg[16];
8048311SSukumar.Swaminathan@Sun.COM 	uint32_t cmd_dma_reg[16];
8058311SSukumar.Swaminathan@Sun.COM 	uint32_t req0_dma_reg[15];
8068311SSukumar.Swaminathan@Sun.COM 	uint32_t resp0_dma_reg[15];
8078311SSukumar.Swaminathan@Sun.COM 	uint32_t req1_dma_reg[15];
8088311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt0_dma_reg[32];
8098311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt1_dma_reg[32];
8108311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt2_dma_reg[32];
8118311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt3_dma_reg[32];
8128311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt4_dma_reg[32];
8138311SSukumar.Swaminathan@Sun.COM 	uint32_t xmt_data_dma_reg[16];
8148311SSukumar.Swaminathan@Sun.COM 	uint32_t rcvt0_data_dma_reg[32];
8158311SSukumar.Swaminathan@Sun.COM 	uint32_t rcvt1_data_dma_reg[32];
8168311SSukumar.Swaminathan@Sun.COM 	uint32_t risc_gp_reg[128];
8178311SSukumar.Swaminathan@Sun.COM 	uint32_t shadow_reg[11];
8188311SSukumar.Swaminathan@Sun.COM 	uint32_t risc_io;
8198311SSukumar.Swaminathan@Sun.COM 	uint32_t lmc_reg[128];
8208311SSukumar.Swaminathan@Sun.COM 	uint32_t fpm_hdw_reg[192];
8218311SSukumar.Swaminathan@Sun.COM 	uint32_t fb_hdw_reg[192];
8228311SSukumar.Swaminathan@Sun.COM 	uint32_t code_ram[0x2000];
8239156SDaniel.Beauregard@Sun.COM 	uint32_t req_q[REQUEST_QUEUE_SIZE / 4];
8249156SDaniel.Beauregard@Sun.COM 	uint32_t rsp_q[RESPONSE_QUEUE_SIZE / 4];
8259156SDaniel.Beauregard@Sun.COM 	uint32_t ext_trace_buf[FWEXTSIZE / 4];
8269156SDaniel.Beauregard@Sun.COM 	uint32_t fce_trace_buf[FWFCESIZE / 4];
8278311SSukumar.Swaminathan@Sun.COM 	uint32_t ext_mem[1];
8288311SSukumar.Swaminathan@Sun.COM } ql_25xx_fw_dump_t;
8298311SSukumar.Swaminathan@Sun.COM 
830*10736SDaniel.Beauregard@Sun.COM typedef struct ql_81xx_fw_dump {
831*10736SDaniel.Beauregard@Sun.COM 	uint32_t r2h_status;
832*10736SDaniel.Beauregard@Sun.COM 	uint32_t hostrisc_reg[32];
833*10736SDaniel.Beauregard@Sun.COM 	uint32_t pcie_reg[4];
834*10736SDaniel.Beauregard@Sun.COM 	uint32_t host_reg[32];
835*10736SDaniel.Beauregard@Sun.COM 	uint16_t mailbox_reg[32];
836*10736SDaniel.Beauregard@Sun.COM 	uint32_t xseq_gp_reg[128];
837*10736SDaniel.Beauregard@Sun.COM 	uint32_t xseq_0_reg[48];
838*10736SDaniel.Beauregard@Sun.COM 	uint32_t xseq_1_reg[16];
839*10736SDaniel.Beauregard@Sun.COM 	uint32_t rseq_gp_reg[128];
840*10736SDaniel.Beauregard@Sun.COM 	uint32_t rseq_0_reg[32];
841*10736SDaniel.Beauregard@Sun.COM 	uint32_t rseq_1_reg[16];
842*10736SDaniel.Beauregard@Sun.COM 	uint32_t rseq_2_reg[16];
843*10736SDaniel.Beauregard@Sun.COM 	uint32_t aseq_gp_reg[128];
844*10736SDaniel.Beauregard@Sun.COM 	uint32_t aseq_0_reg[32];
845*10736SDaniel.Beauregard@Sun.COM 	uint32_t aseq_1_reg[16];
846*10736SDaniel.Beauregard@Sun.COM 	uint32_t aseq_2_reg[16];
847*10736SDaniel.Beauregard@Sun.COM 	uint32_t cmd_dma_reg[16];
848*10736SDaniel.Beauregard@Sun.COM 	uint32_t req0_dma_reg[15];
849*10736SDaniel.Beauregard@Sun.COM 	uint32_t resp0_dma_reg[15];
850*10736SDaniel.Beauregard@Sun.COM 	uint32_t req1_dma_reg[15];
851*10736SDaniel.Beauregard@Sun.COM 	uint32_t xmt0_dma_reg[32];
852*10736SDaniel.Beauregard@Sun.COM 	uint32_t xmt1_dma_reg[32];
853*10736SDaniel.Beauregard@Sun.COM 	uint32_t xmt2_dma_reg[32];
854*10736SDaniel.Beauregard@Sun.COM 	uint32_t xmt3_dma_reg[32];
855*10736SDaniel.Beauregard@Sun.COM 	uint32_t xmt4_dma_reg[32];
856*10736SDaniel.Beauregard@Sun.COM 	uint32_t xmt_data_dma_reg[16];
857*10736SDaniel.Beauregard@Sun.COM 	uint32_t rcvt0_data_dma_reg[32];
858*10736SDaniel.Beauregard@Sun.COM 	uint32_t rcvt1_data_dma_reg[32];
859*10736SDaniel.Beauregard@Sun.COM 	uint32_t risc_gp_reg[128];
860*10736SDaniel.Beauregard@Sun.COM 	uint32_t shadow_reg[11];
861*10736SDaniel.Beauregard@Sun.COM 	uint32_t risc_io;
862*10736SDaniel.Beauregard@Sun.COM 	uint32_t lmc_reg[128];
863*10736SDaniel.Beauregard@Sun.COM 	uint32_t fpm_hdw_reg[224];
864*10736SDaniel.Beauregard@Sun.COM 	uint32_t fb_hdw_reg[208];
865*10736SDaniel.Beauregard@Sun.COM 	uint32_t code_ram[0x2000];
866*10736SDaniel.Beauregard@Sun.COM 	uint32_t req_q[REQUEST_QUEUE_SIZE / 4];
867*10736SDaniel.Beauregard@Sun.COM 	uint32_t rsp_q[RESPONSE_QUEUE_SIZE / 4];
868*10736SDaniel.Beauregard@Sun.COM 	uint32_t ext_trace_buf[FWEXTSIZE / 4];
869*10736SDaniel.Beauregard@Sun.COM 	uint32_t fce_trace_buf[FWFCESIZE / 4];
870*10736SDaniel.Beauregard@Sun.COM 	uint32_t ext_mem[1];
871*10736SDaniel.Beauregard@Sun.COM } ql_81xx_fw_dump_t;
872*10736SDaniel.Beauregard@Sun.COM 
8738311SSukumar.Swaminathan@Sun.COM #ifdef _KERNEL
8748311SSukumar.Swaminathan@Sun.COM 
8758311SSukumar.Swaminathan@Sun.COM /*
8768311SSukumar.Swaminathan@Sun.COM  * ql_lock_nvram() flags
8778311SSukumar.Swaminathan@Sun.COM  */
8788311SSukumar.Swaminathan@Sun.COM #define	LNF_NVRAM_DATA	BIT_0		/* get nvram */
8798311SSukumar.Swaminathan@Sun.COM #define	LNF_VPD_DATA	BIT_1		/* get vpd data (24xx only) */
8808311SSukumar.Swaminathan@Sun.COM 
8818311SSukumar.Swaminathan@Sun.COM /*
8828311SSukumar.Swaminathan@Sun.COM  *  ISP product identification definitions in mailboxes after reset.
8838311SSukumar.Swaminathan@Sun.COM  */
8848311SSukumar.Swaminathan@Sun.COM #define	PROD_ID_1	0x4953
8858311SSukumar.Swaminathan@Sun.COM #define	PROD_ID_2	0x0000
8868311SSukumar.Swaminathan@Sun.COM #define	PROD_ID_2a	0x5020
8878311SSukumar.Swaminathan@Sun.COM #define	PROD_ID_3	0x2020
8888311SSukumar.Swaminathan@Sun.COM 
8898311SSukumar.Swaminathan@Sun.COM /*
8908311SSukumar.Swaminathan@Sun.COM  * NVRAM Command values.
8918311SSukumar.Swaminathan@Sun.COM  */
8928311SSukumar.Swaminathan@Sun.COM #define	NV_START_BIT	BIT_2
8938311SSukumar.Swaminathan@Sun.COM #define	NV_WRITE_OP	(BIT_26+BIT_24)
8948311SSukumar.Swaminathan@Sun.COM #define	NV_READ_OP	(BIT_26+BIT_25)
8958311SSukumar.Swaminathan@Sun.COM #define	NV_ERASE_OP	(BIT_26+BIT_25+BIT_24)
8968311SSukumar.Swaminathan@Sun.COM #define	NV_MASK_OP	(BIT_26+BIT_25+BIT_24)
8978311SSukumar.Swaminathan@Sun.COM #define	NV_DELAY_COUNT	10
8988311SSukumar.Swaminathan@Sun.COM 
8999446SDaniel.Beauregard@Sun.COM /*
9009446SDaniel.Beauregard@Sun.COM  * Deivce ID list definitions.
9019446SDaniel.Beauregard@Sun.COM  */
9029446SDaniel.Beauregard@Sun.COM struct ql_dev_id {
9039446SDaniel.Beauregard@Sun.COM 	uint8_t		al_pa;
9049446SDaniel.Beauregard@Sun.COM 	uint8_t		area;
9059446SDaniel.Beauregard@Sun.COM 	uint8_t		domain;
9069446SDaniel.Beauregard@Sun.COM 	uint8_t		loop_id;
9079446SDaniel.Beauregard@Sun.COM };
9089446SDaniel.Beauregard@Sun.COM 
9099446SDaniel.Beauregard@Sun.COM struct ql_ex_dev_id {
9109446SDaniel.Beauregard@Sun.COM 	uint8_t		al_pa;
9119446SDaniel.Beauregard@Sun.COM 	uint8_t		area;
9129446SDaniel.Beauregard@Sun.COM 	uint8_t		domain;
9139446SDaniel.Beauregard@Sun.COM 	uint8_t		reserved;
9149446SDaniel.Beauregard@Sun.COM 	uint8_t		loop_id_l;
9159446SDaniel.Beauregard@Sun.COM 	uint8_t		loop_id_h;
9169446SDaniel.Beauregard@Sun.COM };
9179446SDaniel.Beauregard@Sun.COM 
9189446SDaniel.Beauregard@Sun.COM struct ql_24_dev_id {
9199446SDaniel.Beauregard@Sun.COM 	uint8_t		al_pa;
9209446SDaniel.Beauregard@Sun.COM 	uint8_t		area;
9219446SDaniel.Beauregard@Sun.COM 	uint8_t		domain;
9229446SDaniel.Beauregard@Sun.COM 	uint8_t		reserved;
9239446SDaniel.Beauregard@Sun.COM 	uint8_t		n_port_hdl_l;
9249446SDaniel.Beauregard@Sun.COM 	uint8_t		n_port_hdl_h;
9259446SDaniel.Beauregard@Sun.COM 	uint8_t		reserved_1[2];
9269446SDaniel.Beauregard@Sun.COM };
9279446SDaniel.Beauregard@Sun.COM 
9289446SDaniel.Beauregard@Sun.COM typedef union ql_dev_id_list {
9299446SDaniel.Beauregard@Sun.COM 	struct ql_dev_id	d;
9309446SDaniel.Beauregard@Sun.COM 	struct ql_ex_dev_id	d_ex;
9319446SDaniel.Beauregard@Sun.COM 	struct ql_24_dev_id	d_24;
9329446SDaniel.Beauregard@Sun.COM } ql_dev_id_list_t;
9339446SDaniel.Beauregard@Sun.COM 
9349446SDaniel.Beauregard@Sun.COM /* Define maximum number of device list entries.. */
9359446SDaniel.Beauregard@Sun.COM #define	DEVICE_LIST_ENTRIES	MAX_24_FIBRE_DEVICES
9368311SSukumar.Swaminathan@Sun.COM 
9378311SSukumar.Swaminathan@Sun.COM /*
9388311SSukumar.Swaminathan@Sun.COM  * Global Data in ql_init.c source file.
9398311SSukumar.Swaminathan@Sun.COM  */
9408311SSukumar.Swaminathan@Sun.COM 
9418311SSukumar.Swaminathan@Sun.COM /*
9428311SSukumar.Swaminathan@Sun.COM  * Global Function Prototypes in ql_init.c source file.
9438311SSukumar.Swaminathan@Sun.COM  */
9448311SSukumar.Swaminathan@Sun.COM int ql_initialize_adapter(ql_adapter_state_t *);
9458311SSukumar.Swaminathan@Sun.COM int ql_pci_sbus_config(ql_adapter_state_t *);
9468311SSukumar.Swaminathan@Sun.COM int ql_nvram_config(ql_adapter_state_t *);
9478311SSukumar.Swaminathan@Sun.COM uint16_t ql_get_nvram_word(ql_adapter_state_t *, uint32_t);
9488311SSukumar.Swaminathan@Sun.COM void ql_nv_write(ql_adapter_state_t *, uint16_t);
9498311SSukumar.Swaminathan@Sun.COM void ql_nv_delay(void);
9508311SSukumar.Swaminathan@Sun.COM int ql_lock_nvram(ql_adapter_state_t *, uint32_t *, uint32_t);
9518311SSukumar.Swaminathan@Sun.COM void ql_release_nvram(ql_adapter_state_t *);
9528311SSukumar.Swaminathan@Sun.COM void ql_common_properties(ql_adapter_state_t *);
9538311SSukumar.Swaminathan@Sun.COM uint32_t ql_get_prop(ql_adapter_state_t *, char *);
9548311SSukumar.Swaminathan@Sun.COM int ql_load_isp_firmware(ql_adapter_state_t *);
9558311SSukumar.Swaminathan@Sun.COM int ql_start_firmware(ql_adapter_state_t *);
9568311SSukumar.Swaminathan@Sun.COM int ql_set_cache_line(ql_adapter_state_t *);
9578311SSukumar.Swaminathan@Sun.COM int ql_init_rings(ql_adapter_state_t *);
9588311SSukumar.Swaminathan@Sun.COM int ql_fw_ready(ql_adapter_state_t *, uint8_t);
9599446SDaniel.Beauregard@Sun.COM void ql_dev_list(ql_adapter_state_t *, ql_dev_id_list_t *, uint32_t,
9608311SSukumar.Swaminathan@Sun.COM     port_id_t *, uint16_t *);
9618311SSukumar.Swaminathan@Sun.COM void ql_reset_chip(ql_adapter_state_t *);
9628311SSukumar.Swaminathan@Sun.COM void ql_reset_24xx_chip(ql_adapter_state_t *);
9638311SSukumar.Swaminathan@Sun.COM int ql_abort_isp(ql_adapter_state_t *);
9648311SSukumar.Swaminathan@Sun.COM int ql_vport_control(ql_adapter_state_t *, uint8_t);
9658311SSukumar.Swaminathan@Sun.COM int ql_vport_modify(ql_adapter_state_t *, uint8_t, uint8_t);
9668311SSukumar.Swaminathan@Sun.COM int ql_vport_enable(ql_adapter_state_t *);
9678311SSukumar.Swaminathan@Sun.COM ql_adapter_state_t *ql_vport_create(ql_adapter_state_t *, uint8_t);
9688311SSukumar.Swaminathan@Sun.COM void ql_vport_destroy(ql_adapter_state_t *);
9698311SSukumar.Swaminathan@Sun.COM #endif	/* _KERNEL */
9708311SSukumar.Swaminathan@Sun.COM 
9718311SSukumar.Swaminathan@Sun.COM #ifdef	__cplusplus
9728311SSukumar.Swaminathan@Sun.COM }
9738311SSukumar.Swaminathan@Sun.COM #endif
9748311SSukumar.Swaminathan@Sun.COM 
9758311SSukumar.Swaminathan@Sun.COM #endif /* _QL_INIT_H */
976