staging: add omapdrm DRM/KMS driver for TI OMAP platforms
authorRob Clark <rob@ti.com>
Sat, 12 Nov 2011 18:09:40 +0000 (12:09 -0600)
committerGrazvydas Ignotas <notasas@gmail.com>
Tue, 26 Feb 2013 17:51:28 +0000 (19:51 +0200)
commit5bdc30744ae0dab285a688c2b2a5af3231f287e1
treeb89d26eafa53ba0ec4479bb57b9b8daafc4b8881
parentef0b8aa03f2c93de18821d5e05e67fdef68f826c
staging: add omapdrm DRM/KMS driver for TI OMAP platforms

A DRM display driver for TI OMAP platform.  Similar to omapfb (fbdev)
and omap_vout (v4l2 display) drivers in the past, this driver uses the
DSS2 driver to access the display hardware, including support for
HDMI, DVI, and various types of LCD panels.  And it implements GEM
support for buffer allocation (for KMS as well as offscreen buffers
used by the xf86-video-omap userspace xorg driver).

The driver maps CRTCs to overlays, encoders to overlay-managers, and
connectors to dssdev's.  Note that this arrangement might change slightly
when support for drm_plane overlays is added.

For GEM support, non-scanout buffers are using the shmem backed pages
provided by GEM core (In drm_gem_object_init()).  In the case of scanout
buffers, which need to be physically contiguous, those are allocated
with CMA and use drm_gem_private_object_init().

See userspace xorg driver:
git://github.com/robclark/xf86-video-omap.git

Refer to this link for CMA (Continuous Memory Allocator):
http://lkml.org/lkml/2011/8/19/302

Links to previous versions of the patch:
v1: http://lwn.net/Articles/458137/
v2: http://patches.linaro.org/4156/
v3: http://patches.linaro.org/4688/
v4: http://patches.linaro.org/4791/

History:

v5: move headers from include/drm at Greg KH's request, minor rebasing
    on 3.2-rc1, pull in private copies of drm_gem_{get,put}_pages()
    because "drm/gem: add functions to get/put pages" patch is not
    merged yet
v4: bit of rework of encoder/connector _dpms() code, modeset_init()
    rework to not use nested functions, update TODO.txt
v3: minor cleanups, improved error handling for dev_load(), some minor
    API changes that will be needed later for tiled buffer support
v2: replace omap_vram with CMA for scanout buffer allocation, remove
    unneeded functions, use dma_addr_t for physical addresses, error
    handling cleanup, refactor attach/detach pages into common drm
    functions, split non-userspace-facing API into omap_priv.h, remove
    plugin API

v1: original

Signed-off-by: Rob Clark <rob@ti.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Conflicts:

drivers/staging/Kconfig
drivers/staging/Makefile
17 files changed:
drivers/staging/Kconfig
drivers/staging/Makefile
drivers/staging/omapdrm/Kconfig [new file with mode: 0644]
drivers/staging/omapdrm/Makefile [new file with mode: 0644]
drivers/staging/omapdrm/TODO [new file with mode: 0644]
drivers/staging/omapdrm/omap_connector.c [new file with mode: 0644]
drivers/staging/omapdrm/omap_crtc.c [new file with mode: 0644]
drivers/staging/omapdrm/omap_drm.h [new file with mode: 0644]
drivers/staging/omapdrm/omap_drv.c [new file with mode: 0644]
drivers/staging/omapdrm/omap_drv.h [new file with mode: 0644]
drivers/staging/omapdrm/omap_encoder.c [new file with mode: 0644]
drivers/staging/omapdrm/omap_fb.c [new file with mode: 0644]
drivers/staging/omapdrm/omap_fbdev.c [new file with mode: 0644]
drivers/staging/omapdrm/omap_gem.c [new file with mode: 0644]
drivers/staging/omapdrm/omap_gem_helpers.c [new file with mode: 0644]
drivers/staging/omapdrm/omap_priv.h [new file with mode: 0644]
drivers/video/omap2/omapfb/Kconfig