📄 phc_hcs.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 + -