• Thinh Nguyen's avatar
    usb: dwc3: gadget: Properly set maxpacket limit · d94ea531
    Thinh Nguyen authored
    Currently the calculation of max packet size limit for IN endpoints is
    too restrictive. This prevents a matching of a capable hardware endpoint
    during configuration. Below is the minimum recommended HW configuration
    to support a particular endpoint setup from the databook:
    
    For OUT endpoints, the databook recommended the minimum RxFIFO size to
    be at least 3x MaxPacketSize + 3x setup packets size (8 bytes each) +
    clock crossing margin (16 bytes).
    
    For IN endpoints, the databook recommended the minimum TxFIFO size to be
    at least 3x MaxPacketSize for endpoints that support burst. If the
    endpoint doesn't support burst or when the device is operating in USB
    2.0 mode, a minimum TxFIFO size of 2x MaxPacketSize is recommended.
    
    Base on these recommendations, we can calculate the MaxPacketSize limit
    of each endpoint. This patch revises the IN endpoint MaxPacketSize limit
    and also sets the MaxPacketSize limit for OUT endpoints.
    
    Reference: Databook 3.30a section 3.2.2 and 3.2.3
    Signed-off-by: default avatarThinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
    d94ea531
core.h 48.1 KB