197 lines
3.8 KiB
C
197 lines
3.8 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
usb2lib.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
interface to the usb2 library
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
Kernel & user mode
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
10-31-00 : created
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef __USB2LIB_H__
|
||
|
#define __USB2LIB_H__
|
||
|
|
||
|
#define PUSB2LIB_HC_CONTEXT PVOID
|
||
|
#define PUSB2LIB_ENDPOINT_CONTEXT PVOID
|
||
|
#define PUSB2LIB_TT_CONTEXT PVOID
|
||
|
|
||
|
#define Budget_Iso 0
|
||
|
#define Budget_Interrupt 1
|
||
|
|
||
|
#define Budget_In 0
|
||
|
#define Budget_Out 1
|
||
|
|
||
|
#define Budget_LowSpeed 0
|
||
|
#define Budget_FullSpeed 1
|
||
|
#define Budget_HighSpeed 2
|
||
|
|
||
|
#define SIG_LIB_HC 'chbl' //lbhc
|
||
|
#define SIG_LIB_TT 'ttbl' //lbtt
|
||
|
#define SIG_LIB_EP 'pebl' //lbep
|
||
|
|
||
|
typedef struct _REBALANCE_LIST {
|
||
|
|
||
|
PVOID RebalanceContext[0];
|
||
|
|
||
|
} REBALANCE_LIST, *PREBALANCE_LIST;
|
||
|
|
||
|
|
||
|
typedef struct _USB2LIB_BUDGET_PARAMETERS {
|
||
|
|
||
|
/* input */
|
||
|
|
||
|
UCHAR TransferType; // Budget_Iso
|
||
|
UCHAR Speed; // Budget_Interrupt
|
||
|
UCHAR Direction; // Budget_FullSpeed, Budget_HighSpeed, Budget_LowSpeed
|
||
|
UCHAR Pad1; // Round out to dword
|
||
|
|
||
|
ULONG MaxPacket; // MaxPacketSize
|
||
|
|
||
|
/* input, output */
|
||
|
|
||
|
// period is specified in frames for FS, LS
|
||
|
// or microframes for HS, period is set to
|
||
|
// the actual period assigned (may be less
|
||
|
// than requested)
|
||
|
ULONG Period;
|
||
|
|
||
|
} USB2LIB_BUDGET_PARAMETERS, *PUSB2LIB_BUDGET_PARAMETERS;
|
||
|
|
||
|
|
||
|
#define USBP2LIBFN __stdcall
|
||
|
|
||
|
/*
|
||
|
client entry points
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
VOID
|
||
|
USB2LIB_DbgPrint(
|
||
|
PCH Format,
|
||
|
PVOID Arg0,
|
||
|
PVOID Arg1,
|
||
|
PVOID Arg2,
|
||
|
PVOID Arg3,
|
||
|
PVOID Arg4,
|
||
|
PVOID Arg5
|
||
|
);
|
||
|
|
||
|
*/
|
||
|
|
||
|
typedef VOID
|
||
|
(USBP2LIBFN *PUSB2LIB_DBGPRINT) (
|
||
|
PCHAR,
|
||
|
int,
|
||
|
int,
|
||
|
int,
|
||
|
int,
|
||
|
int,
|
||
|
int
|
||
|
);
|
||
|
|
||
|
/*
|
||
|
VOID
|
||
|
USB2LIB_DbgBreak(
|
||
|
);
|
||
|
|
||
|
*/
|
||
|
|
||
|
typedef VOID
|
||
|
(USBP2LIBFN *PUSB2LIB_DBGBREAK) (
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
/* LIB interface functions */
|
||
|
|
||
|
VOID
|
||
|
USB2LIB_InitializeLib(
|
||
|
PULONG HcContextSize,
|
||
|
PULONG EndpointContextSize,
|
||
|
PULONG TtContextSize,
|
||
|
PUSB2LIB_DBGPRINT Usb2LibDbgPrint,
|
||
|
PUSB2LIB_DBGBREAK Usb2LibDbgBreak
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
USB2LIB_InitController(
|
||
|
PUSB2LIB_HC_CONTEXT HcContext
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
USB2LIB_InitTt(
|
||
|
PUSB2LIB_HC_CONTEXT HcContext,
|
||
|
PUSB2LIB_TT_CONTEXT TtContext
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
USB2LIB_AllocUsb2BusTime(
|
||
|
PUSB2LIB_HC_CONTEXT HcContext, // Host Controller Context
|
||
|
PUSB2LIB_TT_CONTEXT TtContext, // Transaction Translater Context
|
||
|
PUSB2LIB_ENDPOINT_CONTEXT EndpointContext, // Endpoint Context
|
||
|
PUSB2LIB_BUDGET_PARAMETERS BudgetParameters, // Budget Parameters
|
||
|
PVOID RebalanceContext, // Driver Endpoint Context
|
||
|
PVOID RebalanceList, // List of endpoints to be rebalanced
|
||
|
PULONG RebalanceListEntries // Number of endpoints to be rebalanced
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
USB2LIB_FreeUsb2BusTime(
|
||
|
PUSB2LIB_HC_CONTEXT HcContext,
|
||
|
PUSB2LIB_TT_CONTEXT TtContext,
|
||
|
PUSB2LIB_ENDPOINT_CONTEXT EndpointContext,
|
||
|
PVOID RebalanceList,
|
||
|
PULONG RebalanceListEntries
|
||
|
);
|
||
|
|
||
|
UCHAR
|
||
|
USB2LIB_GetSMASK(PUSB2LIB_ENDPOINT_CONTEXT Context);
|
||
|
|
||
|
UCHAR
|
||
|
USB2LIB_GetCMASK(PUSB2LIB_ENDPOINT_CONTEXT Context);
|
||
|
|
||
|
UCHAR
|
||
|
USB2LIB_GetStartMicroFrame(PUSB2LIB_ENDPOINT_CONTEXT Context);
|
||
|
|
||
|
UCHAR
|
||
|
USB2LIB_GetStartFrame(PUSB2LIB_ENDPOINT_CONTEXT Context);
|
||
|
|
||
|
UCHAR
|
||
|
USB2LIB_GetPromotedThisTime(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
|
||
|
|
||
|
UCHAR
|
||
|
USB2LIB_GetNewPeriod(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
|
||
|
|
||
|
ULONG
|
||
|
USB2LIB_GetScheduleOffset(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
|
||
|
|
||
|
ULONG
|
||
|
USB2LIB_GetAllocedBusTime(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
|
||
|
|
||
|
PVOID
|
||
|
USB2LIB_GetNextEndpoint(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
|
||
|
|
||
|
// Debug only
|
||
|
PVOID
|
||
|
USB2LIB_GetEndpoint(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
|
||
|
|
||
|
#undef PUSB2LIB_HC_CONTEXT
|
||
|
#undef PUSB2LIB_ENDPOINT_CONTEXT
|
||
|
#undef PUSB2LIB_TT_CONTEXT
|
||
|
|
||
|
#endif /* __USB2LIB_H__ */
|
||
|
|
||
|
|