OrangePi_CM5/drivers/gpu/drm
Lionel Landwerlin 5488dc16fd drm: introduce pipe color correction properties
Patch based on a previous series by Shashank Sharma.

This introduces optional properties to enable color correction at the
pipe level. It relies on 3 transformations applied to every pixels
displayed. First a lookup into a degamma table, then a multiplication
of the rgb components by a 3x3 matrix and finally another lookup into
a gamma table.

The following properties can be added to a pipe :
  - DEGAMMA_LUT : blob containing degamma LUT
  - DEGAMMA_LUT_SIZE : number of elements in DEGAMMA_LUT
  - CTM : transformation matrix applied after the degamma LUT
  - GAMMA_LUT : blob containing gamma LUT
  - GAMMA_LUT_SIZE : number of elements in GAMMA_LUT

DEGAMMA_LUT_SIZE and GAMMA_LUT_SIZE are read only properties, set by
the driver to tell userspace applications what sizes should be the
lookup tables in DEGAMMA_LUT and GAMMA_LUT.

A helper is also provided so legacy gamma correction is redirected
through these new properties.

v2: Register LUT size properties as range

v3: Fix round in drm_color_lut_get_value() helper
    More docs on how degamma/gamma properties are used

v4: Update contributors

v5: Rename CTM_MATRIX property to CTM (Doh!)
    Add legacy gamma_set atomic helper
    Describe CTM/LUT acronyms in the kernel doc

v6: Fix missing blob unref in drm_atomic_helper_crtc_reset

Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
Signed-off-by: Kumar, Kiran S <kiran.s.kumar@intel.com>
Signed-off-by: Kausal Malladi <kausalmalladi@gmail.com>
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Acked-by: Rob Bradford <robert.bradford@intel.com>
[danvet: CrOS maintainers are also happy with the userspacde side:
https://codereview.chromium.org/1182063002/ ]
Reviewed-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1456506302-640-4-git-send-email-lionel.g.landwerlin@intel.com
2016-03-08 13:57:32 +01:00
..
amd Merge branch 'drm-next-4.6' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-02-19 11:13:01 +10:00
arm drm: Add support for ARM's HDLCD controller. 2016-02-10 13:44:16 +00:00
armada drm/armada: Remove NULL open/pre/postclose hooks 2016-01-25 19:35:05 +01:00
ast drm/ast: removed optional dummy crtc mode_fixup function. 2016-03-04 18:16:56 +01:00
atmel-hlcdc drm/atmel-hlcdc: remove optional dummy crtc mode_fixup function. 2016-03-04 18:09:51 +01:00
bochs drm/bochs: removed optional dummy crtc mode_fixup function. 2016-03-04 18:16:51 +01:00
bridge drm/bridge: removed dummy mode_fixup function from dw-hdmi. 2016-02-11 09:24:01 +01:00
cirrus drm/cirrus: removed optional dummy crtc mode_fixup function. 2016-03-04 17:54:12 +01:00
etnaviv drm/etnaviv: call correct function when trying to vmap a DMABUF 2016-01-26 18:54:01 +01:00
exynos drm/exynos: removed optional dummy encoder mode_fixup function. 2016-02-16 15:30:36 +01:00
fsl-dcu drm/fsl-dcu: removed optional dummy crtc mode_fixup function. 2016-03-04 18:16:45 +01:00
gma500 drm/gma: removed optional dummy crtc mode_fixup function. 2016-03-04 17:58:34 +01:00
i2c drm/i2c/tda998x: removed unnecessary code, mode_fixup is now optional. 2016-02-11 09:24:01 +01:00
i810
…
i915 drm/i915: Set aux.dev to the drm_connector device, instead of drm_device. 2016-02-14 19:21:01 +01:00
imx drm/imx: removed optional dummy encoder mode_fixup function. 2016-02-16 15:33:05 +01:00
mga
…
mgag200 drm/mgag200: removed optional dummy crtc mode_fixup function. 2016-03-04 17:54:17 +01:00
msm drm/msm/mdp: removed optional dummy crtc mode_fixup function. 2016-03-04 17:59:27 +01:00
nouveau drm/nouveau/dispnv04: removed optional dummy crtc mode_fixup function. 2016-03-04 18:10:41 +01:00
omapdrm drm/omapdrm: removed optional dummy crtc mode_fixup function. 2016-03-04 17:59:02 +01:00
panel drm/fsl-dcu: use mode flags for hsync/vsync polarity 2016-02-25 16:13:16 -08:00
qxl drm/qxl: removed optional dummy encoder mode_fixup function. 2016-02-16 15:34:00 +01:00
r128
…
radeon Merge branch 'drm-next-4.6' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-02-19 11:13:01 +10:00
rcar-du drm/rcar-du: removed optional dummy crtc mode_fixup function. 2016-03-04 17:58:47 +01:00
rockchip Merge branch 'drm-rockchip-next-2016-02-18' of https://github.com/markyzq/kernel-drm-rockchip into drm-next 2016-02-19 13:10:18 +10:00
savage
…
shmobile drm/shmobile: removed optional dummy crtc mode_fixup function. 2016-03-04 17:59:44 +01:00
sis
…
sti drm/sti: removed optional dummy crtc mode_fixup function. 2016-03-04 18:09:20 +01:00
tdfx
…
tegra drm/tegra: drop unused variable. 2016-02-09 11:17:37 +10:00
tilcdc drm/tilcdc: removed optional dummy encoder mode_fixup function. 2016-02-16 15:34:40 +01:00
ttm Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-01-17 13:40:25 -08:00
udl drm/udl: removed optional dummy crtc mode_fixup function. 2016-03-04 17:54:22 +01:00
vc4 drm/vc4: Add support for YUV planes. 2016-02-16 11:24:08 -08:00
vgem
…
via
…
virtio drm/virtio: removed optional dummy crtc mode_fixup function. 2016-03-04 18:15:38 +01:00
vmwgfx Merge tag 'topic/drm-misc-2016-02-08' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-02-09 10:39:11 +10:00
Kconfig Merge branch 'drm-next-4.6' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-02-19 11:13:01 +10:00
Makefile Merge tag 'topic/drm-misc-2016-02-18' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-02-19 10:57:44 +10:00
ati_pcigart.c
…
drm_agpsupport.c
…
drm_atomic.c drm: introduce pipe color correction properties 2016-03-08 13:57:32 +01:00
drm_atomic_helper.c drm: introduce pipe color correction properties 2016-03-08 13:57:32 +01:00
drm_auth.c
…
drm_bridge.c
…
drm_bufs.c
…
drm_cache.c
…
drm_context.c
…
drm_crtc.c drm: introduce pipe color correction properties 2016-03-08 13:57:32 +01:00
drm_crtc_helper.c drm: introduce pipe color correction properties 2016-03-08 13:57:32 +01:00
drm_crtc_internal.h
…
drm_debugfs.c
…
drm_dma.c
…
drm_dp_aux_dev.c drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. 2016-02-12 14:22:40 +01:00
drm_dp_helper.c drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. 2016-02-12 14:22:40 +01:00
drm_dp_mst_topology.c drm/dp/mst: deallocate payload on port destruction 2016-02-05 15:23:49 +10:00
drm_drv.c drm: move MODULE_PARM_DESC to other file 2016-01-08 15:32:29 +01:00
drm_edid.c drm/edid: Switch DDC when reading the EDID 2016-02-09 11:21:09 +01:00
drm_edid_load.c
…
drm_encoder_slave.c drm: fixes when i2c encoder slave mode_fixup is null. 2016-02-10 15:14:49 +01:00
drm_fb_cma_helper.c drm/fb_cma_helper: remove duplicate const from drm_fb_cma_alloc 2016-01-20 13:55:57 +01:00
drm_fb_helper.c drm/fb_helper: Use add_one_connector in add_all_connectors. 2016-02-15 14:56:46 +01:00
drm_flip_work.c
…
drm_fops.c drm: Nuke vblank event file cleanup code 2016-02-08 09:55:47 +01:00
drm_gem.c
…
drm_gem_cma_helper.c
…
drm_global.c
…
drm_hashtab.c tree wide: use kvfree() than conditional kfree()/vfree() 2016-01-22 17:02:18 -08:00
drm_info.c
…
drm_internal.h
…
drm_ioc32.c
…
drm_ioctl.c
…
drm_irq.c drm/vblank: Use drm_event_reserve_init 2016-02-08 09:54:54 +01:00
drm_kms_helper_common.c drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. 2016-02-12 14:22:40 +01:00
drm_legacy.h
…
drm_lock.c
…
drm_memory.c
…
drm_mipi_dsi.c
…
drm_mm.c
…
drm_modes.c drm: modes: add missing [drm] to message printing 2016-02-09 16:34:44 +01:00
drm_modeset_lock.c
…
drm_of.c
…
drm_panel.c
…
drm_pci.c
…
drm_plane_helper.c
…
drm_platform.c
…
drm_prime.c drm: prime: Honour O_RDWR during prime-handle-to-fd 2016-02-09 09:25:12 +01:00
drm_probe_helper.c
…
drm_rect.c
…
drm_scatter.c
…
drm_sysfs.c drm/sysfs: use kobj_to_dev() 2016-01-13 16:43:07 +01:00
drm_trace.h
…
drm_trace_points.c
…
drm_vm.c
…
drm_vma_manager.c
…