drm/pl111 ARM PrimeCell PL110 and PL111 CLCD Driver

The PL110/PL111 is a simple LCD controller that can support TFT and STN displays. This driver exposes a standard KMS interface for them.

The driver currently doesn't expose the cursor. The DRM API for cursors requires support for 64x64 ARGB8888 cursor images, while the hardware can only support 64x64 monochrome with masking cursors. While one could imagine trying to hack something together to look at the ARGB8888 and program reasonable in monochrome, we just don't expose the cursor at all instead, and leave cursor support to the application software cursor layer.

TODO:

  • Fix race between setting plane base address and getting IRQ for vsync firing the pageflip completion.

  • Read back hardware state at boot to skip reprogramming the hardware when doing a no-op modeset.

  • Use the CLKSEL bit to support switching between the two external clock parents.