• Nikhil Devshatwar's avatar
    [media] media: ti-vpe: vpdma: Add abort channel desc and cleanup APIs · dc12b124
    Nikhil Devshatwar authored
    Whenever VPDMA processes a data descriptor of a list, it processes it
    and sets up the channel for the DMA transaction. List manager holds the
    descriptor in the list until the DMA is complete. If sync_on_channel
    descriptor, or another descriptor for the same channel is present in
    the FIFO, list manager keeps them until the current channel is free.
    
    When the capture stream is closed suddenly while there are pending
    descriptors in the FIFO (streamON failed, application killed), it would
    keep the VPDMA in a busy state. Any further list post would fail with
    EBUSY.
    
    To avoid this, drivers need to stop the current processing list and
    cleanup all the resources VPDMA has taken and also clear the internal FSM
    of list manager. The state machine is cleared by issuing channel specific
    abort descriptor.
    
    Therefore, the vpdma_list_cleanup accepts an array of channels for which
    abort_channel descriptors should be posted. It is driver's responsibility
    to post for all the channels or the channels which were used in the last
    context.
    Signed-off-by: default avatarNikhil Devshatwar <nikhil.nd@ti.com>
    Signed-off-by: default avatarBenoit Parrot <bparrot@ti.com>
    Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    dc12b124
vpdma.c 28.8 KB