scfsys.h revision 44bed9d7e21975b68d41a2a54db2aa0581429ca6
/*
* 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
*/
/*
* All Rights Reserved, Copyright (c) FUJITSU LIMITED 2006
*/
#ifndef _SCFSYS_H
#define _SCFSYS_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#ifndef TRUE
#define TRUE (1)
#endif
#ifndef FALSE
#define FALSE (0)
#endif
#define FLAG_ON (1)
#define FLAG_OFF (0)
#define SCF_DRIVER_VERSION "SCF driver 1.9"
#define SCF_DRIVER_NAME "scfd"
#define SCF_DEVICE_NAME "scfc"
/* instance number */
/* SCFHALT after processing mode define */
#define HALTPROC_STOP 0 /* processing stop mode (default) */
/*
* External function
*/
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
int u_mode);
extern int scf_push_reportsense(unsigned int rci_addr,
extern int scf_push_getevent(unsigned char *event_p);
extern void scf_next_rxdata_get(void);
extern void scf_online_wait_tout(void);
extern void scf_cmdbusy_tout(void);
extern void scf_cmdend_tout(void);
extern void scf_report_send_wait_tout(void);
extern void scf_panic_callb(int code);
extern void scf_shutdown_callb(int code);
extern void scf_cmdwait_status_set(void);
#ifdef DEBUG
/* meta management instance */
/* instance management instance */
int flag);
int flag);
#define SCF_DDI_PUT8(a, b, c, d) \
if (scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) { \
*cp = d; \
} else { \
ddi_put8(b, c, d); \
}
#define SCF_DDI_PUT16(a, b, c, d) \
if (scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) { \
*cp = d; \
} else { \
ddi_put16(b, c, d); \
}
#define SCF_DDI_PUT32(a, b, c, d) \
if (scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) { \
*cp = d; \
} else { \
ddi_put32(b, c, d); \
}
#define SCF_DDI_GET8(a, b, c) \
(scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) ? \
#define SCF_DDI_GET16(a, b, c) \
(scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) ? \
#define SCF_DDI_GET32(a, b, c) \
(scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) ? \
#define SCF_P_DDI_PUT8(a, b, c) \
if (scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) { \
*bp = c; \
} else { \
ddi_put8(a, b, c); \
}
#define SCF_P_DDI_PUT16(a, b, c) \
if (scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) { \
*bp = c; \
} else { \
ddi_put16(a, b, c); \
}
#define SCF_P_DDI_PUT32(a, b, c) \
if (scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) { \
*bp = c; \
} else { \
ddi_put32(a, b, c); \
}
#define SCF_P_DDI_GET8(a, b) \
(scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) ? \
#define SCF_P_DDI_GET16(a, b) \
(scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) ? \
#define SCF_P_DDI_GET32(a, b) \
(scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) ? \
#define SCF_CHECK_INSTANCE(a) \
(a == SCF_USER_INSTANCE) || \
(a == SCF_META_INSTANCE) || \
(a == SCF_INST_INSTANCE)
#define SCF_DBG_DRV_TRACE_TBL \
scf_trctbl_t *trace_f; \
scf_trctbl_t *trace_l; \
scf_trctbl_t *trace_w; \
int path_num; \
int alloc_size; \
#define SC_DBG_DRV_TRACE(a, b, c, d) \
#define SCF_DBG_DRV_TRACE_INIT \
#define SCFDBGMSG(f, s) if (f & scf_trace_msg_flag) \
#define SCFDBGMSG1(f, s, a) if (f & scf_trace_msg_flag) \
#define SCFDBGMSG2(f, s, a, b) if (f & scf_trace_msg_flag) \
#define SCFDBGMSG3(f, s, a, b, c) if (f & scf_trace_msg_flag) \
#define SCFDBGMSG4(f, s, a, b, c, d) if (f & scf_trace_msg_flag) \
#define SCF_DBG_IOMP_INSTANCE \
#define SCF_DBG_IOMP_PROC \
if (instance == SCF_META_INSTANCE) { \
goto END_ioctl; \
} \
u_mode); \
goto END_ioctl; \
} else if (instance == SCF_INST_INSTANCE) { \
goto END_ioctl; \
} \
u_mode); \
goto END_ioctl; \
}
#define SCF_DBG_IOMP_ADD(a) \
{ \
scf_add_scf(a); \
}
#define SCF_DBG_IOMP_DEL(a) \
{ \
scf_del_scf(a); \
}
#define SCF_DBG_IOMP_FREE \
{ \
scf_comtbl.alloc_size = 0; \
scf_comtbl.path_num = 0; \
} \
}
#define SCF_DBG_IOCTL_PROC \
goto END_ioctl; \
goto END_ioctl; \
goto END_ioctl; \
goto END_ioctl; \
}
#define SCF_DBG_TEST_TIMER_STOP \
{ \
}
#define SCF_DBG_TEST_INTR(a) \
{ \
if ((scf_debug_test_sys_int_flag == SCF_DBF_SYS_INTR_ON) || \
scf_debug_test_intr(a); \
}
#define SCF_DBG_TEST_INTR_SCFINT(a) \
{ \
}
#define SCF_DBG_TEST_INTR_CMDEND(a) \
{ \
}
#define SCF_DBG_MAKE_RXSUM(a, b) \
{ \
a = b; \
}
#define SCF_DBG_MAKE_RXSUM_L(a, b) \
{ \
a = b; \
} \
}
#define SCF_DBG_NO_INT_REASON \
{ \
if (scf_debug_no_int_reason) \
}
#define SCF_DBG_TEST_INTR_POFF \
{ \
}
#define SCF_DBG_TEST_DSENS(a, b, c) \
{ \
scf_debug_test_dsens(a, b, c); \
}
#define SCF_DBG_TEST_SEND_CMD(a, b) \
{ \
if (scf_debug_nofirm_sys == SCF_DBF_NOFIRM_SYS_ON) \
scf_debug_test_send_cmd(a, b); \
}
#define SCF_DBG_MAKE_PATH_CHECK(a) \
{ \
if (scf_debug_test_path_check != SCF_DBC_PATH_CHECK_CLEAR) { \
} \
}
#define SCF_DBG_MAKE_ONLINE(a) \
{ \
a = STATUS_SCF_ONLINE; \
}
#define SCF_DBG_MAKE_OFFLINE_CHECK(a) \
{ \
} \
}
#define SCF_DBG_RTN_MAKE_CMD_READY \
{ \
if (scf_debug_nofirm_sys == SCF_DBF_NOFIRM_SYS_ON) \
return (SCF_COMMAND_READY); \
}
#define SCF_DBG_MAKE_CMD_BUSY(a, b) \
{ \
if (scf_debug_test_cmdr_busy != SCF_DBC_CMDR_BUSY_CLEAR) { \
a |= COMMAND_BUSY; \
} \
if (scf_debug_test_cmdexr_busy != SCF_DBC_CMDEXR_BUSY_CLEAR) { \
b |= COMMAND_ExR_BUSY; \
} \
}
#define SCF_DBG_TEST_ALIVE_START(a) \
{ \
if (scf_debug_no_alive == SCF_DBF_NO_ALIVE_ON) \
}
#define SCF_DBG_TEST_ALIVE_STOP(a) \
{ \
if (scf_debug_no_alive == SCF_DBF_NO_ALIVE_ON) \
}
#define SCF_DBG_TEST_INTR_DSCP_DSR(a) \
{ \
}
#define SCF_DBG_TEST_INTR_DSCP_RXTX(a, b) \
{ \
scf_debug_test_intr_dscp_rxtx(a, b); \
}
#define SCF_DBG_MAKE_LOOPBACK(a) \
{ \
a = 0; \
}
#define SCF_DBG_MAKE_NO_DSCP_PATH(a) \
{ \
a = FLAG_OFF; \
}
#define SCF_DBG_TEST_TXREQ_SEND(a, b) \
{ \
if (scf_debug_nofirm_dscp == SCF_DBF_NOFIRM_DSCP_ON) \
scf_debug_test_txreq_send(a, b); \
}
#define SCF_DBG_TEST_MAP_REGS(a) \
{ \
if (scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) { \
scf_debug_test_map_regs(a); \
scf_sram_trace_init(a); \
ret = 0; \
goto END_map_regs; \
} \
}
#define SCF_DBG_TEST_UNMAP_REGS(a) \
{ \
if (scf_debug_no_device == SCF_DBF_NO_DEVICE_ON) { \
return; \
} \
}
#define SCF_DBG_XSCF_SET_STATUS \
if (scf_comtbl.debugxscf_flag) { \
} \
}
#define SCF_DBG_XSCF_SET_LENGTH \
if (scf_comtbl.debugxscf_flag) { \
NORMAL_END) { \
break; \
} \
}
#define SCF_DBG_CHECK_NODEVICE \
#else /* DEBUG */
#define SCF_DDI_PUT8(a, b, c, d) ddi_put8(b, c, d)
#define SCF_DDI_PUT16(a, b, c, d) ddi_put16(b, c, d)
#define SCF_DDI_PUT32(a, b, c, d) ddi_put32(b, c, d)
#define SCF_DDI_GET8(a, b, c) ddi_get8(b, c)
#define SCF_DDI_GET16(a, b, c) ddi_get16(b, c)
#define SCF_DDI_GET32(a, b, c) ddi_get32(b, c)
#define SCF_P_DDI_PUT8(a, b, c) ddi_put8(a, b, c)
#define SCF_P_DDI_PUT16(a, b, c) ddi_put16(a, b, c)
#define SCF_P_DDI_PUT32(a, b, c) ddi_put32(a, b, c)
#define SCF_P_DDI_GET8(a, b) ddi_get8(a, b)
#define SCF_P_DDI_GET16(a, b) ddi_get16(a, b)
#define SCF_P_DDI_GET32(a, b) ddi_get32(a, b)
#define SCF_CHECK_INSTANCE(a) (a == SCF_USER_INSTANCE)
#define SCF_DBG_DRV_TRACE_TBL
#define SC_DBG_DRV_TRACE(a, b, c, d)
#define SCF_DBG_DRV_TRACE_INIT
#define SCFDBGMSG(f, s)
#define SCFDBGMSG1(f, s, a)
#define SCFDBGMSG2(f, s, a, b)
#define SCFDBGMSG3(f, s, a, b, c)
#define SCFDBGMSG4(f, s, a, b, c, d)
#define SCF_DBG_INIT
#define SCF_DBG_IOMP_INSTANCE
#define SCF_DBG_IOMP_PROC
#define SCF_DBG_IOCTL_PROC
#define SCF_DBG_IOMP_ADD(a)
#define SCF_DBG_IOMP_DEL(a)
#define SCF_DBG_IOMP_FREE
#define SCF_DBG_TEST_TIMER_STOP
#define SCF_DBG_TEST_INTR(a)
#define SCF_DBG_TEST_INTR_SCFINT(a)
#define SCF_DBG_TEST_INTR_CMDEND(a)
#define SCF_DBG_MAKE_RXSUM(a, b)
#define SCF_DBG_MAKE_RXSUM_L(a, b)
#define SCF_DBG_NO_INT_REASON
#define SCF_DBG_TEST_INTR_POFF
#define SCF_DBG_TEST_DSENS(a, b, c)
#define SCF_DBG_TEST_SEND_CMD(a, b)
#define SCF_DBG_MAKE_PATH_CHECK(a)
#define SCF_DBG_MAKE_ONLINE(a)
#define SCF_DBG_MAKE_OFFLINE_CHECK(a)
#define SCF_DBG_RTN_MAKE_CMD_READY
#define SCF_DBG_MAKE_CMD_BUSY(a, b)
#define SCF_DBG_TEST_ALIVE_START(a)
#define SCF_DBG_TEST_ALIVE_STOP(a)
#define SCF_DBG_TEST_INTR_DSCP_DSR(a)
#define SCF_DBG_TEST_INTR_DSCP_RXTX(a, b)
#define SCF_DBG_MAKE_LOOPBACK(a)
#define SCF_DBG_MAKE_NO_DSCP_PATH(a)
#define SCF_DBG_TEST_TXREQ_SEND(a, b)
#define SCF_DBG_TEST_MAP_REGS(a)
#define SCF_DBG_TEST_UNMAP_REGS(a)
#define SCF_DBG_DDI_PUT(a, b)
#define SCF_DBG_DDI_GET(a)
#define SCF_DBG_XSCF_SET_STATUS
#define SCF_DBG_XSCF_SET_LENGTH
#endif /* DEBUG */
/*
* SCF driver common table
*/
typedef struct scf_comtbl {
/* mutex resource */
/* cookie */
/* condition variables */
/* ID */
/* SCF state table address */
/* flag and counter */
/* retry counter */
/* retry counter */
/* status information */
/* SCF command control code */
/* SCF command control */
/* SCF command interrupt area */
/* ioctl control area */
int report_sense_top; /* SCFIOCGETREPORT save offset(push) */
int report_sense_oldest; /* SCFIOCGETREPORT save offset(pop) */
int getevent_sense_top; /* SCFIOCGETEVENT save offset(push) */
int getevent_sense_oldest; /* SCFIOCGETEVENT save offset(pop) */
/* SCFIOCCLEARLCD and SCFIOCWRLCD message */
/* memo counter */
/* error memo counter */
/* Unclaimed interrupt register log */
struct {
} scf_unclamed;
/* kstat private area */
SCF_DBG_DRV_TRACE_TBL /* SCF driver trace */
} scf_comtbl_t;
/*
* (resource_flag) macro for resource allocate flag
*/
#define DID_MUTEX_ATH (1 << 0)
/*
* XSCF status defaine (scf_status)
*/
#define SCF_STATUS_OFFLINE 0 /* XSCF status is offline */
/*
* SCF command control status
*/
#define EVENT_SUB_NONE 0 /* None status */
/* (scf_pchg_event_sub) SCF path change status */
/* (scf_poff_event_sub) POFF event status */
/* (scf_shut_event_sub) SHUTDOWN event status */
/* (scf_alive_event_sub) ALIVE event status */
/* (scf_report_event_sub) REPORT processing status */
/* (scf_domain_event_sub) Domain processing status */
/* (scf_last_report) define */
/* scf_cmd_resend_req define */
#ifdef __cplusplus
}
#endif
#endif /* _SCFSYS_H */