xref: /onnv-gate/usr/src/uts/common/sys/fibre-channel/fca/qlc/ql_apps.h (revision 9446:0ba751ada271)
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 
22*9446SDaniel.Beauregard@Sun.COM /* Copyright 2009 QLogic Corporation */
238311SSukumar.Swaminathan@Sun.COM 
248311SSukumar.Swaminathan@Sun.COM /*
25*9446SDaniel.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_APPS_H
308311SSukumar.Swaminathan@Sun.COM #define	_QL_APPS_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					**
38*9446SDaniel.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 #include <sys/scsi/scsi_types.h>
508311SSukumar.Swaminathan@Sun.COM 
51*9446SDaniel.Beauregard@Sun.COM /* f/w trace sizes */
52*9446SDaniel.Beauregard@Sun.COM #define	FWEXTSIZE		(0x4000 * 4)	/* bytes - 16kb multiples */
53*9446SDaniel.Beauregard@Sun.COM #define	FWFCESIZE		(0x4000 * 4)	/* bytes - 16kb multiples */
54*9446SDaniel.Beauregard@Sun.COM 
55*9446SDaniel.Beauregard@Sun.COM /*
56*9446SDaniel.Beauregard@Sun.COM  * ISP8100 Extended Initialization Control Block
57*9446SDaniel.Beauregard@Sun.COM  */
58*9446SDaniel.Beauregard@Sun.COM typedef struct ql_ext_icb_8100 {
59*9446SDaniel.Beauregard@Sun.COM 	uint8_t version[2];
60*9446SDaniel.Beauregard@Sun.COM 	/*
61*9446SDaniel.Beauregard@Sun.COM 	 * BIT 0 = FCF VLAN ID Match
62*9446SDaniel.Beauregard@Sun.COM 	 * BIT 1 = FCF Fabric Name Match
63*9446SDaniel.Beauregard@Sun.COM 	 * BIT 2-7 = Reserved
64*9446SDaniel.Beauregard@Sun.COM 	 */
65*9446SDaniel.Beauregard@Sun.COM 	uint8_t fcf_vlan_match;
66*9446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_6[3];
67*9446SDaniel.Beauregard@Sun.COM 	uint8_t fcf_vlan_id[2];
68*9446SDaniel.Beauregard@Sun.COM 	uint8_t fcf_fabric_name[8];
69*9446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_7[14];
70*9446SDaniel.Beauregard@Sun.COM 	uint8_t spma_proposed_mac_address[6];
71*9446SDaniel.Beauregard@Sun.COM 	uint8_t reserved_8[28];
72*9446SDaniel.Beauregard@Sun.COM } ql_ext_icb_8100_t;
73*9446SDaniel.Beauregard@Sun.COM 
748311SSukumar.Swaminathan@Sun.COM /*
758311SSukumar.Swaminathan@Sun.COM  * Name:	Adapter Revsion Level Structure
768311SSukumar.Swaminathan@Sun.COM  *
778311SSukumar.Swaminathan@Sun.COM  * Purpose:	Supply various revision levels of h/w and driver
788311SSukumar.Swaminathan@Sun.COM  *
798311SSukumar.Swaminathan@Sun.COM  * Used by:
808311SSukumar.Swaminathan@Sun.COM  *		qlctest utility
818311SSukumar.Swaminathan@Sun.COM  *
828311SSukumar.Swaminathan@Sun.COM  */
838311SSukumar.Swaminathan@Sun.COM typedef struct ql_adapter_revlvl {
848311SSukumar.Swaminathan@Sun.COM 	uint16_t isp2200;			/* 2200 chip rev level */
858311SSukumar.Swaminathan@Sun.COM 	uint16_t risc;				/* risc rev level */
868311SSukumar.Swaminathan@Sun.COM 	uint16_t frmbfr;			/* frame buffer rev level */
878311SSukumar.Swaminathan@Sun.COM 	uint16_t riscrom;			/* risc rom rev level */
888311SSukumar.Swaminathan@Sun.COM 	char qlddv[16];				/* ql driver version string */
898311SSukumar.Swaminathan@Sun.COM } ql_adapter_revlvl_t;
908311SSukumar.Swaminathan@Sun.COM 
918311SSukumar.Swaminathan@Sun.COM /*
928311SSukumar.Swaminathan@Sun.COM  * Name:	Application Mailbox Interface Structure
938311SSukumar.Swaminathan@Sun.COM  *
948311SSukumar.Swaminathan@Sun.COM  * Purpose:	Used to pass mailbox data between app and driver.
958311SSukumar.Swaminathan@Sun.COM  *
968311SSukumar.Swaminathan@Sun.COM  * Used by:
978311SSukumar.Swaminathan@Sun.COM  *		qlctest utility
988311SSukumar.Swaminathan@Sun.COM  *
998311SSukumar.Swaminathan@Sun.COM  */
1008311SSukumar.Swaminathan@Sun.COM typedef struct app_mbx_cmd {
1018311SSukumar.Swaminathan@Sun.COM 	uint16_t	mb[32];
1028311SSukumar.Swaminathan@Sun.COM 	uint8_t		reserved1[32];
1038311SSukumar.Swaminathan@Sun.COM } app_mbx_cmd_t;
1048311SSukumar.Swaminathan@Sun.COM 
1058311SSukumar.Swaminathan@Sun.COM /*
1068311SSukumar.Swaminathan@Sun.COM  * Name:	Diagnostic Loopback Parameter Structure
1078311SSukumar.Swaminathan@Sun.COM  *
1088311SSukumar.Swaminathan@Sun.COM  * Purpose:	Used for loopback parameter data
1098311SSukumar.Swaminathan@Sun.COM  *
1108311SSukumar.Swaminathan@Sun.COM  * Used by:
1118311SSukumar.Swaminathan@Sun.COM  *		qlctest utility
1128311SSukumar.Swaminathan@Sun.COM  *
1138311SSukumar.Swaminathan@Sun.COM  */
1148311SSukumar.Swaminathan@Sun.COM #ifndef apps_64bit
1158311SSukumar.Swaminathan@Sun.COM typedef struct lbp {
1168311SSukumar.Swaminathan@Sun.COM 	uint16_t  options;
1178311SSukumar.Swaminathan@Sun.COM 	uint32_t  transfer_count;
1188311SSukumar.Swaminathan@Sun.COM 	uint16_t  transfer_segment_count;
1198311SSukumar.Swaminathan@Sun.COM 	uint16_t  receive_segment_count;
1208311SSukumar.Swaminathan@Sun.COM 	uint32_t  transfer_data_address;
1218311SSukumar.Swaminathan@Sun.COM 	uint32_t  receive_data_address;
1228311SSukumar.Swaminathan@Sun.COM 	uint32_t  iteration_count;
1238311SSukumar.Swaminathan@Sun.COM } lbp_t;
1248311SSukumar.Swaminathan@Sun.COM #else
1258311SSukumar.Swaminathan@Sun.COM typedef struct lbp {
1268311SSukumar.Swaminathan@Sun.COM 	uint16_t  options;
1278311SSukumar.Swaminathan@Sun.COM 	uint32_t  transfer_count;
1288311SSukumar.Swaminathan@Sun.COM 	uint16_t  transfer_segment_count;
1298311SSukumar.Swaminathan@Sun.COM 	uint16_t  receive_segment_count;
1308311SSukumar.Swaminathan@Sun.COM 	uint64_t  transfer_data_address;
1318311SSukumar.Swaminathan@Sun.COM 	uint64_t  receive_data_address;
1328311SSukumar.Swaminathan@Sun.COM 	uint32_t  iteration_count;
1338311SSukumar.Swaminathan@Sun.COM } lbp_t;
1348311SSukumar.Swaminathan@Sun.COM #endif
1358311SSukumar.Swaminathan@Sun.COM 
1368311SSukumar.Swaminathan@Sun.COM /*
1378311SSukumar.Swaminathan@Sun.COM  * Defines used by:
1388311SSukumar.Swaminathan@Sun.COM  *			qlctest utility
1398311SSukumar.Swaminathan@Sun.COM  *
1408311SSukumar.Swaminathan@Sun.COM  * Prupose:
1418311SSukumar.Swaminathan@Sun.COM  *	diag switch clause hooks provided for requested diagnostic
1428311SSukumar.Swaminathan@Sun.COM  *	functionality (Check command Queue, Revision Level, Firmwware
1438311SSukumar.Swaminathan@Sun.COM  *	Checksum, Self Test, Loopback Mailbox, Loopback Data, Execute
1448311SSukumar.Swaminathan@Sun.COM  *	Firmware and send ECHO.
1458311SSukumar.Swaminathan@Sun.COM  */
1468311SSukumar.Swaminathan@Sun.COM #define	QL_DIAG_CHKCMDQUE		0
1478311SSukumar.Swaminathan@Sun.COM #define	QL_DIAG_FMWCHKSUM		1
1488311SSukumar.Swaminathan@Sun.COM #define	QL_DIAG_SLFTST			2
1498311SSukumar.Swaminathan@Sun.COM #define	QL_DIAG_REVLVL			3
1508311SSukumar.Swaminathan@Sun.COM #define	QL_DIAG_LPBMBX			4
1518311SSukumar.Swaminathan@Sun.COM #define	QL_DIAG_LPBDTA			5
1528311SSukumar.Swaminathan@Sun.COM #define	QL_DIAG_EXEFMW			6
1538311SSukumar.Swaminathan@Sun.COM #define	QL_GET_ADAPTER_FEATURE_BITS	7
1548311SSukumar.Swaminathan@Sun.COM #define	QL_SET_ADAPTER_FEATURE_BITS	8
1558311SSukumar.Swaminathan@Sun.COM #define	QL_SET_ADAPTER_NVRAM_DEFAULTS	9
1568311SSukumar.Swaminathan@Sun.COM #define	QL_DIAG_ECHO			10
1578311SSukumar.Swaminathan@Sun.COM 
1588311SSukumar.Swaminathan@Sun.COM /*
1598311SSukumar.Swaminathan@Sun.COM  * Defines used for:
1608311SSukumar.Swaminathan@Sun.COM  *			qladm utility
1618311SSukumar.Swaminathan@Sun.COM  *			qlctest utility
1628311SSukumar.Swaminathan@Sun.COM  *
1638311SSukumar.Swaminathan@Sun.COM  * Purpose:
1648311SSukumar.Swaminathan@Sun.COM  *	Driver IOCTL numbers for nvram dump/load, and driverop
1658311SSukumar.Swaminathan@Sun.COM  *	functions. NB: 300 --> 399 are reserved for qla2x00 foapi's
1668311SSukumar.Swaminathan@Sun.COM  */
1678311SSukumar.Swaminathan@Sun.COM #define	QL_UTIL_LOAD	100
1688311SSukumar.Swaminathan@Sun.COM #define	QL_UTIL_DUMP	101
1698311SSukumar.Swaminathan@Sun.COM #define	QL_FOAPI_START	300
1708311SSukumar.Swaminathan@Sun.COM #define	QL_FOAPI_END	399
1718311SSukumar.Swaminathan@Sun.COM #define	QL_ADM_OP	402
1728311SSukumar.Swaminathan@Sun.COM 
1738311SSukumar.Swaminathan@Sun.COM /*
1748311SSukumar.Swaminathan@Sun.COM  * Purpose:
1758311SSukumar.Swaminathan@Sun.COM  *	QLA_ADM_OP command definitions
1768311SSukumar.Swaminathan@Sun.COM  *
1778311SSukumar.Swaminathan@Sun.COM  * Used by:
1788311SSukumar.Swaminathan@Sun.COM  *		qladm utility
1798311SSukumar.Swaminathan@Sun.COM  *		qlctest utility
1808311SSukumar.Swaminathan@Sun.COM  */
1818311SSukumar.Swaminathan@Sun.COM typedef enum ql_adm_cmd  {
1828311SSukumar.Swaminathan@Sun.COM 	QL_EXTENDED_LOGGING,
1838311SSukumar.Swaminathan@Sun.COM 	QL_ADAPTER_INFO,
1848311SSukumar.Swaminathan@Sun.COM 	QL_DEVICE_LIST,
1858311SSukumar.Swaminathan@Sun.COM 	QL_LOOP_RESET,
1868311SSukumar.Swaminathan@Sun.COM 	QL_FW_DUMP,
1878311SSukumar.Swaminathan@Sun.COM 	QL_NVRAM_LOAD,
1888311SSukumar.Swaminathan@Sun.COM 	QL_NVRAM_DUMP,
1898311SSukumar.Swaminathan@Sun.COM 	QL_FLASH_LOAD,
1908311SSukumar.Swaminathan@Sun.COM 	QL_PROP_UPDATE_INT,
1918311SSukumar.Swaminathan@Sun.COM 	QL_UPDATE_PROPERTIES,
1928311SSukumar.Swaminathan@Sun.COM 	QL_VPD_LOAD,
1938311SSukumar.Swaminathan@Sun.COM 	QL_VPD_DUMP,
1948311SSukumar.Swaminathan@Sun.COM 	QL_VPD_GETTAG,
1958311SSukumar.Swaminathan@Sun.COM 	QL_UPD_FWMODULE
1968311SSukumar.Swaminathan@Sun.COM } ql_adm_cmd_t;
1978311SSukumar.Swaminathan@Sun.COM 
1988311SSukumar.Swaminathan@Sun.COM /*
1998311SSukumar.Swaminathan@Sun.COM  * Purpose:
2008311SSukumar.Swaminathan@Sun.COM  *	QLA_ADM_OP Parameter Interface Structure
2018311SSukumar.Swaminathan@Sun.COM  *
2028311SSukumar.Swaminathan@Sun.COM  * Used by:
2038311SSukumar.Swaminathan@Sun.COM  *		qladm utility
2048311SSukumar.Swaminathan@Sun.COM  *		qlctest utility
2058311SSukumar.Swaminathan@Sun.COM  */
2068311SSukumar.Swaminathan@Sun.COM typedef struct ql_adm_op {
2078311SSukumar.Swaminathan@Sun.COM 	uint64_t	buffer;
2088311SSukumar.Swaminathan@Sun.COM 	uint32_t	length;
2098311SSukumar.Swaminathan@Sun.COM 	uint32_t	option;
2108311SSukumar.Swaminathan@Sun.COM 	ql_adm_cmd_t	cmd;	/* driver_op command */
2118311SSukumar.Swaminathan@Sun.COM } ql_adm_op_t;
2128311SSukumar.Swaminathan@Sun.COM 
2138311SSukumar.Swaminathan@Sun.COM /*
2148311SSukumar.Swaminathan@Sun.COM  * Purpose:
2158311SSukumar.Swaminathan@Sun.COM  *	QLA_ADM_OP parameter data structure
2168311SSukumar.Swaminathan@Sun.COM  *
2178311SSukumar.Swaminathan@Sun.COM  * Used by:
2188311SSukumar.Swaminathan@Sun.COM  *		qladm utility
2198311SSukumar.Swaminathan@Sun.COM  *		qlctest utility
2208311SSukumar.Swaminathan@Sun.COM  */
2218311SSukumar.Swaminathan@Sun.COM #define	MAX_PROP_LENGTH	256
2228311SSukumar.Swaminathan@Sun.COM typedef struct ql_adapter_info {
2238311SSukumar.Swaminathan@Sun.COM 	uint8_t		wwpn[8];
2248311SSukumar.Swaminathan@Sun.COM 	uint32_t	d_id;
2258311SSukumar.Swaminathan@Sun.COM 	uint32_t	flash_size;
2268311SSukumar.Swaminathan@Sun.COM 	uint16_t	device_id;
2278311SSukumar.Swaminathan@Sun.COM 	char		fw_ver[MAX_PROP_LENGTH];
2288311SSukumar.Swaminathan@Sun.COM 	char		fcode_ver[MAX_PROP_LENGTH];
2298311SSukumar.Swaminathan@Sun.COM 	char		driver_ver[MAX_PROP_LENGTH];
2308311SSukumar.Swaminathan@Sun.COM } ql_adapter_info_t;
2318311SSukumar.Swaminathan@Sun.COM 
2328311SSukumar.Swaminathan@Sun.COM /*
2338311SSukumar.Swaminathan@Sun.COM  * Purpose:
2348311SSukumar.Swaminathan@Sun.COM  *	QLA_ADM_OP data types (Fibre channel port types)
2358311SSukumar.Swaminathan@Sun.COM  *
2368311SSukumar.Swaminathan@Sun.COM  * Used by:
2378311SSukumar.Swaminathan@Sun.COM  *		qladm utility
2388311SSukumar.Swaminathan@Sun.COM  *		qlctest utility
2398311SSukumar.Swaminathan@Sun.COM  */
2408311SSukumar.Swaminathan@Sun.COM typedef enum ql_port_type {
2418311SSukumar.Swaminathan@Sun.COM 	FCT_UNKNOWN,
2428311SSukumar.Swaminathan@Sun.COM 	FCT_TAPE,
2438311SSukumar.Swaminathan@Sun.COM 	FCT_INITIATOR,
2448311SSukumar.Swaminathan@Sun.COM 	FCT_TARGET
2458311SSukumar.Swaminathan@Sun.COM } ql_port_type_t;
2468311SSukumar.Swaminathan@Sun.COM 
2478311SSukumar.Swaminathan@Sun.COM /*
2488311SSukumar.Swaminathan@Sun.COM  * Purpose:
2498311SSukumar.Swaminathan@Sun.COM  *	QLA_ADM_OP Device Information Structure
2508311SSukumar.Swaminathan@Sun.COM  *
2518311SSukumar.Swaminathan@Sun.COM  * Used by:
2528311SSukumar.Swaminathan@Sun.COM  *		qladm utility
2538311SSukumar.Swaminathan@Sun.COM  *		qlctest utility
2548311SSukumar.Swaminathan@Sun.COM  */
2558311SSukumar.Swaminathan@Sun.COM typedef struct ql_device_info {
2568311SSukumar.Swaminathan@Sun.COM 	uint8_t		wwpn[8];
2578311SSukumar.Swaminathan@Sun.COM 	uint32_t	address;
2588311SSukumar.Swaminathan@Sun.COM 	ql_port_type_t	type;
2598311SSukumar.Swaminathan@Sun.COM 	uint16_t	loop_id;
2608311SSukumar.Swaminathan@Sun.COM } ql_device_info_t;
2618311SSukumar.Swaminathan@Sun.COM 
2628311SSukumar.Swaminathan@Sun.COM #ifdef	__cplusplus
2638311SSukumar.Swaminathan@Sun.COM }
2648311SSukumar.Swaminathan@Sun.COM #endif
2658311SSukumar.Swaminathan@Sun.COM 
2668311SSukumar.Swaminathan@Sun.COM #endif /* _QL_APPS_H */
267