X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FUSB%2FCore%2Fusb.h;h=9bc45c8e08df1149e3489dc1f3c60f4a9600387d;hb=02907f27e675b13565f61708d981c9e3511c2764;hp=6ee841c489ff3089758d9aceed9e1022f3c1d686;hpb=0f137ffed95af2eee3b9ecd2e277e5134e15ac69;p=tpg%2Facess2.git diff --git a/Modules/USB/Core/usb.h b/Modules/USB/Core/usb.h index 6ee841c4..9bc45c8e 100644 --- a/Modules/USB/Core/usb.h +++ b/Modules/USB/Core/usb.h @@ -7,87 +7,37 @@ // === TYPES === typedef struct sUSBHost tUSBHost; +typedef struct sUSBHub tUSBHub; typedef struct sUSBDevice tUSBDevice; -// === CONSTANTS === -enum eUSB_TransferType +// === STRUCTURES === +/** + * \brief Defines a USB Host Controller type + */ +struct sUSBHost { - TRANSTYPE_ISYNCH, // Constant, Low latency, low bandwidth, no transmission retries - TRANSTYPE_INTERRUPT, // -- NEVER SENT -- Spontanious, Low latency, low bandwith - TRANSTYPE_CONTROL, // Device control - TRANSTYPE_BULK // High latency, high bandwidth -}; + tUSBHost *Next; -enum eUSB_PIDs -{ - /** - * \name Token - * \{ - */ - PID_OUT = 0xE1, - PID_IN = 0x69, - PID_SOF = 0xA5, - PID_SETUP = 0x2D, - /** - * \} - */ - - /** - * \name Data - * \{ - */ - PID_DATA0 = 0xC3, - PID_DATA1 = 0x4B, - PID_DATA2 = 0x87, // USB2 only - PID_MDATA = 0x0F, // USB2 only - /** - * \} - */ - - /** - * \name Handshake - * \{ - */ - PID_ACK = 0xD2, - PID_NAK = 0x5A, - PID_STALL = 0x1E, - PID_NYET = 0x96, - /** - * \} - */ - - /** - * \name Special - * \{ - */ - PID_PRE = 0x3C, PID_ERR = 0x3C, - PID_SPLIT = 0x78, - PID_PING = 0xB4, - PID_RESVD = 0xF0, - /** - * \} - */ -}; + void (*CheckPorts)(void *Ptr); -// === FUNCTIONS === -/** - * \note 00101 - X^5+X^2+1 - */ -extern Uint8 USB_TokenCRC(void *Data, int len); -/** - * \note X^16 + X15 + X^2 + 1 - */ -extern Uint16 USB_DataCRC(void *Data, int len); + void *(*SendIN)(void *Ptr, int Fcn, int Endpt, int DataTgl, int bIOC, void *Data, size_t Length); + void *(*SendOUT)(void *Ptr, int Fcn, int Endpt, int DataTgl, int bIOC, void *Data, size_t Length); + void *(*SendSETUP)(void *Ptr, int Fcn, int Endpt, int DataTgl, int bIOC, void *Data, size_t Length); +}; -// === STRUCTURES === /** - * \brief Defines a USB Host Controller + * \brief USB Hub data */ -struct sUSBHost +struct sUSBHub { - Uint16 IOBase; - - int (*SendPacket)(int ID, int Length, void *Data); + /** + * \brief Host controller used + */ + tUSBHost *HostDef; + void *Controller; + + int nPorts; + tUSBDevice *Devices[]; }; /** @@ -95,10 +45,20 @@ struct sUSBHost */ struct sUSBDevice { - tUSBHost *Host; - int MaxControl; - int MaxBulk; - int MaxISync; + tUSBDevice *Next; + tUSBDevice *Hub; + + int Address; + + int Type; + + union { + tUSBHub Hub; + char Impl[0]; + } Data; }; +extern void USB_RegisterHost(tUSBHost *HostDef, void *ControllerPtr); +extern void USB_NewDevice(tUSBHub *Hub); + #endif