externs.h

来自「S3C24A0的完整BSP包,对开发此芯片的开发者很有用.」· C头文件 代码 · 共 252 行

H
252
字号
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*
 ************************************************************************
 *
 *  EXTERNS.h
 *
 *
 *      (C) Copyright 1996-2000 Microsoft Corp.
 *
 *
 *      (ep)
 *
 *************************************************************************
 */




#ifndef EXTERNS_H
#define EXTERNS_H

 
#ifdef UNDER_CE

//
// WindowsCE does not support contiguous memory allocations. Therefore all
// buffers which are required to be contiguous are allocated from the 
// memory map (drivers global section of memory) in smdk24a0\files\config.bib.
// This is physical memory. We will map this to a virtual address.
// 
    
extern PVOID g_pvDmaVirtualBase;

#define S24A0IRDA_DMA_BUFFER_BASE_PA     0x10060000
#define S24A0IRDA_DMA_BUFFER_BASE         0x80060000
#define S24A0IRDA_DMA_BUFFER_LEN          0x00020000

//
// DMA buffers are allocated in three places:
// 1) OpenDevice - Receive packet buffers.
//      NUM_RCV_BUFS * RCV_BUFFER_SIZE
// 2) DoOpen     -  PORTINFO buffers.
//      RCV_BUFFFER_SIZE + MAX_IRDA_DATA_SIZE * 8
//
// Offsets to the three buffer regions.
//
#define RCVPACKETS_OFFSET               0x0
#define PORTINFO_OFFSET                 0x9000
#define RCVDMA_OFFSET                   0x12000

#endif // UNDER_CE

/*
 *  Externs for required miniport export functions
 */
BOOLEAN MiniportCheckForHang(IN NDIS_HANDLE MiniportAdapterContext);
VOID MiniportDisableInterrupt(IN NDIS_HANDLE MiniportAdapterContext);
VOID MiniportEnableInterrupt(IN NDIS_HANDLE MiniportAdapterContext);
VOID MiniportHalt(IN NDIS_HANDLE MiniportAdapterContext);
VOID MiniportHandleInterrupt(IN NDIS_HANDLE MiniportAdapterContext);
NDIS_STATUS MiniportInitialize(OUT PNDIS_STATUS OpenErrorStatus,
                OUT PUINT SelectedMediumIndex,
                IN PNDIS_MEDIUM MediumArray,
                IN UINT MediumArraySize,
                IN NDIS_HANDLE MiniportAdapterHandle,
                IN NDIS_HANDLE WrapperConfigurationContext);
VOID MiniportISR(OUT PBOOLEAN InterruptRecognized,
                OUT PBOOLEAN QueueMiniportHandleInterrupt,
                IN NDIS_HANDLE MiniportAdapterContext);
NDIS_STATUS MiniportQueryInformation(IN NDIS_HANDLE MiniportAdapterContext,
                IN NDIS_OID Oid,
                IN PVOID InformationBuffer,
                IN ULONG InformationBufferLength,
                OUT PULONG BytesWritten,
                OUT PULONG BytesNeeded);
NDIS_STATUS MiniportReconfigure(OUT PNDIS_STATUS OpenErrorStatus,
                IN NDIS_HANDLE MiniportAdapterContext,
                IN NDIS_HANDLE WrapperConfigurationContext);
NDIS_STATUS MiniportReset(PBOOLEAN AddressingReset,
                NDIS_HANDLE MiniportAdapterContext);
NDIS_STATUS MiniportSend(IN NDIS_HANDLE MiniportAdapterContext,
                IN PNDIS_PACKET Packet,
                IN UINT Flags);
NDIS_STATUS MiniportSetInformation(IN NDIS_HANDLE MiniportAdapterContext,
                IN NDIS_OID Oid,
                IN PVOID InformationBuffer,
                IN ULONG InformationBufferLength,
                OUT PULONG BytesRead,
                OUT PULONG BytesNeeded);
NDIS_STATUS MiniportTransferData(OUT PNDIS_PACKET Packet,
                OUT PUINT BytesTransferred,
                IN NDIS_HANDLE MiniportAdapterContext,
                IN NDIS_HANDLE MiniportReceiveContext,
                IN UINT ByteOffset,
                IN UINT BytesToTransfer);

/*
 *  Other function externs
 */
VOID InitDevice(IrDevice *thisDev);
BOOLEAN OpenDevice(IrDevice *dev);
VOID CloseDevice(IrDevice *dev);
VOID FreeAll();
 PNDIS_IRDA_PACKET_INFO GetPacketInfo(PNDIS_PACKET packet);
PVOID MyMemAlloc(UINT size, BOOLEAN isDmaBuf);
VOID MyMemFree(PVOID memptr, UINT size, BOOLEAN isDmaBuf);
IrDevice *NewDevice();
VOID FreeDevice(IrDevice *dev);
USHORT ComputeFCS(UCHAR *data, UINT dataLen);
BOOLEAN NdisToIrPacket(IrDevice *thisDev, PNDIS_PACKET Packet,
                UCHAR *irPacketBuf, UINT irPacketBufLen,
                UINT *irPacketLen);

BOOLEAN FIR_MegaSend(IrDevice *thisDev);
BOOLEAN FIR_NewMegaSend(IrDevice *thisDev);
void TurnaroundDelay(IrDevice *thisDev);
void FIR_NewMegaSendComplete(IrDevice *thisDev);
void FIR_MegaSendComplete(IrDevice *thisDev);

BOOLEAN NdisToFirPacket(IrDevice *thisDev, PNDIS_PACKET Packet,
                UCHAR *irPacketBuf, UINT irPacketBufLen,
                UINT *irPacketLen);
void FIR_DeliverFrames(IrDevice *thisDev);

BOOLEAN FindLargestSpace(IN IrDevice *thisDev,
                         OUT PULONG pOffset,
                         OUT PULONG pLength);
void SetupRecv(IrDevice *thisDev);

VOID Comm_hw_Init(IrDevice *thisDev);

VOID Comm_hw_ReInit(IrDevice *thisDev);

VOID Comm_hw_Stop(IrDevice *thisDev);

void FirSetupIntRecv(IrDevice *thisDev);

VOID DelayedWrite(IN PVOID SystemSpecific1,
                  IN PVOID FunctionContext,
                  IN PVOID SystemSpecific2,
                  IN PVOID SystemSpecific3);

/*
 *  Externs for global data objects
 */
struct IrDevice;
extern struct IrDevice *firstIrDevice;
extern struct DebugCounters RegStats;


/*
 *  From COMM.C
 */
BOOLEAN DoOpen(struct IrDevice *thisDev);
VOID DoClose(IrDevice *thisDev);
BOOLEAN DoSend(IrDevice *thisDev, PNDIS_PACKET packetToSend);
BOOLEAN SetSpeed(IrDevice *thisDev);
BOOLEAN IsCommReadyForTransmit(IrDevice *thisDev);
NDIS_STATUS PortReadyForWrite(struct IrDevice *thisDev, BOOLEAN firstBufIsPending);
UINT Call_Get_System_Time();
VOID COM_ISR(struct IrDevice *thisDev, BOOLEAN *claimingInterrupt,
                BOOLEAN *requireDeferredCallback);
VOID QueueReceivePacket(struct IrDevice *thisDev, PUCHAR data, UINT dataLen, BOOLEAN IsFIR);

UINT DoRcvDirect(struct IrDevice *thisDev, UCHAR *data, UINT maxBytes);  
VOID CloseCOM(IrDevice *thisDev);
BOOLEAN OpenCOM(IrDevice *thisDev);
VOID SetCOMInterrupts(IrDevice *thisDev, BOOLEAN enable);

VOID DelayedWrite(IN PVOID SystemSpecific1,
                  IN PVOID FunctionContext,
                  IN PVOID SystemSpecific2,
                  IN PVOID SystemSpecific3);


 
/*
 *  From SETTINGS.C
 */
void LogEvent(char *msg, UINT val);
void DumpLog();

extern baudRateInfo supportedBaudRateTable[NUM_BAUDRATES];


VOID QueueReceivePacket(IrDevice *thisDev, PUCHAR data, UINT dataLen, BOOLEAN IsFIR);


 
PLIST_ENTRY
MyRemoveHeadList(
    IN PLIST_ENTRY ListHead
    );


BOOLEAN Irda_Int_Tx(IrDevice *thisDev);
BOOLEAN Irda_DMA_Tx(IrDevice *thisDev);
void Irda_Stop_Fir(void);
int Irda_Init_Fir(IrDevice *thisDev);


BOOLEAN FindLargestSpace(IN IrDevice *thisDev, 
                         OUT PULONG pOffset, 
                         OUT PULONG pLength);

void FIR_Send(IrDevice *thisDev);
void FIR_SendComplete(IrDevice *thisDev);
VOID Intr_DMA_Done(IrDevice *thisDev, BOOLEAN *claimingInterrupt, BOOLEAN *requireDeferredCallback);
void FIR_DeliverFrames(IrDevice *thisDev);

VOID Irda_GPIO_Conf(BOOL bSIR) ;

BOOLEAN NdisToFirPacket(IrDevice *thisDev, PNDIS_PACKET Packet, UCHAR *irPacketBuf, UINT irPacketBufLen, UINT *irPacketLen);
Init_Irda(void);

void Init_Irda_Rx(int RxLen,int Mode);
void Init_Irda_Tx(int TxLen);


VOID 
NdisMSetupIntTransfer(
    PNDIS_STATUS            pStatus,
    PNDIS_BUFFER            pBuffer,
    ULONG                   Offset,
    ULONG                   Length,
    BOOLEAN                 WriteToDevice
    );

void FIR_HandleRxFrame(IrDevice *thisDev);
BOOLEAN Irda_DMA_Tx(IrDevice *thisDev);
BOOLEAN IR24A0_Setup(IrDevice *thisDev);
void IR24A0_Shutdown(IrDevice *thisDev);
VOID S24A0_FIR_ISR(IrDevice *thisDev, BOOLEAN *claimingInterrupt,
                 BOOLEAN *requireDeferredCallback);

VOID DisplayRegs(void);




	
#endif EXTERNS_H

⌨️ 快捷键说明

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