• Archit Taneja's avatar
    [media] v4l: ti-vpe: Add VPE mem to mem driver · 45719127
    Archit Taneja authored
    VPE is a block which consists of a single memory to memory path which
    can perform chrominance up/down sampling, de-interlacing, scaling, and
    color space conversion of raster or tiled YUV420 coplanar, YUV422
    coplanar or YUV422 interleaved video formats.
    
    We create a mem2mem driver based primarily on the mem2mem-testdev
    example. The de-interlacer, scaler and color space converter are all
    bypassed for now to keep the driver simple. Chroma up/down sampler
    blocks are implemented, so conversion beteen different YUV formats is
    possible.
    
    Each mem2mem context allocates a buffer for VPE MMR values which it will
    use when it gets access to the VPE HW via the mem2mem queue, it also
    allocates a VPDMA descriptor list to which configuration and data
    descriptors are added.
    
    Based on the information received via v4l2 ioctls for the source and
    destination queues, the driver configures the values for the MMRs, and
    stores them in the buffer. There are also some VPDMA parameters like
    frame start and line mode which needs to be configured, these are
    configured by direct register writes via the VPDMA helper functions.
    
    The driver's device_run() mem2mem op will add each descriptor based on
    how the source and destination queues are set up for the given ctx, once
    the list is prepared, it's submitted to VPDMA, these descriptors when
    parsed by VPDMA will upload MMR registers, start DMA of video buffers on
    the various input and output clients/ports.
    
    When the list is parsed completely(and the DMAs on all the output ports
    done), an interrupt is generated which we use to notify that the source
    and destination buffers are done. The rest of the driver is quite
    similar to other mem2mem drivers, we use the multiplane v4l2 ioctls as
    the HW support coplanar formats.
    Signed-off-by: default avatarArchit Taneja <archit@ti.com>
    Acked-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: default avatarKamil Debski <k.debski@samsung.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
    45719127
Kconfig 7.69 KB