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

Reply via email to