X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FUSB%2FCore%2Finclude%2Fusb_host.h;h=7806e1bcf1f091b2bf4a42deb006cdccb1d96775;hb=13078002b01ee4f63eb2001d2ef479a2a006ea32;hp=c5f3e39dad2dff2f0a3e51434b122c66907302e6;hpb=48743e39650eb1ef988380e9d95f27fd40d3a9ce;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/USB/Core/include/usb_host.h b/KernelLand/Modules/USB/Core/include/usb_host.h index c5f3e39d..7806e1bc 100644 --- a/KernelLand/Modules/USB/Core/include/usb_host.h +++ b/KernelLand/Modules/USB/Core/include/usb_host.h @@ -13,22 +13,48 @@ typedef struct sUSBHostDef tUSBHostDef; -typedef void (*tUSBHostCb)(void *DataPtr, void *Data, int Length); - -typedef void *(*tUSBHostOp)(void *Ptr, int Fcn, int Endpt, int DataTgl, tUSBHostCb CB, void *CbData, void *Data, size_t Length); +typedef void (*tUSBHostCb)(void *DataPtr, void *Data, size_t Length); + +typedef void *(*tUSBInitInt)(void *Ptr, int Endpt, int bOutbound, int Period, tUSBHostCb Cb, void *CbData, void *Buf, size_t Len); +typedef void *(*tUSBInit)(void *Ptr, int Endpt, size_t MaxPacketSize); +typedef void *(*tUSBDataOp)(void *Dest, tUSBHostCb Cb, void *CbData, void *Data, size_t Length); + +typedef void *(*tUSBControlOp)(void *Ptr, void *Endpt, tUSBHostCb Cb, void *CbData, + int bOutbound, // (1) SETUP, OUT, IN vs (0) SETUP, IN, OUT + const void *SetupData, size_t SetupLength, + const void *OutData, size_t OutLength, + void *InData, size_t InLength + ); +typedef void *(*tUSBBulkOp)(void *Ptr, void *Endpt, tUSBHostCb Cb, void *CbData, + int bOutbound, void *Data, size_t Length + ); +typedef void *(*tUSBIsochOp)(void *Ptr, void *Endpt, tUSBHostCb Cb, void *CbData, + int bOutbound, void *Data, size_t Length, int When + ); /** * \brief Defines a USB Host Controller type */ struct sUSBHostDef { - tUSBHostOp SendIN; - tUSBHostOp SendOUT; - tUSBHostOp SendSETUP; - - int (*IsOpComplete)(void *Ptr, void *OpPtr); - + tUSBInitInt InitInterrupt; + tUSBInit InitIsoch; + tUSBInit InitControl; + tUSBInit InitBulk; + void (*RemEndpoint)(void *Ptr, void *Handle); + + // NOTE: If \a Cb is ERRPTR, the handle returned must be free'd by the calling code + // otherwise the controller will free it once done + tUSBIsochOp SendIsoch; + tUSBControlOp SendControl; + tUSBBulkOp SendBulk; + void (*FreeOp)(void *Ptr, void *Handle); + + // Root hub stuff void (*CheckPorts)(void *Ptr); + void (*SetPortFeature)(void *Ptr, int PortNum, int Feat); + void (*ClearPortFeature)(void *Ptr, int PortNum, int Feat); + int (*GetPortStatus)(void *Ptr, int PortNum, int Flag); }; extern tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts);