• Wesley Cheng's avatar
    usb: dwc3: gadget: Fix IN endpoint max packet size allocation · 9c1e9169
    Wesley Cheng authored
    The current logic to assign the max packet limit for IN endpoints attempts
    to take the default HW value and apply the optimal endpoint settings based
    on it.  However, if the default value reports a TxFIFO size large enough
    for only one max packet, it will divide the value and assign a smaller ep
    max packet limit.
    
    For example, if the default TxFIFO size fits 1024B, current logic will
    assign 1024/3 = 341B to ep max packet size.  If function drivers attempt to
    request for an endpoint with a wMaxPacketSize of 1024B (SS BULK max packet
    size) then it will fail, as the gadget is unable to find an endpoint which
    can fit the requested size.
    
    Functionally, if the TxFIFO has enough space to fit one max packet, it will
    be sufficient, at least when initializing the endpoints.
    
    Fixes: d94ea531 ("usb: dwc3: gadget: Properly set maxpacket limit")
    Cc: stable <stable@kernel.org>
    Signed-off-by: default avatarWesley Cheng <quic_wcheng@quicinc.com>
    Link: https://lore.kernel.org/r/20220523213948.22142-1-quic_wcheng@quicinc.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    9c1e9169
gadget.c 119 KB