• Tomi Valkeinen's avatar
    drm/tilcdc: Get rid of complex ping-pong mechanism · 2b2080d7
    Tomi Valkeinen authored
    Get rid of complex ping-pong mechanism and replace it with simpler
    single buffer flipping code.
    
    The LCDC HW appears to be designed mainly static framebuffers in
    mind. There are two modes of operation, either static single buffer,
    or ping pong double buffering with two static buffers switching back
    and forth. Luckily the framebuffer start address is fetched only in
    the beginning of the frame and changing the address after that only
    takes effect after the next vertical blank. The page flipping code can
    simply write the address of the new framebuffer and the page is
    flipped automatically after the next vertical blank. Using the ping
    pong double buffering makes the flipping code way more complex and it
    does not provide any benefit, so it is better to switch to single
    buffer operation.
    
    There is still one problem in updating the framebuffer dma address on
    the fly. There are two registers defining the framebuffer dma area and
    things may break if the dma address is fetched in while the registers
    are are being updated.
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    [Added description to the patch]
    Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
    2b2080d7
tilcdc_drv.c 18.3 KB