• Roshan Pius's avatar
    usb: dwc2: Fix a bug in reading the endpoint directions from reg. · 251a17f5
    Roshan Pius authored
    According to  the DWC2 datasheet, the HWCFG1 register stores
    the configured endpoint directions for endpoints 0-15 in bit positions
    0-31.
    ==========================
    Endpoint Direction (EpDir)
    This 32-bit field uses two bits per endpoint to determine the endpoint
    direction.
    Endpoint
    Bits [31:30]: Endpoint 15 direction
    Bits [29:28]: Endpoint 14 direction
    ....
    Bits [3:2]: Endpoint 1 direction
    Bits[1:0]: Endpoint 0 direction (always BIDIR)
    ==========================
    
    The DWC2 driver is currently interpreting the contents of the register
    as directions for endpoints 1-15 which leads to an error in determining
    the configured endpoint directions in the core because the first 2 bits
    determine the direction of endpoint 0 and not 1.
    
    This is based on testing/next branch in Felipe's git.
    Signed-off-by: default avatarRoshan Pius <rpius@chromium.org>
    Acked-by: default avatarJohn Youn <johnyoun@synopsys.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    251a17f5
gadget.c 102 KB