dev: Implement a simple display timing generator
authorAndreas Sandberg <andreas.sandberg@arm.com>
Fri, 7 Aug 2015 08:59:26 +0000 (09:59 +0100)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Fri, 7 Aug 2015 08:59:26 +0000 (09:59 +0100)
commitce8939a97e26eb96cfe0604e737c0b155ba07656
treef33826ffc01240ace3d5756f87014ce9b7899165
parent598edaae0509c455e06e1689fd3c50caaeef0f30
dev: Implement a simple display timing generator

Timing generator for a pixel-based display. The timing generator is
intended for display processors driving a standard rasterized
display. The simplest possible display processor needs to derive from
this class and override the nextPixel() method to feed the display
with pixel data.

Pixels are ordered relative to the top left corner of the
display. Scan lines appear in the following order:

  * Vertical Sync (starting at line 0)
  * Vertical back porch
  * Visible lines
  * Vertical front porch

Pixel order within a scan line:

  * Horizontal Sync
  * Horizontal Back Porch
  * Visible pixels
  * Horizontal Front Porch

All events in the timing generator are automatically suspended on a
drain() request and restarted on drainResume(). This is conceptually
equivalent to clock gating when the pixel clock while the system is
draining. By gating the pixel clock, we prevent display controllers
from disturbing a memory system that is about to drain.
src/dev/SConscript
src/dev/pixelpump.cc [new file with mode: 0644]
src/dev/pixelpump.hh [new file with mode: 0644]