📄 ks_diag.c
字号:
PHARDWARE phw = gpDrvCtrl[0]->pHW;
#endif
/*
* Validate parameters
*/
if ( !(isValidBank( BankNum )) )
return FALSE;
if ( !(isValidRegAddr( RegAddr )) )
return FALSE;
if ( phw == NULL )
{
DisplayErrRetMsg( 3 ) ;
return FALSE;
}
/*
* Read from the register and display it's contents
*/
#ifdef KS_ISA_BUS
switch (Width)
{
case 1: /* read by BYTE unit */
{
unsigned char RegData=0;
HardwareSelectBank( phw, (UCHAR)BankNum );
HW_READ_BYTE( phw, (UCHAR)RegAddr, &RegData );
DBG_PRINT( "bank%02d-reg.%02d : %02x"NEWLINE, BankNum, (unsigned char)RegAddr, RegData );
}
break;
case 4: /* read by DWORD unit */
{
unsigned long RegData=0;
HardwareSelectBank( phw, (UCHAR)BankNum );
HW_READ_DWORD( phw, (UCHAR)RegAddr, &RegData );
DBG_PRINT( "bank%02d-reg.%02d : %08lx"NEWLINE, BankNum, (unsigned char)RegAddr, RegData );
}
break;
case 2: /* read by WORD unit */
default:
{
unsigned short RegData=0;
HardwareSelectBank( phw, (UCHAR)BankNum );
HW_READ_WORD( phw, (UCHAR)RegAddr, &RegData );
DBG_PRINT( "bank%02d-reg.%02d : %04x"NEWLINE, BankNum, (unsigned char)RegAddr, RegData );
}
break;
}
#endif /* #ifdef KS_ISA_BUS */
DBG_PRINT( NEWLINE);
return TRUE ;
}
/*****************************************************************
*
* Command: hwread
*
* Format: "hwread BankNum RegAddr Width"
*
******************************************************************/
int hwread
(
unsigned char BankNum,
unsigned long RegAddr,
unsigned char Width
)
{
#ifdef DEF_VXWORKS
PHARDWARE phw = gpDrvCtrl[0]->pHW;
#endif
/*
* Validate parameters
*/
if ( !(isValidBank( BankNum )) )
return FALSE;
if ( !(isValidRegAddr( RegAddr )) )
return FALSE;
if ( phw == NULL )
{
DisplayErrRetMsg( 3 ) ;
return FALSE;
}
/*
* Read from the register and display it's contents
*/
#ifdef KS_ISA_BUS
switch (Width)
{
case 1: /* read by BYTE unit */
{
unsigned char RegData=0;
HardwareReadRegByte( phw,
(UCHAR)BankNum,
(UCHAR)RegAddr,
(PUCHAR)&RegData
);
#ifdef KS_QC_TEST
DBG_PRINT( "^[%02x]$"NEWLINE, RegData );
#else
DBG_PRINT( "bank%02d-reg.%02d : %02x"NEWLINE, BankNum, (unsigned char)RegAddr, RegData );
#endif
}
break;
case 4: /* read by DWORD unit */
{
unsigned long RegData=0;
HardwareReadRegDWord( phw,
(UCHAR)BankNum,
(UCHAR)RegAddr,
(PULONG)&RegData
);
#ifdef KS_QC_TEST
DBG_PRINT( "^[%08lx]$"NEWLINE, RegData );
#else
DBG_PRINT( "bank%02d-reg.%02d : %08lx"NEWLINE, BankNum, (unsigned char)RegAddr, RegData );
#endif
}
break;
case 2: /* read by WORD unit */
default:
{
unsigned short RegData=0;
HardwareReadRegWord( phw,
(UCHAR)BankNum,
(UCHAR)RegAddr,
(PUSHORT)&RegData
);
#ifdef KS_QC_TEST
DBG_PRINT( "^[%04x]$"NEWLINE, RegData );
#else
DBG_PRINT( "bank%02d-reg.%02d : %04x"NEWLINE, BankNum, (unsigned char)RegAddr, RegData );
#endif
}
break;
}
#else /* PCI BUS */
switch (Width)
{
case 1: /* read by BYTE unit */
{
unsigned char RegData=0;
HW_READ_BYTE( phw,
(ULONG)RegAddr,
(PUCHAR)&RegData
);
DBG_PRINT( "reg.%08X : %02x "NEWLINE, (int) RegAddr, RegData );
}
break;
case 4: /* read by DWORD unit */
{
unsigned long RegData=0;
HW_READ_DWORD( phw,
(ULONG)RegAddr,
(PULONG)&RegData
);
DBG_PRINT( "reg.%08X : %08lx "NEWLINE, (int) RegAddr, RegData );
}
break;
case 2: /* read by WORD unit */
default:
{
unsigned short RegData=0;
HW_READ_WORD( phw,
(ULONG)RegAddr,
(PUSHORT)&RegData
);
DBG_PRINT( "reg.%08X : %04x "NEWLINE, (int) RegAddr, RegData );
}
break;
}
#endif /* #ifdef KS_ISA_BUS */
DBG_PRINT( NEWLINE);
return TRUE ;
}
/*****************************************************************
*
* Command: hwwrite
*
* Format: "hwwrite BankNum RegAddr RegData Width"
*
******************************************************************/
int hwwrite
(
unsigned char BankNum,
unsigned long RegAddr,
unsigned long RegData,
unsigned char Width
)
{
#ifdef DEF_VXWORKS
PHARDWARE phw = gpDrvCtrl[0]->pHW;
#endif
/*
* Validate parameters
*/
if ( !(isValidBank( BankNum )) )
return FALSE;
if ( !(isValidRegAddr( RegAddr )) )
return FALSE;
if ( phw == NULL )
{
DisplayErrRetMsg( 3 ) ;
return FALSE;
}
/*
* Write to the register
*/
#ifdef KS_ISA_BUS
switch (Width)
{
case 1: /* write by BYTE unit */
{
unsigned char WriteRegData=0;
#if 0
unsigned char ReadRegData=0 ;
#endif
WriteRegData = (unsigned char)RegData;
HardwareWriteRegByte( phw,
(UCHAR)BankNum,
(UCHAR)RegAddr,
(UCHAR)WriteRegData
);
/*
* Read it back from the register and display it's contents
*/
/*
HardwareReadRegByte( phw,
(UCHAR)BankNum,
(UCHAR)RegAddr,
(PUCHAR)&ReadRegData
);
DBG_PRINT( "bank%02d-reg.%02d : %02x "NEWLINE, BankNum, (unsigned char)RegAddr, ReadRegData );
*/
}
break;
case 4: /* write by DWORD unit */
{
unsigned long WriteRegData=0;
#if 0
unsigned long ReadRegData=0 ;
#endif
WriteRegData = (unsigned long)RegData;
HardwareWriteRegDWord( phw,
(UCHAR)BankNum,
(UCHAR)RegAddr,
(ULONG)WriteRegData
);
/*
* Read it back from the register and display it's contents
*/
/*
HardwareReadRegDWord( phw,
(UCHAR)BankNum,
(UCHAR)RegAddr,
(PULONG)&ReadRegData
);
DBG_PRINT( "bank%02d-reg.%02d : %08lx "NEWLINE, BankNum, (unsigned char)RegAddr, ReadRegData );
*/
}
break;
case 2: /* write by WORD unit */
default:
{
unsigned short WriteRegData=0;
#if 0
unsigned short ReadRegData=0 ;
#endif
WriteRegData = (unsigned short)RegData;
HardwareWriteRegWord( phw,
(UCHAR)BankNum,
(UCHAR)RegAddr,
(USHORT)WriteRegData
);
/*
* Read it back from the register and display it's contents
*/
/*
HardwareReadRegWord( phw,
(UCHAR)BankNum,
(UCHAR)RegAddr,
(PUSHORT)&ReadRegData
);
DBG_PRINT( "bank%02d-reg.%02d : %04x "NEWLINE, BankNum, (unsigned char)RegAddr, ReadRegData );
*/
}
break;
}
#else /* PCI BUS */
switch (Width)
{
case 1: /* write by BYTE unit */
{
unsigned char WriteRegData=0;
#if 0
unsigned char ReadRegData=0 ;
#endif
WriteRegData = (unsigned char)RegData;
HW_WRITE_BYTE( phw,
(ULONG)RegAddr,
(UCHAR)WriteRegData
);
/*
HW_READ_BYTE( phw,
(ULONG)RegAddr,
(PUCHAR)&ReadRegData
);
DBG_PRINT( "reg.%08X : %02x "NEWLINE, RegAddr, ReadRegData );
*/
}
break;
case 4: /* write by DWORD unit */
{
unsigned long WriteRegData=0;
#if 0
unsigned long ReadRegData=0 ;
#endif
WriteRegData = (unsigned long)RegData;
HW_WRITE_DWORD( phw,
(ULONG)RegAddr,
(ULONG)WriteRegData
);
/*
HW_READ_DWORD( phw,
(ULONG)RegAddr,
(PULONG)&ReadRegData
);
DBG_PRINT( "reg.%08X : %08lx "NEWLINE, RegAddr, ReadRegData );
*/
}
break;
case 2: /* write by WORD unit */
default:
{
unsigned short WriteRegData=0;
#if 0
unsigned short ReadRegData=0 ;
#endif
WriteRegData = (unsigned short)RegData;
HW_WRITE_WORD( phw,
(ULONG)RegAddr,
(USHORT)WriteRegData
);
/*
HW_READ_WORD( phw,
(ULONG)RegAddr,
(PUSHORT)&ReadRegData
);
DBG_PRINT( "reg.%08X : %04x "NEWLINE, RegAddr, ReadRegData );
*/
}
break;
}
#endif /* #ifdef KS_ISA_BUS */
#ifdef KS_QC_TEST
DBG_PRINT( "^[ok]$" );
#endif
DBG_PRINT( NEWLINE);
return TRUE ;
}
/*****************************************************************
*
* Command: hwpoll
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -