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

📄 target.h

📁 MICREL 网卡驱动 FOR CE 5.0
💻 H
📖 第 1 页 / 共 5 页
字号:
/* ---------------------------------------------------------------------------
          Copyright (c) 2003-2006 Micrel, Inc.  All rights reserved.
   ---------------------------------------------------------------------------

    target.h - Target platform functions header

    Author      Date        Description
    THa         12/10/03    Created file.
    THa         02/23/04    Use 32-bit buffer read/write to improve
                            performance.
    THa         09/27/04    Updated for PCI version.
    THa         08/15/05    Added PCI configuration I/O.
    THa         01/13/06    Transfer dword-aligned data for performance.
    THa         02/28/06    Do not use HW_WRITE_BYTE because of limitation of
                            some hardware platforms.
    THa         06/02/06    Define HardwareDisableInterruptSync.
   ---------------------------------------------------------------------------
*/


#ifndef __TARGET_H
#define __TARGET_H


#ifdef KS_ISA_BUS

/* Only support generic bus for now. */
#if 1
#define SH_BUS
#endif

/* SuperH needs to be aligned at 32-bit for memory i/o. */
#if 1
#define SH_32BIT_ALIGNED
#endif

/* Some hardware platforms can only do 32-bit access. */
/* Temporary workaround.  Need to rewrite driver for better performance. */
#if 0
#define SH_32BIT_ACCESS_ONLY
#endif

/* Some hardware platforms cannot do byte write successfully. */
#if 0
#define SH_16BIT_WRITE
#endif

#endif /* #ifdef KS_ISA_BUS */


/* No auto-negotiation for link speed/duplex mode in KSZ8861/2 with 100FX fiber mode.
   when user define "FIBER_100FX", the driver set KS8861/2 port 1 to 100BT/full duplex */
#if 0
#define FIBER_100FX
#endif

/* To configure two separated Network interface, set Port1 and Port3 in
   one port-base vlan, and Port2 and Port3 in another port-base vlan.
 */
#if 0
#define TWO_NETWORK_INTERFACE
#endif


#define HardwareDisableInterruptSync( pHardware )  \
    HardwareDisableInterrupt( pHardware )


#if defined(_WIN32) || defined(DEF_LINUX)


/* -------------------------------------------------------------------------- *
 *                               WIN32 OS                                     *
 * -------------------------------------------------------------------------- */

#ifdef _WIN32

#define FAR
#ifdef UNDER_CE
#define NEWLINE    "\r\n"
#else
#define NEWLINE    "\n"
#endif

typedef unsigned char   BYTE;
typedef unsigned char   UINT8;

#ifdef NDIS_MINIPORT_DRIVER
#include <ndis.h>


#undef HardwareDisableInterruptSync
void HardwareDisableInterruptSync ( void* pHardware );


#define DBG_PRINT  DbgPrint


#define CPU_TO_LE32( x )  ( x )
#define LE32_TO_CPU( x )  ( x )


#ifdef KS_ISA_BUS
#define HW_READ_BUFFER( phwi, addr, data, len )                             \
    NdisRawReadPortBufferUlong(( phwi )->m_ulVIoAddr + addr, data,          \
        (( len ) + 3 ) >> 2 )

#define HW_WRITE_BUFFER( phwi, addr, data, len )                            \
{                                                                           \
    NdisRawWritePortBufferUlong(( phwi )->m_ulVIoAddr + addr, data,         \
        (( len ) + 3 ) >> 2 );                                              \
}

#define HW_READ_BUFFER_BYTE( phwi, addr, data, len )                        \
    NdisRawReadPortBufferUchar(( phwi )->m_ulVIoAddr + addr, data, len )

#define HW_WRITE_BUFFER_BYTE( phwi, addr, data, len )                       \
    NdisRawWritePortBufferUchar(( phwi )->m_ulVIoAddr + addr, data, len )

#define HW_READ_BUFFER_WORD( phwi, addr, data, len )                        \
    NdisRawReadPortBufferUshort(( phwi )->m_ulVIoAddr + addr, data, len )

#define HW_WRITE_BUFFER_WORD( phwi, addr, data, len )                       \
    NdisRawWritePortBufferUshort(( phwi )->m_ulVIoAddr + addr, data, len )

#define HW_READ_BUFFER_DWORD( phwi, addr, data, len )                       \
    NdisRawReadPortBufferUlong(( phwi )->m_ulVIoAddr + addr, data, len )

#define HW_WRITE_BUFFER_DWORD( phwi, addr, data, len )                      \
    NdisRawWritePortBufferUlong(( phwi )->m_ulVIoAddr + addr, data, len )

#define HW_READ_BYTE( phwi, addr, data )                                    \
    NdisRawReadPortUchar(( phwi )->m_ulVIoAddr + addr, data )

#define HW_WRITE_BYTE( phwi, addr, data )                                   \
    NdisRawWritePortUchar(( phwi )->m_ulVIoAddr + addr, data )

#define HW_READ_WORD( phwi, addr, data )                                    \
    NdisRawReadPortUshort(( phwi )->m_ulVIoAddr + addr, data )

#define HW_WRITE_WORD( phwi, addr, data )                                   \
    NdisRawWritePortUshort(( phwi )->m_ulVIoAddr + addr, data )

#define HW_READ_DWORD( phwi, addr, data )                                   \
    NdisRawReadPortUlong(( phwi )->m_ulVIoAddr + addr, data )

#define HW_WRITE_DWORD( phwi, addr, data )                                  \
    NdisRawWritePortUlong(( phwi )->m_ulVIoAddr + addr, data )
#endif

#ifdef KS_PCI_BUS
#define HW_READ_BYTE( phwi, addr, data )                                    \
    *( data ) = *(( volatile UCHAR* )(( phwi )->m_pVirtualMemory + addr ))

#define HW_WRITE_BYTE( phwi, addr, data )                                   \
    *(( volatile UCHAR* )(( phwi )->m_pVirtualMemory + addr )) = ( UCHAR )( data )

#define HW_READ_WORD( phwi, addr, data )                                    \
    *( data ) = *(( volatile USHORT* )(( phwi )->m_pVirtualMemory + addr ))

#define HW_WRITE_WORD( phwi, addr, data )                                   \
    *(( volatile USHORT* )(( phwi )->m_pVirtualMemory + addr )) = ( USHORT )( data )

#define HW_READ_DWORD( phwi, addr, data )                                   \
    *( data ) = *(( volatile ULONG* )(( phwi )->m_pVirtualMemory + addr ))

#define HW_WRITE_DWORD( phwi, addr, data )                                  \
    *(( volatile ULONG* )(( phwi )->m_pVirtualMemory + addr )) = ( ULONG )( data )

BOOLEAN PciReadConfig ( PVOID, int, PULONG );
BOOLEAN PciReadConfigByte ( PVOID, int, PUCHAR );
BOOLEAN PciReadConfigWord ( PVOID, int, PUSHORT );
BOOLEAN PciWriteConfig ( PVOID, int, ULONG );
BOOLEAN PciWriteConfigByte ( PVOID, int, UCHAR );
BOOLEAN PciWriteConfigWord ( PVOID, int, USHORT );

#define HW_PCI_READ_BYTE( phwi, addr, data )                                \
    PciReadConfigByte(( phwi )->m_pPciCfg, addr, data )

#define HW_PCI_READ_WORD( phwi, addr, data )                                \
    PciReadConfigWord(( phwi )->m_pPciCfg, addr, data )

#define HW_PCI_READ_DWORD( phwi, addr, data )                               \
    PciReadConfig(( phwi )->m_pPciCfg, addr, data )

#define HW_PCI_WRITE_BYTE( phwi, addr, data )                               \
    PciWriteConfigByte(( phwi )->m_pPciCfg, addr, data )

#define HW_PCI_WRITE_WORD( phwi, addr, data )                               \
    PciWriteConfigWord(( phwi )->m_pPciCfg, addr, data )

#define HW_PCI_WRITE_DWORD( phwi, addr, data )                              \
    PciWriteConfig(( phwi )->m_pPciCfg, addr, data )

#endif

#define MOVE_MEM( dest, src, len )                                          \
    NdisMoveMemory( dest, src, len )

#else  /* #ifdef NDIS_MINIPORT_DRIVER */
#include <conio.h>
#include <stdio.h>
#include <string.h>


typedef unsigned char   UCHAR;
typedef unsigned char*  PUCHAR;
typedef unsigned short  USHORT;
typedef unsigned short* PUSHORT;
typedef unsigned long   ULONG;
typedef unsigned long*  PULONG;
typedef unsigned long   ULONGLONG;
typedef unsigned long*  PULONGLONG;

typedef int             BOOLEAN;
typedef int*            PBOOLEAN;


#define FALSE  0
#define TRUE   1


#define DBG_PRINT  printf


#define CPU_TO_LE32( x )  ( x )
#define LE32_TO_CPU( x )  ( x )


#define HW_READ_BUFFER( phwi, addr, data, len )                             \
    HardwareReadBuffer( phwi, addr, ( PULONG ) data, ( len )  )
#if (0)
    HardwareReadBuffer( phwi, addr, ( PUSHORT ) data, ( len ) >> 1 )
#endif

#define HW_WRITE_BUFFER( phwi, addr, data, len )                            \
    HardwareWriteBuffer( phwi, addr, ( PULONG ) data, ( len ) )
#if (0)
    HardwareWriteBuffer( phwi, addr, ( PUSHORT ) data, ( len ) >> 1 )
#endif

#define HW_READ_BYTE( phwi, addr, data )                                    \
    *data = _inp(( USHORT )(( phwi )->m_ulVIoAddr + addr ))

#define HW_WRITE_BYTE( phwi, addr, data )                                   \
    _outp(( USHORT )(( phwi )->m_ulVIoAddr + addr ), data )

#define HW_READ_WORD( phwi, addr, data )                                    \
    *data = _inpw(( USHORT )(( phwi )->m_ulVIoAddr + addr ))

#define HW_WRITE_WORD( phwi, addr, data )                                   \
    _outpw(( USHORT )(( phwi )->m_ulVIoAddr + addr ), ( USHORT )( data ))

#define HW_READ_DWORD( phwi, addr, data )                                   \
    *data = _inpd(( USHORT )(( phwi )->m_ulVIoAddr + addr ))

#define HW_WRITE_DWORD( phwi, addr, data )                                  \
    _outpd(( USHORT )(( phwi )->m_ulVIoAddr + addr ), data )

#define MOVE_MEM( dest, src, len )                                          \
    memcpy( dest, src, len )

#endif /* #ifdef NDIS_MINIPORT_DRIVER */
#endif /* #ifdef _WIN32 */

#define MEM_READ_BYTE( phwi, addr, data )                                   \
    *data = *(( PUCHAR )(( phwi )->m_pVirtualMemory + addr ))

#define MEM_WRITE_BYTE( phwi, addr, data )                                  \
    *(( PUCHAR )(( phwi )->m_pVirtualMemory + addr )) = ( UCHAR )( data )

#define MEM_READ_WORD( phwi, addr, data )                                   \
    *data = *(( PUSHORT )(( phwi )->m_pVirtualMemory + addr ))

#define MEM_WRITE_WORD( phwi, addr, data )                                  \
    *(( PUSHORT )(( phwi )->m_pVirtualMemory + addr )) = ( USHORT )( data )

#define MEM_READ_DWORD( phwi, addr, data )                                  \
    *data = *(( PULONG )(( phwi )->m_pVirtualMemory + addr ))

#define MEM_WRITE_DWORD( phwi, addr, data )                                 \
    *(( PULONG )(( phwi )->m_pVirtualMemory + addr )) = ( ULONG )( data )


/* -------------------------------------------------------------------------- *
 *                             LINUX OS                                       *
 * -------------------------------------------------------------------------- */

#ifdef DEF_LINUX
#include <asm/io.h>
#include <linux/mm.h>
#include <linux/pci.h>


typedef unsigned char   BYTE;
typedef unsigned char   UCHAR;
typedef unsigned char   UINT8;
typedef unsigned char*  PUCHAR;
typedef unsigned short  WORD;
typedef unsigned short  USHORT;
typedef unsigned short* PUSHORT;
typedef unsigned long   DWORD;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -