• Liviu Dudau's avatar
    drm/mali-dp: Add writeback support for DP500. · 1cb3cbe7
    Liviu Dudau authored
    Mali DP500 behaves differently from the rest of the Mali DP IP,
    in that it does not have a one-shot mode and keeps writing the
    content of the current frame to the provided memory area until
    stopped. As a way of emulating the one-shot behaviour, we are
    going to use the CVAL interrupt that is being raised at the
    start of each frame, during prefetch phase, to act as End-of-Write
    signal, but with a twist: we are going to disable the memory
    write engine right after we're notified that it has been enabled,
    using the knowledge that the bit controlling the enabling will
    only be acted upon on the next vblank/prefetch.
    
    CVAL interrupt will fire durint the next prefetch phase every time
    the global CVAL bit gets set, so we need a state byte to track
    the memory write enabling. We also need to pay attention during the
    disabling of the memory write engine as that requires the CVAL bit
    to be set in the control register, but we don't want to do that
    during an atomic commit, as it will write into the hardware a partial
    state.
    Reviewed-by: default avatarBrian Starkey <brian.starkey@arm.com>
    Signed-off-by: default avatarLiviu Dudau <liviu.dudau@arm.com>
    1cb3cbe7
malidp_drv.c 20.9 KB