///////////////////////////////////////////////////////////////////////////
//
//						File : mpst.h
//
//		 Prototype for mpst.c
//		 i/f between Miniport Layer and core driver
//
//
///////////////////////////////////////////////////////////////////////////
#ifndef __MPST_H__
#define __MPST_H__
#include "mpinit.h" 
typedef struct tagBusInfo
{
   ULONG 			NumberOfAccessRanges;         
   INTERFACE_TYPE AdapterInterfaceType; 
   USHORT 			VendorIdLength;              //   size in bytes of VendorId
	 PVOID  			VendorId;                    //   points to ASCII byte string identifying
   USHORT 			DeviceIdLength;              //   size in bytes of DeviceId
   PVOID  			DeviceId;                    //   points to ASCII byte string identifying
	 BOOLEAN 			NoDynamicRelocation;        // On dynamically configurable I/O busses, when set
} BUSINFO, *PBUSINFO;

typedef struct tagBoardInfo
{
	PUSHORT	ioBasePCI9060; // Eval3520 PCI Specific address
	PUSHORT	ioBaseLocal;  // Base address
	UCHAR   Irq;
} BOARDINFO, *PBOARDINFO;

BOOLEAN mpstDriverEntry (OUT PBUSINFO pBusInfo);
BOOLEAN mpstHwFindAdaptor (OUT PBOARDINFO pBoardInfo);
BOOLEAN mpstHwInitialize(PHW_DEVICE_EXTENSION pHwDevExt);
BOOLEAN mpstHwUnInitialize(VOID);
BOOLEAN mpstHwInterrupt(VOID);
VOID mpstEnableVideo (BOOLEAN bFlag);
ULONG mpstVideoPacket(PHW_STREAM_REQUEST_BLOCK pMrb);
VOID mpstVideoPause(VOID);
VOID mpstVideoPlay(VOID);
VOID mpstVideoStop(VOID);
ULONG mpstVideoDecoderBufferSize(VOID);
ULONG mpstVideoDecoderBufferFullness(VOID);
VOID mpstVideoReset(VOID);
VOID mpstEnableAudio (BOOLEAN bFlag);
ULONG mpstSendAudio(UCHAR *pData, ULONG uLen);
VOID mpstAudioPause(VOID);
VOID mpstAudioPlay(VOID);
VOID mpstAudioStop(VOID);
ULONG mpstAudioDecoderBufferSize(VOID);
ULONG mpstAudioDecoderBufferFullness(VOID);
VOID mpstAudioReset(VOID);
VOID portWritePortBuffer16(IN PUSHORT Port, IN PUSHORT Data, ULONG Size);
void mpstGetVidLvl(PHW_STREAM_REQUEST_BLOCK pSrb);
#endif // __MPST_H__