windows-nt/Source/XPSP1/NT/drivers/wdm/usb/hcd/usb2lib/usb2lib.h
2020-09-26 16:20:57 +08:00

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__ */