• Apelete Seketeli's avatar
    usb: musb: fix setting JZ4740 gadget periphal mode on reset · 23db9fd2
    Apelete Seketeli authored
    JZ4740 USB Device Controller is not OTG compatible and does not have
    DEVCTL register in silicon.
    
    During ethernet-over-usb transactions, on reset, musb driver tries to
    read from DEVCTL and consequently sets device as host (A-Device)
    instead of peripheral (B-Device), which makes it a composite device to
    the USB gadget driver.
    This induces a kernel panic during power down where the USB gadget
    driver does a null pointer dereference when trying to access the
    composite device configuration.
    
    On reset, do not rely on DEVCTL value for setting gadget peripheral
    mode. Use is_otg flag instead to set it to B-Device.
    Signed-off-by: default avatarApelete Seketeli <apelete@seketeli.net>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    23db9fd2
musb_gadget.c 55.5 KB