Esto es "nuevo" no? Perdon si esta mal posteado, esta en el hilo de investigacion.
Bueno, he modificado las estructuras para que ahora cree correctamente el device hub, con las especificaciones de ps groove.
Modificar estas lineas del main.c
...
/* HI-Speed device descriptor */ //OK
struct DeviceDescriptor devdesc_hi =
{
.bLength = 0x12,
.bDescriptorType = 0x01,
.bcdUSB = 0x0200,
.bDeviceClass = 0x09,
.bDeviceSubClass = 0x00,
.bDeviceProtocol = 0x01,
.bMaxPacketSize = 0x08,
...
/* Hi-Speed endpoint descriptors */
struct EndpointDescriptor endpdesc_hi[3] =
{
{
.bLength = 0x07,
.bDescriptorType = 0x05,
.bEndpointAddress = 0x81,
.bmAttributes = 0x03,
.wMaxPacketSize = 0x01,
.bInterval = 0x0C
},
{
.bLength = 0x07,
.bDescriptorType = 0x05,
.bEndpointAddress = 0x81,
.bmAttributes = 0x03,
.wMaxPacketSize = 0x01,
.bInterval = 0x0C
},
{
.bLength = 0x07,
.bDescriptorType = 0x05,
.bEndpointAddress = 0x81,
.bmAttributes = 0x03,
.wMaxPacketSize = 0x01,
...
/* USB start function */
int start_func(int size, void *p)
{
int ret;
DEBUG_PRINTF("Start Function %p\n", p);
/* Fill in the descriptor tables */
memset(usbdata, 0, sizeof(usbdata));
memcpy(usbdata[0].devdesc, &devdesc_hi, sizeof(devdesc_hi));
usbdata[0].config.pconfdesc = &usbdata[0].confdesc;
usbdata[0].config.pinterfaces = &usbdata[0].interfaces;
usbdata[0].config.pinterdesc = &usbdata[0].interdesc;
usbdata[0].config.pendp = usbdata[0].endp;
memcpy(usbdata[0].confdesc.desc, &confdesc_hi, sizeof(confdesc_hi));
usbdata[0].confdesc.pinterfaces = &usbdata[0].interfaces;
usbdata[0].interfaces.pinterdesc[0] = &usbdata[0].interdesc;
usbdata[0].interfaces.intcount = 1;
memcpy(usbdata[0].interdesc.desc, &interdesc_hi, sizeof(interdesc_hi));
usbdata[0].interdesc.pendp = usbdata[0].endp;
memcpy(usbdata[0].endp[0].desc, &endpdesc_hi[0], sizeof(endpdesc_hi[0]));
memcpy(usbdata[0].endp[1].desc, &endpdesc_hi[1], sizeof(endpdesc_hi[1]));
memcpy(usbdata[0].endp[2].desc, &endpdesc_hi[2], sizeof(endpdesc_hi[2]));
g_driver.devp = usbdata[0].devdesc;
g_driver.confp = &usbdata[0].config;
...
Con esto ya se conecta con los parametros correctos el hub en modo Full/Low sleep