• Daniel Glöckner's avatar
    USB: musb: Fix CPPI IRQs not being signaled · 8d6499e5
    Daniel Glöckner authored
    On tx channel abort a cppi interrupt is generated for a short time by
    setting the lowest bit of the TCPPICOMPPTR register. It is then reset
    immediately by clearing the bit. When the interrupt handler is run,
    it does not detect an interrupt in the TCPPIMSKSR or RCPPIMSKSR
    registers and thus exits early without writing the TCPPIEOIR register.
    It appears that this inhibits further cppi interrupts until the handler
    is called by chance, f.ex. from davinci_interrupt().
    
    By moving the unmasking of the interrupt below the writes to
    TCPPICOMPPTR, no interrupt is generated and no write to TCPPIEOIR is
    necessary.
    Signed-off-by: default avatarDaniel Glöckner <dg@emlix.com>
    Signed-off-by: default avatarAjay Kumar Gupta <ajay.gupta@ti.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    8d6499e5
cppi_dma.c 43.6 KB