scfdebug.c 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
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef DEBUG
/*
* Debug control value and flag
*/
struct {
struct {
struct {
/*
* Function list
*/
void scf_debug_test_intr_tout(void *arg);
void scf_debug_test_intr_poff(void);
int len);
void scf_debug_test_alive_intr_tout(void *arg);
void scf_debug_test_timer_stop(void);
/*
* External function
*/
extern int scf_dscp_init(void);
extern void scf_dscp_fini(void);
extern int scf_fmem_end(void);
extern int scf_fmem_cancel(void);
int
{
#define SCF_FUNC_NAME "scf_debug_cmdthrough() "
int ret = 0;
KM_SLEEP);
sizeof (scfcmdthrough_t), mode) != 0) {
goto END_cmdthrough;
}
switch (scfcmdthrough_p->mode) {
case SCF_CMDTHROUGH_START:
break;
case SCF_CMDTHROUGH_STOP:
scf_comtbl.debugxscf_flag = 0;
break;
case SCF_CMDTHROUGH_CMD:
if (!scf_comtbl.debugxscf_flag) {
goto END_cmdthrough;
}
switch (scfcmdthrough_p->cmdtype) {
case SCF_CMDTHROUGH_TYPE_NN:
case SCF_CMDTHROUGH_TYPE_NS:
case SCF_CMDTHROUGH_TYPE_NL:
break;
case SCF_CMDTHROUGH_TYPE_SN:
case SCF_CMDTHROUGH_TYPE_SS:
case SCF_CMDTHROUGH_TYPE_SL:
"dbg_cmdt", 8);
goto END_cmdthrough;
}
break;
case SCF_CMDTHROUGH_TYPE_LN:
case SCF_CMDTHROUGH_TYPE_LS:
"dbg_cmdt", 8);
goto END_cmdthrough;
}
break;
default:
goto END_cmdthrough;
}
switch (scfcmdthrough_p->cmdtype) {
case SCF_CMDTHROUGH_TYPE_NN:
case SCF_CMDTHROUGH_TYPE_SN:
break;
case SCF_CMDTHROUGH_TYPE_NS:
case SCF_CMDTHROUGH_TYPE_SS:
break;
case SCF_CMDTHROUGH_TYPE_NL:
case SCF_CMDTHROUGH_TYPE_SL:
break;
case SCF_CMDTHROUGH_TYPE_LN:
break;
case SCF_CMDTHROUGH_TYPE_LS:
break;
}
if (ret != 0) {
goto END_cmdthrough;
}
sizeof (scfcmdthrough_t), mode) != 0) {
}
break;
default:
}
/*
* END_cmdthrough
*/
if (scfcmdthrough_p) {
kmem_free((void *)scfcmdthrough_p,
(size_t)(sizeof (scfcmdthrough_t)));
}
return (ret);
}
int
{
#define SCF_FUNC_NAME "scf_debug_test() "
int func_ret = 0;
int ret = 0;
int ii;
int jj;
int kmem_size = 0;
int kmem_size2 = 0;
int tm_stop_cnt;
sizeof (scf_scfioctest_t), mode) != 0) {
goto END_test;
}
}
case TEST_NONE:
break;
case TEST_CONF_RESET:
/* Not use info */
break;
case TEST_CONF_DEBUG_MSG:
/*
* IN:
* info[0] : trace massege flag
*/
break;
case TEST_CONF_CMD_BUSY:
/*
* IN:
* info[0] : command busy count
* info[1] : command ex busy count
*/
break;
case TEST_CONF_SCF_PATH:
/*
* IN:
* info[0] : scf_path_check count
* info[1] : scf_path_check return
* info[2] : scf_offline_check count
* info[3] : scf_offline_check return
*/
break;
case TEST_CONF_DSCP_LOOPBACK:
/*
* IN:
* info[0] : loopback mode
*/
break;
case TEST_INT_SYS:
/*
* IN:
* info[1] : STExR register
* info[2] : receive data size
* info[3] : RxDR register 0
* info[4] : RxDR register 1
* info[5] : RxDR register 2
* info[6] : RxDR register 3
*/
if (scf_debug_scfint_time != 0) {
if (scf_debug_test_sys_int_flag ==
(uint16_t)
if (scf_debug_test_intr_id == 0) {
timeout((void (*)())scf_debug_test_intr_tout,
(void *)statep,
}
} else {
"dbg_test", 8);
}
} else {
"dbg_test", 8);
}
}
break;
case TEST_INT_SYS_POFF:
/*
* IN:
* info[0] : POFF factor
*/
} else {
"dbg_test", 8);
}
} else {
}
break;
case TEST_INT_SYS_EVENT:
/*
* IN:
* info[0] - info[7] : Event 0
* info[8] - info[15] : Event 1
* info[16] - info[23] : Event 2
* info[24] - info[31] : Event 3
*/
if (scf_debug_test_sys_event_flag == FLAG_OFF) {
}
} else {
"dbg_test", 8);
}
} else {
}
break;
case TEST_INT_DSCP:
/*
* IN:
* info[1] : TxDSR_C_FLAG/TxDSR_OFFSET register
* info[2] : RxDCR_C_FLAG/RxDCR_OFFSET register
* info[3] : RxDCR_LENGTH register
*/
if (scf_debug_idbcint_time != 0) {
if (scf_debug_test_dscp_int_flag ==
} else {
}
(scf_debug_test_dscp_int_tbl.RxDCR_LENGTH != 0)) {
/* Data copy to SRAM */
wk_out_p =
}
}
if (scf_debug_test_intr_id == 0) {
timeout((void (*)())scf_debug_test_intr_tout,
(void *)statep,
}
} else {
"dbg_test", 8);
}
} else {
"dbg_test", 8);
}
}
break;
case TEST_SYS_CALL_INT:
/* Not use info */
if (scf_debug_scfint_time != 0) {
if (scf_debug_test_intr_id == 0) {
timeout((void (*)())scf_debug_test_intr_tout,
(void *)statep,
}
} else {
"dbg_test", 8);
}
}
break;
case TEST_DSCP_CALL_RESET:
/* Not use info */
break;
case TEST_DSCP_CALL_INIT:
/*
* IN:
* info[0] : target_id
* info[1] : mkey
*/
/*
* scf_mb_init(target_id_t target_id, mkey_t mkey,
* void (*event_handler) (scf_event_t mevent, void *arg),
* void *arg);
*/
func_arg = 0x01020304;
(void *)&func_arg);
} else {
(void *)&func_arg);
}
break;
case TEST_DSCP_CALL_FINI:
/*
* IN:
* info[0] : target_id
* info[1] : mkey
*/
/* scf_mb_fini(target_id_t target_id, mkey_t mkey); */
break;
case TEST_DSCP_CALL_PUTMSG:
/*
* IN:
* info[0] : target_id
* info[1] : mkey
* info[2] : data_len
* info[3] : num_sg
*/
/*
* scf_mb_putmsg(target_id_t target_id, mkey_t mkey,
* uint32_t data_len, uint32_t num_sg, mscat_gath_t *sgp,
* clock_t timeout);
*/
if (data_len != 0) {
}
if (num_sg != 0) {
}
if (msc_len != 0) {
if ((msc_len < 0x00000010) ||
} else {
}
msc_dptr++) {
}
} else {
}
}
} else {
}
if (data_len != 0)
data_len);
break;
case TEST_DSCP_CALL_CANGET:
/*
* IN:
* info[0] : target_id
* info[1] : mkey
* OUT:
* info[2] : data_len
*/
data_len = 0xffffffff;
/*
* scf_mb_canget(target_id_t target_id, mkey_t mkey,
* uint32_t *data_lenp);
*/
} else {
}
break;
case TEST_DSCP_CALL_GETMSG:
/*
* IN:
* info[0] : target_id
* info[1] : mkey
* info[2] : data_len
* info[3] : num_sg
*/
/*
* scf_mb_getmsg(target_id_t target_id, mkey_t mkey,
* uint32_t data_len, uint32_t num_sg, mscat_gath_t *sgp,
* clock_t timeout);
*/
if (data_len != 0) {
}
if (num_sg != 0) {
}
if (msc_len != 0) {
if ((msc_len < 0x00000010) ||
} else {
}
msc_dptr++) {
}
} else {
}
}
} else {
}
if (data_len != 0)
data_len);
break;
case TEST_DSCP_CALL_FLUSH:
/*
* IN:
* info[0] : target_id
* info[1] : mkey
* info[2] : flush_type
*/
/*
* scf_mb_flush(target_id_t target_id, mkey_t mkey,
* mflush_type_t flush_type);
*/
break;
case TEST_DSCP_CALL_CTRL:
/*
* IN:
* info[0] : target_id
* info[1] : mkey
* info[2] : op
* OUT:
* info[3] : arg
*/
/*
* scf_mb_ctrl(target_id_t target_id, mkey_t mkey,
* uint32_t op, void *arg);
*/
} else {
(void *)&func_arg);
}
break;
case TEST_DSCP_CALL_OTHER:
/*
* IN:
* info[0] : function code
* info[1] : factor
* OUT:
* info[3] : return code
*/
case 0x00000001:
break;
case 0x00000002:
break;
case 0x00000003:
break;
case 0x00000004:
break;
case 0x00000101:
}
} else {
}
break;
case 0x00000102:
} else {
}
break;
case 0x00000103:
break;
case 0x00000104:
break;
case 0x00000200:
}
break;
case 0x00010000:
case 0x00010098:
func_ret =
scf_panic_callb(1);
break;
}
drv_usecwait(5000000);
func_ret =
}
break;
case 0x00019990:
case 0x00019991:
} else {
}
break;
case 0x00019998:
scf_panic_callb(1);
break;
case 0x00019999:
break;
case 0x00020000:
break;
default:
break;
}
break;
case TEST_OSESCF_CALL_RESET:
/* Not use info */
break;
case TEST_OSESCF_CALL_PUTINFO:
/*
* IN:
* info[0] : key
* info[1] : type
* info[2] : transid
* info[3] : length
*/
/*
* scf_service_putinfo(uint32_t key, uint8_t type,
* uint32_t transid, uint32_t length, void *datap);
*/
if (length != 0) {
}
}
} else {
}
if (length != 0)
length);
break;
case TEST_OSESCF_CALL_GETINFO:
/*
* IN:
* info[0] : key
* info[1] : type
* info[2] : transid
* info[3] : length
* OUT:
* info[3] : length
*/
/*
* scf_service_getinfo(uint32_t key, uint8_t type,
* uint32_t transid, uint32_t *lengthp, void *datap);
*/
if (length != 0) {
}
*msc_dptr = 0x7f;
}
} else {
}
if (scf_debug_nofirm_sys == SCF_DBF_NOFIRM_SYS_ON) {
}
}
if (length != 0)
length);
break;
case TEST_FMEM_START:
/*
* IN:
* info[0] : lsb_1
* info[1] : lsb_2
*/
/*
* scf_fmem_start(int s_bd, int t_bd);
*/
break;
case TEST_FMEM_END:
/*
* scf_fmem_end(void);
*/
func_ret = scf_fmem_end();
break;
case TEST_FMEM_CANCEL:
/*
* scf_fmem_cancel(void);
*/
func_ret = scf_fmem_cancel();
break;
case TEST_GET_DIMMINFO:
/*
* IN:
* info[0] : boardnum
* info[1] : bufsz
* OUT:
* info[1] : bufsz
*/
/*
* scf_get_dimminfo(uint32_t boardnum, void *buf,
* uint32_t *bufsz);
*/
if (length != 0) {
}
&length);
if (scf_debug_nofirm_sys == SCF_DBF_NOFIRM_SYS_ON) {
}
}
if (length != 0)
length);
break;
default:
break;
}
/* Collect the timers which need to be stopped */
/* Unlock driver mutex */
/* Timer stop */
if (tm_stop_cnt != 0) {
}
if (ret == 0) {
sizeof (scf_scfioctest_t), mode) != 0) {
"ioctl ", 8);
}
}
/*
* END_test
*/
if (test_p) {
(size_t)(sizeof (scf_scfioctest_t)));
}
return (ret);
}
void
scf_debug_test_intr_tout(void *arg)
{
#define SCF_FUNC_NAME "scf_debug_test_intr_tout() "
if (scf_debug_test_intr_id != 0) {
} else {
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_intr() "
if (SCF_DBG_CHECK_NODEVICE) {
}
}
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_intr_scfint() "
statep->reg_status &
}
if (SCF_DBG_CHECK_NODEVICE) {
}
STATUS_SCF_STATUS_CHANGE) == 0) {
}
if (SCF_DBG_CHECK_NODEVICE) {
}
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_intr_cmdend() "
if ((scf_debug_rdata[0] == 0) &&
(scf_debug_rdata[1] == 0) &&
(scf_debug_rdata[2] == 0) &&
(scf_debug_rdata[3] == 0)) {
} else {
}
} else {
if (scf_debug_test_sys_int_tbl.RDATA2 != 0) {
} else {
}
if ((scf_comtbl.scf_exec_cmd_id == 0) &&
0x00);
}
} else {
wk_data = 0x00010203;
ii);
if ((ii % 4) == 0) {
} else {
}
}
}
if (scf_no_make_sum_l == SCF_DBF_NO_MAKE_SUM_L_OFF) {
}
}
}
if (scf_no_make_sum_s == SCF_DBF_NO_MAKE_SUM_S_OFF) {
}
}
void
scf_debug_test_intr_poff(void)
{
#define SCF_FUNC_NAME "scf_debug_test_intr_poff() "
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_dsens() "
if (wk_len == 0) {
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_intr_dscp_dsr() "
if (SCF_DBG_CHECK_NODEVICE) {
}
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_intr_dscp_rxtx() "
if (scf_debug_test_dscp_int_tbl.RxDCR_LENGTH != 0) {
} else {
}
} else {
}
"set RxDCR = 0x%04x 0x%04x 0x%08x",
}
if (scf_debug_test_dscp_int_tbl.TxDSR_OFFSET == 0) {
} else {
}
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_alive_start() "
switch (wk_int8 & ATR_INTERVAL) {
case ATR_INTERVAL_30S:
alive_timer = 30000;
break;
case ATR_INTERVAL_60S:
alive_timer = 60000;
break;
case ATR_INTERVAL_120S:
alive_timer = 120000;
break;
default:
alive_timer = 0;
break;
}
if ((alive_timer != 0) && (scf_debug_test_alive_id == 0)) {
timeout((void (*)())scf_debug_test_alive_intr_tout,
(void *)statep,
}
}
/* ARGSUSED */
void
{
#define SCF_FUNC_NAME "scf_debug_test_alive_stop() "
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_alive_intr_tout() "
if (scf_debug_test_alive_flag == FLAG_ON) {
} else {
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_send_cmd() "
if (scf_debug_scfint_time != 0) {
case SCF_USE_SSBUF:
case SCF_USE_LSBUF:
break;
case SCF_USE_SLBUF:
break;
default:
break;
}
if (scf_debug_test_intr_id == 0) {
timeout((void (*)())scf_debug_test_intr_tout,
(void *)statep,
}
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_txreq_send() "
if (scf_debug_idbcint_time != 0) {
if (scf_debug_test_dscp_loopback ==
} else {
}
} else {
}
if (scf_debug_test_intr_id == 0) {
timeout((void (*)())scf_debug_test_intr_tout,
(void *)statep,
}
}
}
/* ARGSUSED */
void
{
#define SCF_FUNC_NAME "scf_debug_test_event_handler() "
mevent);
switch (mevent) {
case SCF_MB_CONN_OK:
break;
case SCF_MB_MSG_DATA:
break;
case SCF_MB_SPACE:
break;
case SCF_MB_DISC_ERROR:
break;
default:
break;
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_timer_stop() "
int timer_cnt = 0;
int ii;
if (scf_debug_test_intr_id != 0) {
timer_cnt++;
}
if (scf_debug_test_alive_id != 0) {
timer_cnt++;
}
}
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_map_regs() "
(off_t)sizeof (scf_debug_scf_reg_drvtrc_tbl);
statep->resource_flag |=
}
void
{
#define SCF_FUNC_NAME "scf_debug_test_unmap_regs() "
statep->resource_flag &=
}
#endif /* DEBUG */