OpenCloudOS-Kernel/drivers/gpu/drm/exynos
Marek Szyprowski 9913f74fe1 drm/exynos: ipp: Add IPP v2 framework
This patch adds Exynos IPP v2 subsystem and userspace API.

New userspace API is focused ONLY on memory-to-memory image processing.
The two remainging operation modes of obsolete IPP v1 API (framebuffer
writeback and local-path output with image processing) can be implemented
using standard DRM features: writeback connectors and additional DRM planes
with scaling features.

V2 IPP userspace API is based on stateless approach, which much better fits
to memory-to-memory image processing model. It also provides support for
all image formats, which are both already defined in DRM API and supported
by the existing IPP hardware modules.

The API consists of the following ioctls:
- DRM_IOCTL_EXYNOS_IPP_GET_RESOURCES: to enumerate all available image
  processing modules,
- DRM_IOCTL_EXYNOS_IPP_GET_CAPS: to query capabilities and supported image
  formats of given IPP module,
- DRM_IOCTL_EXYNOS_IPP_GET_LIMITS: to query hardware limitiations for
  selected image format of given IPP module,
- DRM_IOCTL_EXYNOS_IPP_COMMIT: to perform operation described by the
  provided structures (source and destination buffers, operation rectangle,
  transformation, etc).

The proposed userspace API is extensible. In the future more advanced image
processing operations can be defined to support for example blending.

Userspace API is fully functional also on DRM render nodes, so it is not
limited to the root/privileged client.

Internal driver API also has been completely rewritten. New IPP core
performs all possible input validation, checks and object life-time
control. The drivers can focus only on writing configuration to hardware
registers. Stateless nature of DRM_IOCTL_EXYNOS_IPP_COMMIT ioctl simplifies
the driver API. Minimal driver needs to provide a single callback for
starting processing and an array with supported image formats.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Tested-by: Hoegeun Kwon <hoegeun.kwon@samsung.com>
Merge conflict so merged manually.
Signed-off-by: Inki Dae <inki.dae@samsung.com>
2018-05-10 08:48:53 +09:00
..
Kconfig drm/exynos: ipp: Add IPP v2 framework 2018-05-10 08:48:53 +09:00
Makefile drm/exynos: ipp: Add IPP v2 framework 2018-05-10 08:48:53 +09:00
exynos7_drm_decon.c drm/exynos/decon: Move headers from global to local place 2018-01-02 08:38:00 +09:00
exynos5433_drm_decon.c drm/exynos/decon: Move headers from global to local place 2018-01-02 08:38:00 +09:00
exynos_dp.c drm/bridge: analogix_dp: Don't create useless connectors 2018-03-07 16:18:00 +01:00
exynos_drm_core.c drm/exynos: use helper to set possible crtcs 2017-08-25 11:26:10 +09:00
exynos_drm_crtc.c drm/exynos: add mode_fixup callback to exynos_drm_crtc_ops 2017-10-26 09:06:33 +09:00
exynos_drm_crtc.h drm/exynos: use helper to set possible crtcs 2017-08-25 11:26:10 +09:00
exynos_drm_dpi.c drm/exynos: use helper to set possible crtcs 2017-08-25 11:26:10 +09:00
exynos_drm_drv.c drm/exynos: ipp: Add IPP v2 framework 2018-05-10 08:48:53 +09:00
exynos_drm_drv.h drm/exynos: ipp: Remove Exynos DRM IPP subsystem 2018-01-02 08:41:22 +09:00
exynos_drm_dsi.c drm/exynos/dsi: propagate info about command mode from panel 2017-08-25 11:26:15 +09:00
exynos_drm_fb.c drm/exynos: exynos_drm_fb -> drm_framebuffer 2018-04-17 14:55:41 +09:00
exynos_drm_fb.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-01-17 13:40:25 -08:00
exynos_drm_fbdev.c drm/exynos: Use drm_fb_helper_lastclose() and _poll_changed() 2017-12-08 13:04:53 +01:00
exynos_drm_fbdev.h drm/exynos: Use drm_fb_helper_lastclose() and _poll_changed() 2017-12-08 13:04:53 +01:00
exynos_drm_fimc.c drm/exynos: Print kernel pointers in a restricted form 2017-03-21 13:17:22 +09:00
exynos_drm_fimc.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_drm_fimd.c drm/exynos: fimd: Add support for S5PV210 FIMD variant 2018-05-09 09:30:48 +09:00
exynos_drm_g2d.c drm/exynos: g2d: Delete an error message for a failed memory allocation in two functions 2018-02-20 09:16:18 +09:00
exynos_drm_g2d.h
exynos_drm_gem.c gpu: drm: exynos: Change return type to vm_fault_t 2018-05-09 09:27:25 +09:00
exynos_drm_gem.h gpu: drm: exynos: Change return type to vm_fault_t 2018-05-09 09:27:25 +09:00
exynos_drm_gsc.c drm/exynos: Print kernel pointers in a restricted form 2017-03-21 13:17:22 +09:00
exynos_drm_gsc.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_drm_iommu.c drm/exynos: iommu: move ARM specific code to exynos_drm_iommu.h 2016-07-13 23:06:06 +09:00
exynos_drm_iommu.h iommu/dma: Avoid PCI host bridge windows 2016-09-16 09:34:22 +01:00
exynos_drm_ipp.c drm/exynos: ipp: Add IPP v2 framework 2018-05-10 08:48:53 +09:00
exynos_drm_ipp.h drm/exynos: ipp: Add IPP v2 framework 2018-05-10 08:48:53 +09:00
exynos_drm_mic.c Merge tag 'drm-misc-next-2017-09-20' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-09-28 05:46:15 +10:00
exynos_drm_plane.c drm/exynos: mixer: enable NV12MT support for the video plane 2017-08-25 12:04:51 +09:00
exynos_drm_plane.h drm/exynos: set plane possible_crtcs in exynos_plane_init 2017-06-01 16:21:34 +09:00
exynos_drm_rotator.c drm/exynos: Print kernel pointers in a restricted form 2017-03-21 13:17:22 +09:00
exynos_drm_vidi.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
exynos_drm_vidi.h drm/exynos: change file license to GPL 2013-01-04 15:54:32 +09:00
exynos_hdmi.c drm/exynos: hdmi: avoid duplicating drm_bridge_attach 2018-05-09 09:04:57 +09:00
exynos_mixer.c drm/exynos: mixer: avoid Oops in vp_video_buffer() 2018-05-04 09:39:59 +09:00
regs-decon7.h drm/exynos/decon: Add include guard to the Exynos7 header 2018-01-02 08:38:49 +09:00
regs-decon5433.h drm/exynos/decon: Add include guard to the Exynos7 header 2018-01-02 08:38:49 +09:00
regs-fimc.h drm/exynos: fix comparison to bitshift when dealing with a mask 2018-02-20 09:16:18 +09:00
regs-gsc.h drm/exynos: gsc: add device tree support and remove usage of static mappings 2015-12-13 22:22:53 +09:00
regs-hdmi.h drm: exynos: Use proper macro definition for HDMI_I2S_PIN_SEL_1 2018-02-20 10:51:36 +09:00
regs-mixer.h drm/exynos/mixer: fix synchronization check in interlaced mode 2018-05-04 09:39:59 +09:00
regs-rotator.h drm/exynos: add rotator ipp driver 2012-12-15 02:39:41 +09:00
regs-vp.h