📄 target.h
字号:
/* ---------------------------------------------------------------------------
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 + -