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

📄 phc_hcs.h

📁 此為philip 1362 USB DOS下的驅動程式包, 已經共測試並內含有說明文件
💻 H
字号:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   2000-2002 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:	PHC_HcS.H
   // Author:		ZhenYu Zhang
   // Created:		Jun. 8, 2000
   // Modified:     May 24, 2002 by wang.zhong.wei@philips.com
   // Revision:		1.0
   //
   //*************************************************************************
   // Abstract:
   //
 //*************************************************************************
*/

#ifndef __PHC_HCS_H__
#define __PHC_HCS_H__

#include "USB100.h"

// 1161 RAM Partition
#define	HCCNFG_ITLBUFLEN	0x400	// 1KBytes for ITL0/1 Buffer
#define	HCCNFG_ATLBUFLEN	0x800   // 2KBytes for ATL Buffer

// 1161
#define TIMEOUT_50MS		50 MS  //USB1.1: 50 ms for status stage
#define TIMEOUT_500MS		500 MS  //USB1.1: 500 ms for each transaction

#define MAX_FRAMEINTERVAL	11999L
#define MAX_OVRHEAD			210L
#define MAX_RETRY			3 		//USB1.1: 3 times for error retry

#define MAX_PAYLOAD			512 	//must be less than 1024!!
#define MAX_DOWNPORTS		4

#define SIZE_DUMMYPTD		(8+4)
#define STATUS_XACTION		8

#ifdef COMPILER_16
typedef struct _PTD_32bitAlign  {
	/* WORD 0 */
	unsigned short	ActualBytes 	: 10;
	unsigned short	Toggle 			: 1;
	unsigned short 	Active 			: 1;
	unsigned short	CompletionCode 	: 4;

	/* WORD 1 */
	unsigned short  MaxPacketSize	: 10;
	unsigned short  Speed			: 1;
	unsigned short  Last			: 1;
	unsigned short  EndpointNumber  : 4;

	/* WORD 2 */
	unsigned short 	TotalBytes		: 10;
	unsigned short  DirectionPID	: 2;
	unsigned short	Reserved1		: 4;

	/* WORD 3 */
	unsigned short  FunctionAddress : 7;
	unsigned short  Format			: 1;
	unsigned short	Reserved2		: 8;


} PTD_32bitAlign;
#endif

#ifdef COMPILER_32
typedef struct _PTD_32bitAlign  {
	/* DWORD 0 */
	unsigned long	ActualBytes 	: 10;
	unsigned long	Toggle 			: 1;
	unsigned long 	Active 			: 1;
	unsigned long	CompletionCode 	: 4;
	unsigned long  	MaxPacketSize	: 10;
	unsigned long  	Speed			: 1;
	unsigned long  	Last			: 1;
	unsigned long  	EndpointNumber  : 4;

	/* DWORD 1 */
	unsigned long 	TotalBytes		: 10;
	unsigned long  	DirectionPID	: 2;
	unsigned long	Reserved0		: 4;
	unsigned long  	FunctionAddress : 7;
	unsigned long  	Format			: 1;
	unsigned long	Reserved1		: 8;

} PTD_32bitAlign;
#endif

typedef union{
	struct {
		UCHAR	bmDnPort1	: 1;
		UCHAR	bmDnPort2	: 1;
		UCHAR	bmDnPort3	: 1;
		UCHAR	bmDnPort4	: 1;
		UCHAR	bmDnPDev1LS	: 1;
		UCHAR	bmDnPDev2LS	: 1;
		UCHAR	bmDnPDev3LS	: 1;
		UCHAR	bmDnPDev4LS	: 1;
	} Bits;
	UCHAR FlexByte;
} BITMAP;

enum _PTD_RETCODE	{
	PTD_RETCODE_OK	= 0,
	PTD_RETCODE_CRC,
	PTD_RETCODE_BITSTUFF,
	PTD_RETCODE_DATATOGGLE,

	PTD_RETCODE_STALL,
	PTD_RETCODE_NORESP,
	PTD_RETCODE_PID,
	PTD_RETCODE_PIDUNKNOWN,

	PTD_RETCODE_DATAOVRUN,
	PTD_RETCODE_DATAUNDERUN,
	PTD_RETCODE_RESERV0,
	PTD_RETCODE_RESERV1,

	PTD_RETCODE_BUFOVRUN,
	PTD_RETCODE_BUFUNDERUN,
	PTD_RETCODE_RESERV2,
	PTD_RETCODE_NOTOUCH
};

enum _PTD_FORMAT	{
	PTD_FORMAT_NONISO = 0 ,
	PTD_FORMAT_ISO
};

enum _PTD_SPEED	{
	PTD_SPEED_FS = 0 ,
	PTD_SPEED_LS
};

enum _PTD_TOKEN	{
	PTD_TOKEN_SETUP = 0 ,
	PTD_TOKEN_OUT,
	PTD_TOKEN_IN
};

enum _PTD_TOGGLE {
	PTD_TOGGLE_DATA0 = 0 ,
	PTD_TOGGLE_DATA1
};

enum _PTD_ACTIVE{
	PTD_INACTIVE = 0 ,
	PTD_ACTIVE

};

enum _USBXFER_STAGE{
	CTRLXFER_SETUP_STAGE = 0,
	CTRLXFER_DATA_OUT_STAGE,
	CTRLXFER_DATA_IN_STAGE,
	CTRLXFER_STATUS_OUT_STAGE,
	CTRLXFER_STATUS_IN_STAGE,
	BULKXFER_DATA_OUT_STAGE,
	BULKXFER_DATA_IN_STAGE,
	ISOXFER_DATA_OUT_STAGE,
	ISOXFER_DATA_IN_STAGE,
	INTXFER_DATA_OUT_STAGE,
	INTXFER_DATA_IN_STAGE
};

typedef struct _SETUP_XACTION {
	PTD_32bitAlign	PTD;
	USB_REQUEST		UsbReq;
} SETUP_XACTION, * PSETUP_XACTION;

typedef struct _DATA_XFER {
	PTD_32bitAlign	PTD;
	UCHAR			Payload[MAX_PAYLOAD];

} DATA_XFER, * PDATA_XFER;

typedef struct _DNPORT_DEVINFO
{
	//	Default Endport Info
	UCHAR			byEndp0PktSize;
	UCHAR			byDevCnfgNum;
	UCHAR			byDevIFNum;
	UCHAR			bmAttributes;
	UCHAR			byMaxPower;

	USHORT			uVendorID;
	USHORT			uProductID;

	UCHAR			byLanguageIndex;
	UCHAR			byManufaturerIndex;
	UCHAR			byProductIndex;
	UCHAR			bySerialNumberIndex;
	UCHAR			byConfigurationIndex;
	UCHAR			byInterfaceIndex;



} DNPORT_DEVINFO, * PDNPORT_DEVINFO;

typedef struct _PHC_INFO {
	UCHAR			byDownPortsNum;
	UCHAR   		byNumOfDevAttached;
	BITMAP			bmDevAttached;

	DNPORT_DEVINFO  strucDnPortDev[MAX_DOWNPORTS];

} PHC_INFO, * PPHC_INFO;

/***********************************************************/
/******** Functions - Xfer for ATL/ITL Buffer **************/
/***********************************************************/
void HcS_DumpATL(PUSHORT ptr2Structure, USHORT XferLengthInByte);
void HcS_RetrieveATL(PUSHORT ptr2Structure, USHORT XferLengthInByte);
void HcS_DumpITL(PUSHORT ptr2Structure, USHORT XferLengthInByte);
void HcS_RetrieveITL(PUSHORT ptr2Structure, USHORT XferLengthInByte);
void HcS_Wait4ATLDone(void);
void HcS_Wait4ITLDone(void);
void HcS_Wait4NextSOF(void);

/***********************************************************/
/******** Functions - Build up ATL/ITL Buffer **************/
/***********************************************************/
void HcS_BuildUSBDataOut(
	PVOID pBuff,

	UCHAR DevAddr,
	UCHAR Endp,
	UCHAR Speed,
	UCHAR IsISO,
	UCHAR Last,
	UCHAR DataToggle,
	USHORT PktSize,
	USHORT XferLength,

	PUCHAR pPayload
	);

void HcS_BuildUSBDataIn(
	PVOID pBuff,

	UCHAR DevAddr,
	UCHAR Endp,
	UCHAR Speed,
	UCHAR IsISO,
	UCHAR Last,
	UCHAR DataToggle,
	USHORT PktSize,
	USHORT XferLength
);

void HcS_BuildUSBRequest(
	PVOID pBuff,

	UCHAR DevAddr,
	UCHAR Speed,
	UCHAR PktSize,

	UCHAR bmRequestType,
	UCHAR bRequest,
	USHORT wValue,
	USHORT wIndex,
	USHORT wLength
	);

void HcS_BuildUSBDataOutDefault(
	UCHAR DevAddr,
	UCHAR Endp,
	UCHAR Speed,
	UCHAR IsISO,
	UCHAR Last,
	UCHAR DataToggle,
	USHORT PktSize,
	USHORT XferLength,

	PUCHAR pPayload
	);

void HcS_BuildUSBDataInDefault(
	UCHAR DevAddr,
	UCHAR Endp,
	UCHAR Speed,
	UCHAR IsISO,
	UCHAR Last,
	UCHAR DataToggle,
	USHORT PktSize,
	USHORT XferLength
);

void HcS_BuildUSBRequestDefault(
	UCHAR DevAddr,
	UCHAR Speed,
	UCHAR PktSize,

	UCHAR bmRequestType,
	UCHAR bRequest,
	USHORT wValue,
	USHORT wIndex,
	USHORT wLength
	);
/********************************************************/
/******** Functions - PTD Error Handler ****/
/********************************************************/
void HcS_PTD_ErrorHandler(UCHAR Stage, UCHAR CompletionCode);

/********************************************************/
/******** Functions - ControlXfer for ATL/ITL Buffer ****/
/********************************************************/
BOOLEAN HcS_USBCtrlSetupStage(void);
BOOLEAN HcS_USBCtrlDataOutStage(void);
BOOLEAN HcS_USBCtrlDataInStage(void);
BOOLEAN HcS_USBCtrlStatusOutStage(void);
BOOLEAN HcS_USBCtrlStatusInStage(void);

void	HcS_AppendDummyPTD(PVOID pBuff);
BOOLEAN HcS_USBCtrlWrite(void);
BOOLEAN HcS_USBCtrlRead(void);
BOOLEAN HcS_USBCtrlOnly(void);

/********************************************************/
/******** Functions - BulkXfer for ATL/ITL Buffer ****/
/********************************************************/
BOOLEAN HcS_USBBulkXferDataOut(void);
BOOLEAN HcS_USBBulkXferDataIn(void);

/********************************************************/
/******** Functions - ISOXfer for ATL/ITL Buffer ****/
/********************************************************/
BOOLEAN HcS_USBIsoXferDataOut(void);
BOOLEAN HcS_USBIsoXferDataIn(void);

/********************************************************/
/******** Functions - InterruptXfer for ATL/ITL Buffer ****/
/********************************************************/
BOOLEAN HcS_USBIntXferDataOut(void);
BOOLEAN HcS_USBIntXferDataIn(void);


/********************************************************/
/******** Functions - Mis Funcs for HostController ******/
/********************************************************/
void HcS_InitPHCInfo(void);

UCHAR Hc_GetDevConnectAtDnPort(UCHAR DnPort);
void HcS_SetConnectBitmap(UCHAR DnPort, UCHAR bitVal);
void Hc_SetSpeedBitmap(UCHAR DnPort,UCHAR bitVal);
UCHAR Hc_GetDevSpeedAtDnPort(UCHAR DnPort);

void HcS_DisalbeNResetDnPort(UCHAR DnPort);
void HcS_EnableNResetDnPort(UCHAR DnPort);

void HcS_InitPHC(void);
UCHAR HcS_CheckDnDevs(USHORT DnPort);
//UCHAR HcS_CheckDnDevs(void);
BOOLEAN HcS_EnumPHCDevs(void);

void HcS_AcquireHC(void);
void HcS_ReleaseHC(void);
void HcS_GetOTGDescriptor(UCHAR DevAddr,UCHAR Speed,UCHAR Pktsize);
UCHAR HcS_GetDevSpeedAtDnPort(UCHAR DnPort);

#endif

⌨️ 快捷键说明

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