/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 QLogic Corporation. All rights reserved.
* Use is subject to license terms.
*/
/*
*/
#ifndef _QLT_H
#define _QLT_H
#include <sys/stmf_defines.h>
#include "qlt_regs.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Qlogic logging
*/
extern int enable_extended_logging;
/*
* 2) Anything which can potentially flood the log should be under
* extended logging, and use QLT_EXT_LOG.
* 3) Don't use QLT_EXT_LOG in performance-critical code path, such
* as normal SCSI I/O code path. It could hurt system performance.
* 4) Use kmdb to change enable_extened_logging in the fly to adjust
* tracing
*/
if (enable_extended_logging) { \
}
/*
* Error codes. FSC stands for Failure sub code.
*/
extern uint32_t fw2400_code01[];
extern uint32_t fw2400_length01;
extern uint32_t fw2400_addr01;
extern uint32_t fw2400_code02[];
extern uint32_t fw2400_length02;
extern uint32_t fw2400_addr02;
extern uint32_t fw2500_code01[];
extern uint32_t fw2500_length01;
extern uint32_t fw2500_addr01;
extern uint32_t fw2500_code02[];
extern uint32_t fw2500_length02;
extern uint32_t fw2500_addr02;
extern uint32_t fw8100_code01[];
extern uint32_t fw8100_length01;
extern uint32_t fw8100_addr01;
extern uint32_t fw8100_code02[];
extern uint32_t fw8100_length02;
extern uint32_t fw8100_addr02;
typedef enum {
MBOX_STATE_UNKNOWN = 0,
} mbox_state_t;
/*
* ISP mailbox commands
*/
/* Private Data Counts */
/*
* These should not be constents but should be obtained from fw.
*/
typedef struct {
} mbox_cmd_t;
typedef struct qlt_abts_cmd {
struct qlt_dmem_bucket;
struct qlt_ddi_dma_handle_pool;
typedef struct qlt_el_trace_desc {
char *trace_buffer;
typedef struct qlt_state {
struct qlt_dma_handle_pool
int instance;
/* Registers */
/* Interrupt stuff */
int intr_sneak_counter;
int intr_size;
int intr_cnt;
int intr_cap;
int intr_flags;
/* Queues */
/* MailBox data */
/* temp ref & stat counters */
} qlt_state_t;
/*
* FWDUMP flags (part of IOCTL flags)
*/
/*
* IOCTL supporting stuff
*/
typedef struct qlt_cmd {
union {
} param;
} qlt_cmd_t;
/*
* cmd flags
*/
typedef struct {
int dummy;
#define REQUEST_QUEUE_OFFSET 0
/*
* #define QMEM_RD64(qlt, addr) \
* ddi_get64(qlt->queue_mem_acc_handle, (uint64_t *)(addr))
*/
/*
* [QD]MEM is always little endian so the [QD]MEM_WR64 macro works for
* both sparc and x86.
*/
/*
* Structure used to associate values with strings which describe them.
*/
typedef struct string_table_entry {
char *string;
char *prop_text(int prop_status);
#define DDI_PROP_STATUS() \
{ \
{DDI_PROP_SUCCESS, "DDI_PROP_SUCCESS"}, \
{DDI_PROP_NOT_FOUND, "DDI_PROP_NOT_FOUND"}, \
{DDI_PROP_UNDEFINED, "DDI_PROP_UNDEFINED"}, \
{DDI_PROP_NO_MEMORY, "DDI_PROP_NO_MEMORY"}, \
{DDI_PROP_INVAL_ARG, "DDI_PROP_INVAL_ARG"}, \
{DDI_PROP_BUF_TOO_SMALL, "DDI_PROP_BUF_TOO_SMALL"}, \
{DDI_PROP_CANNOT_DECODE, "DDI_PROP_CANNOT_DECODE"}, \
{DDI_PROP_CANNOT_ENCODE, "DDI_PROP_CANNOT_ENCODE"}, \
{DDI_PROP_END_OF_DATA, "DDI_PROP_END_OF_DATA"}, \
{PROP_STATUS_DELIMITER, "DDI_PROP_UNKNOWN"} \
}
#ifndef TRUE
#endif
#ifndef FALSE
#endif
/* Little endian machine correction defines. */
#ifdef _LITTLE_ENDIAN
#define LITTLE_ENDIAN_16(x)
#define LITTLE_ENDIAN_24(x)
#define LITTLE_ENDIAN_32(x)
#define LITTLE_ENDIAN_64(x)
#endif /* _LITTLE_ENDIAN */
/* Big endian machine correction defines. */
#ifdef _BIG_ENDIAN
#define BIG_ENDIAN_16(x)
#define BIG_ENDIAN_24(x)
#define BIG_ENDIAN_32(x)
#define BIG_ENDIAN_64(x)
#endif /* _BIG_ENDIAN */
#ifdef __cplusplus
}
#endif
#endif /* _QLT_H */