+
+ dev_if->Endpoints[k].Next = NULL;
+ dev_if->Endpoints[k].Interface = dev_if;
+ dev_if->Endpoints[k].EndpointIdx = k;
+ dev_if->Endpoints[k].EndpointNum = endpt->Address & 0x7F;
+ dev_if->Endpoints[k].PollingPeriod = endpt->PollingInterval;
+ dev_if->Endpoints[k].MaxPacketSize = LittleEndian16(endpt->MaxPacketSize);
+ dev_if->Endpoints[k].Type = endpt->Attributes | (endpt->Address & 0x80);
+ dev_if->Endpoints[k].PollingAtoms = 0;
+ dev_if->Endpoints[k].InputData = NULL;
+ }
+
+ // Initialise driver
+ dev_if->Driver = USB_int_FindDriverByClass(
+ ((int)iface->InterfaceClass << 16)
+ |((int)iface->InterfaceSubClass << 8)
+ |((int)iface->InterfaceProtocol << 0)
+ );
+ if(!dev_if->Driver) {
+ Log_Notice("USB", "No driver for Class %02x:%02x:%02x",
+ iface->InterfaceClass, iface->InterfaceSubClass, iface->InterfaceProtocol
+ );
+ }
+ else {
+ dev_if->Driver->Connected( dev_if );