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