⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ks_diag.c

📁 MICREL 网卡驱动 FOR CE 5.0
💻 C
📖 第 1 页 / 共 5 页
字号:
   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 + -