linux/include/drm
Joonyoung Shim d7f1642c90 drm/exynos: add G2D driver
Changelog v3:
- use __u64 instead of pointer in ioctl struct.

The G2D is a 2D graphic accelerator that supports Bit Block Transfer.
This G2D driver is exynos drm specific and supports only G2D(version
4.1) of later Exynos series from Exynos4X12 because supporting DMA.

The G2D is performed by two tasks simply.
1. Configures the rendering parameters, such as foreground color and
   coordinates data by setting the drawing context registers.
2. Start the rendering process by setting thre relevant command
   registers accordingly.

The G2D version 4.1 supports DMA mode as host interface. User can make
command list to reduce HOST(ARM) loads. The contents of The command list
is setted to relevant registers of G2D by DMA.

The command list is composed Header and command sets and Tail.
- Header: The number of command set(4Bytes)
- Command set: Register offset(4Bytes) + Register data(4Bytes)
- Tail: Pointer of base address of the other command list(4Bytes)

By Tail field, the G2D can process many command lists without halt at
one go.

The G2D has following the rendering pipeline.
--> Primitive Drawing --> Rotation --> Clipping --> Bilinear Sampling
--> Color Key --> ROP --> Mask Operation --> Alpha Blending -->
Dithering --> FrameBuffer

And supports various operations from the rendering pipeline.
- copy
- fast solid color fill
- window clipping
- rotation
- flip
- 4 operand raster operation(ROP4)
- masking operation
- alpha blending
- color key
- dithering
- etc

User should make the command list to data and registers needed by
operation to use. The Exynos G2D driver only manages the command lists
received from user. Some registers needs memory base address(physical
address) of image. User doesn't know its physical address, so fills the
gem handle of that memory than address to command sets, then G2D driver
converts it to memory base address.

We adds three ioctls and one event for Exynos G2D.

- ioctls
DRM_EXYNOS_G2D_GET_VER: get the G2D hardware version
DRM_EXYNOS_G2D_SET_CMDLIST: set the command list from user to driver
DRM_EXYNOS_G2D_EXEC: execute the command lists setted to driver

- event
DRM_EXYNOS_G2D_EVENT: event to give notification completion of the
		      command list to user

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
2012-05-17 20:14:48 +09:00
..
i2c drm: Import driver for the sil164 I2C TMDS transmitter. 2010-08-02 10:21:13 +10:00
ttm BUG: headers with BUG/BUG_ON etc. need linux/bug.h 2012-03-04 17:54:34 -05:00
drm_buffer.h drm: Add generic multipart buffer. 2010-02-23 09:46:20 +10:00
drm_cache.h drm/ttm: consolidate cache flushing code in one place. 2009-08-27 09:53:47 +10:00
drm_core.h drm: Fix support for PCI domains 2010-08-10 08:20:20 +10:00
drm_crtc_helper.h drm: Move drm_format_num_planes() to drm_crtc.c 2012-04-20 12:37:11 +01:00
drm_crtc.h drm/edid: Try harder to fix up base EDID blocks 2012-04-27 08:24:51 +01:00
drm_dp_helper.h drm/radeon/kms: properly set panel mode for eDP 2011-11-01 16:01:58 +00:00
drm_edid.h drm/edid: Add packed attribute to new gtf2 and cvt structs 2012-04-23 17:41:17 +01:00
drm_encoder_slave.h drm/kms: no need to return void value (encoder) 2009-08-19 16:06:49 +10:00
drm_fb_helper.h drm fb helper: remove unused variable crtc_id 2012-02-03 09:55:52 +00:00
drm_fixed.h drm: fixed: Add dfixed_frac 2012-04-27 09:29:35 +01:00
drm_fourcc.h drm: Add multi buffer plane pixel formats 2011-12-29 11:21:42 +09:00
drm_global.h drm: move ttm global code to core drm 2010-08-04 09:46:06 +10:00
drm_hashtab.h drm: Remove unused members from struct drm_open_hash 2011-02-23 11:16:40 +10:00
drm_mem_util.h drm/ttm: use drm calloc large and free large 2010-03-15 10:31:43 +10:00
drm_memory.h includecheck fix: include/drm, drm_memory.h 2009-09-20 16:02:58 +05:30
drm_mm.h drm: mm: fix debug output 2011-05-09 09:14:45 +10:00
drm_mode.h headers: include linux/types.h where appropriate 2012-03-23 16:58:31 -07:00
drm_os_linux.h drm/i915: add i915_lp_ring_sync helper 2009-11-05 14:47:07 -08:00
drm_pciids.h drm/radeon/kms: add trinity pci ids 2012-03-21 06:55:58 +00:00
drm_sarea.h drm: move to kref per-master structures. 2008-12-29 17:47:22 +10:00
drm_sysfs.h drm: Enable drm drivers to add drm sysfs devices. 2009-08-19 16:08:51 +10:00
drm_usb.h drm: add usb framework 2011-02-07 13:09:42 +10:00
drm.h drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
drmP.h Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-04-12 10:27:01 +01:00
exynos_drm.h drm/exynos: add G2D driver 2012-05-17 20:14:48 +09:00
gma_drm.h gma500: fix ioctl confict 2012-03-10 13:06:04 +00:00
i810_drm.h
i915_drm.h drm/i915: add HAS_ALIASING_PPGTT parameter for userspace 2012-03-20 21:55:40 +01:00
intel-gtt.h drm/i915: disable ppgtt on snb when dmar is enabled 2012-04-02 15:59:07 +02:00
Kbuild drm/exynos: exynos_drm.h header file fixes 2012-02-15 10:29:12 +09:00
mga_drm.h Fix common misspellings 2011-03-31 11:26:23 -03:00
nouveau_drm.h drm/nv50: support for compression 2011-02-25 06:46:07 +10:00
r128_drm.h
radeon_drm.h drm/radeon/kms: add support for the CONST IB to the CS ioctl 2012-03-21 06:55:53 +00:00
savage_drm.h Fix common misspellings 2011-03-31 11:26:23 -03:00
sis_drm.h drm/sis: track obj->drm_fd relations in the driver 2011-12-22 00:33:15 +01:00
via_drm.h drm/via: track obj->drm_fd relations in the driver 2011-12-22 00:33:19 +01:00
vmwgfx_drm.h vmwgfx: Reinstate the update_layout ioctl 2011-11-02 08:30:31 +00:00