Hi All, I'm trying to enable ehci usb in our board and I found that there maybe two issues in funcion ehci_submit_root() in ehci-hcd.c. 1) In ehci_submit_root(), the function will do the following operation. >From line 553 in ehci-hcd.c: typeReq = req->request << 8 | req->requesttype; switch (le16_to_cpu(typeReq)) { case DeviceRequest | USB_REQ_GET_DESCRIPTOR: ... ... case USB_REQ_GET_DESCRIPTOR | ((USB_DIR_IN | USB_RT_HUB) << 8): ... ... } As in function usb_get_descriptor() in usb.c, res = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, (type << 8) + index, 0, buf, size, USB_CNTL_TIMEOUT); req->request will be assigned USB_REQ_GET_DESCRIPTOR, req->requesttype will be assigned USB_DIR_IN. The value of typeReq will be 0x680 which can't match any value in switch (le16_to_cpu(typeReq)) . Do I miss any config here? 2) In funcion usb_get_descriptor() in usb.c, it will pass index 0 to usb_control_msg. setup_packet.index will be assigned 0. res = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, (type << 8) + index, 0, buf, size, USB_CNTL_TIMEOUT); /* The sixty parameter is index */ Then in funcion ehci_submit_root() in ehci-hcd.c, status_reg = (uint32_t *)&hcor->or_portsc[le16_to_cpu(req->index) - 1]; (le16_to_cpu(req->index) - 1) will be -1 here. Is it correct? Pls correct me. Thanks a lot in advance. Yours Terry
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot