X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FUSB%2FCore%2Finclude%2Fusb_host.h;h=7806e1bcf1f091b2bf4a42deb006cdccb1d96775;hb=d6fe233b0485dfefdd51729025f42cf479e57c16;hp=ab372797d2fac47539b22da96d8b8610ba6a91d4;hpb=3bcfc9ded1d44d1fbec95f73b5894e26f498b73d;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 ab372797..7806e1bc 100644 --- a/KernelLand/Modules/USB/Core/include/usb_host.h +++ b/KernelLand/Modules/USB/Core/include/usb_host.h @@ -15,26 +15,46 @@ typedef struct sUSBHostDef tUSBHostDef; typedef void (*tUSBHostCb)(void *DataPtr, void *Data, size_t Length); -typedef void *(*tUSBHostOp)(void *Ptr, int Dest, int DataTgl, tUSBHostCb CB, void *CbData, void *Data, size_t Length); -typedef void *(*tUSBIntOp)(void *Ptr, int Dest, int Period, tUSBHostCb CB, void *CbData, 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 { - tUSBIntOp InterruptIN; - tUSBIntOp InterruptOUT; - void (*StopInterrupt)(void *Ptr, void *Handle); - - void *(*ControlSETUP)(void *Ptr, int Dest, int DataTgl, void *Data, size_t Length); - tUSBHostOp ControlIN; - tUSBHostOp ControlOUT; + tUSBInitInt InitInterrupt; + tUSBInit InitIsoch; + tUSBInit InitControl; + tUSBInit InitBulk; + void (*RemEndpoint)(void *Ptr, void *Handle); - tUSBHostOp BulkIN; - tUSBHostOp BulkOUT; - + // 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);