drm/pl111 ARM PrimeCell PL111 CLCD Driver

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

This driver uses the same Device Tree binding as the fbdev CLCDdriver. While the fbdev driver supports panels that may beconnected to the CLCD internally to the CLCD driver, in DRM thepanels get split out to drivers/gpu/drm/panels/. This means that,in converting from using fbdev to using DRM, you also need to writea panel driver (which may be as simple as an entry inpanel-simple.c).

The driver currently doesn’t expose the cursor. The DRM API forcursors requires support for 64x64 ARGB8888 cursor images, whilethe hardware can only support 64x64 monochrome with maskingcursors. While one could imagine trying to hack something togetherto look at the ARGB8888 and program reasonable in monochrome, wejust don’t expose the cursor at all instead, and leave cursorsupport to the X11 software cursor layer.

TODO:

  • Fix race between setting plane base address and getting IRQ forvsync firing the pageflip completion.
  • Use the “max-memory-bandwidth” DT property to filter thesupported formats.
  • Read back hardware state at boot to skip reprogramming thehardware when doing a no-op modeset.
  • Use the CLKSEL bit to support switching between the two externalclock parents.