Remy Bohmer wrote: > Hi, > > 2009/7/29 Lv Terry-R65388 <rui...@freescale.com>: > >> 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)) . >> > > In current mainline this le16_to_cpu() macro has been removed. > Does that change anything? > > >> Do I miss any config here? >> > > I guess not. > > >> 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? >> > > Nice catch! > Prafulla/Michael, what do you think? > That we need a patch here urgent :).
Terry, Can you provide the proper fix? Michael > Kind Regards, > > Remy > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot