• Neil Armstrong's avatar
    drm/meson: Add AFBCD module driver · d1b5e41e
    Neil Armstrong authored
    This adds the driver for the ARM Framebuffer Compression decoders found
    in the Amlogic GXM and G12A SoCs.
    
    The Amlogic GXM and G12A AFBC decoder are totally different, the GXM only
    handling only the AFBC v1.0 modes and the G12A decoder handling the
    AFBC v1.2 modes.
    
    The G12A AFBC decoder is an external IP integrated in the video pipeline,
    and the GXM AFBC decoder seems to the an Amlogic custom decoder more
    tighly integrated in the video pipeline.
    
    The GXM AFBC decoder can handle only one AFBC plane for 2 available
    OSD planes available in HW, and the G12A AFBC decoder can handle up
    to 4 AFBC planes for up to 3 OSD planes available in HW.
    
    The Amlogic GXM supports 16x16 SPARSE and 16x16 SPLIT AFBC buffers up
    to 4k.
    
    On the other side, for G12A SPLIT is mandatory in 16x16 block mode, but
    for 4k modes 32x8+SPLIT AFBC buffers is manadatory for performances reasons.
    
    The RDMA is used here to reset and program the AFBC decoder unit
    on each vsync without involving the interrupt handler that can
    be masked for a long period of time, producing display glitches.
    
    For this we use the meson_rdma_writel_sync() which adds the register
    write tuple (VPU register offset and register value) to the RDMA buffer
    and write the value to the HW.
    
    When enabled, the RDMA is enabled to rewrite the same sequence at the
    next VSYNC event, until a new buffer is committed to the OSD plane.
    
    Then the Amlogic G12A is switched to RDMA, the Amlogic GXM Decoder
    doesn't need a reset/reprogram at each vsync, but needs to keep the
    vsync interrupt enabled to trigger the RDMA module.
    Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
    Reviewed-by: default avatarKevin Hilman <khilman@baylibre.com>
    [narmstrong: fixed typo in commit log]
    Link: https://patchwork.freedesktop.org/patch/msgid/20191021091509.3864-6-narmstrong@baylibre.com
    d1b5e41e
meson_drv.h 3.45 KB