aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-03-02Merge tag 'imx-drm-next-20160301' of git://git.pengutronix.de/git/pza/linux ↵Dave Airlie13-109/+222
into drm-next imx-drm vblank IRQ control, fence support, and of endpoint helpers - Add and make use of drm_of_active_endpoint helpers - Silence a noisy dev_info into a dev_dbg - Stop touching primary fb on pageflips - Track flip state explicitly - Keep GEM buffer objects referenced while scanout is active - Implement fence sync by deferring flips to a workqueue for dma-bufs with pending fences - Actually disable vblank IRQs while they are not needed * tag 'imx-drm-next-20160301' of git://git.pengutronix.de/git/pza/linux: drm/imx: only enable vblank IRQs when needed drm/imx: implement fence sync drm/imx: keep GEM object referenced as long as scanout is active drm/imx: track flip state explicitly drm/imx: don't touch primary fb on pageflip drm/imx: ipuv3 plane: Replace dev_info with dev_dbg if a plane's CRTC changes gpu: ipu-v3: ipu-dc: Simplify display controller microcode setup drm/rockchip: remove rockchip_drm_encoder_get_mux_id drm/imx: remove imx_drm_encoder_get_mux_id drm: add drm_of_encoder_active_endpoint helpers
2016-03-02Merge branch 'exynos-drm-next' of ↵Dave Airlie26-499/+423
git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-next Summary: - Add Exynos5420 SoC support to FIMD driver. . This patch makes MIC(Mobile Image Compressor) IP to be bypassed in default in case of Exynos5420 and later. The Display pipe line configuraion for Exynos DRM driver will be considered through of graph concept later. - Add Exynos5422 SoC support to MIPI-DSI driver. . Exynos5422 SoC is similar to Exynos5433 SoC but software reset is different each other so this patch consideres the difference. - Get more precise clock divider value of FIMD controller. . This patch changes DIV_ROUND_CLOSEST macro to be used instead of DIV_ROUND_UP. - Refactor Exynos DRM device and driver registeration. . This patch makes Exynos DRM driver to be easy-to-read and at the same time, cleans it up by removing #ifdef ~ #endif things. - Configure DMA-mapping address space common to Exynos DRM devices in more generic without any hacks. - some fixups and cleanups. * 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos: (26 commits) drm/exynos/dsi: use core helper to create DSI packet drm/exynos: use real device for DMA-mapping operations drm/exynos: refactor driver and device registration code drm/exynos: use arch independent types in uapi header drm/exynos: remove platform data structures and include/drm/exynos_drm.h drm/exynos/fimc: remove unused camera interface polarization code drm/exynos: remove struct exynos_drm_panel_info drm/exynos: add exynos5420 support for fimd drm/exynos: use DIV_ROUND_CLOSEST to find the closest div drm/exynos: remove incorrect ccflags from Makefile drm/exynos/decon: make irq handler static drm/exynos/hdmi: remove unused variable drm/exynos/dsi: constify read only structures drm/exynos/dsi: replace registry access macros with functions drm/exynos: support exynos5422 mipi-dsi drm/exynos/decon: fix disable clocks order drm/exynos: fix incorrect cpu address for dma_mmap_attrs() drm/exynos: exynos5433_decon: fix wrong state in decon_vblank_enable drm/exynos: exynos5433_decon: fix wrong state assignment in decon_enable drm/exynos: dsi: restore support for drm bridge ...
2016-03-02drm/exynos/dsi: use core helper to create DSI packetAndrzej Hajda1-46/+23
Core provides generic helper to create DSI packet, use it instead of custom code. Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: use real device for DMA-mapping operationsMarek Szyprowski7-46/+69
This patch changes device pointer provided to all calls to DMA-mapping subsystem from the virtual exynos-drm 'device' to the real device pointer of one of the CRTC devices (decon, fimd or mixer). This way no more hacks will be needed to configure proper DMA-mapping address space on the common virtual exynos-drm device. This change also removes the need for some hacks in IOMMU related code. It also finally solves the problem of Exynos DRM driver not working on ARM64 architecture, which provides noop-based DMA-mapping operations for virtual platform devices. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: refactor driver and device registration codeMarek Szyprowski2-127/+107
This patch refactors driver and device registration by moving all drivers to the common array. This way additional flags can be added later for new features. #ifdef-based code has been replaced by IS_ENABLED() macro usage. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: use arch independent types in uapi headerAndrzej Hajda1-13/+13
User API structs should not use types which size/alignment/padding depends on architecture. The patch fixes it for all structures except drm_exynos_g2d_userptr, as g2d related stuff seems to be more complicated and will be reviewed/adjusted later. Signed-off-by: Andrzej Hajda <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: remove platform data structures and include/drm/exynos_drm.hAndrzej Hajda1-86/+0
Platform data structures are not used for long time so the whole header file can be safely removed. Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos/fimc: remove unused camera interface polarization codeAndrzej Hajda1-28/+0
Polarization was never configured for DRM-FIMC device, so fimc_set_polarity function did nothing. In fact DRM does not use camera interface so there is no point in configuring it. Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: remove struct exynos_drm_panel_infoAndrzej Hajda5-24/+4
struct exynos_drm_panel_info is not used anymore, except exynos_dp, which can integrate useful fields directly into its context. Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: add exynos5420 support for fimdChanho Park2-2/+32
This patch adds a exynos5420 driver data to support mic_bypass option to bypass the mic from display out path. The mic(Mobile image compressor) compresses RGB data from fimd and send the compressed data to the mipi dsi. The bypass option can be founded from system register and the bit is 11. The option bit has been introduced since exynos5420. The only difference between exynos5250 and exynos5420/exynos5422 is existence of the bit. Until the MIC is defined and enabled from device tree, the bypass mic will be default option. Signed-off-by: Chanho Park <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: use DIV_ROUND_CLOSEST to find the closest divChanho Park1-1/+1
This patch uses DIV_ROUND_CLOSEST instead of DIV_ROUND_UP The DIV_ROUND_CLOSEST can be used to find the closest integer value when we divide some integers. Signed-off-by: Chanho Park <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: remove incorrect ccflags from MakefileAndrzej Hajda3-3/+1
Include directories are provided by core already, adding them in driver is redundand and causes warnings in case of out-of-tree build. v2: - fixed include in exynos_drm_iommu.c - typo in commit message Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos/decon: make irq handler staticAndrzej Hajda1-1/+1
The function is used only locally. Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos/hdmi: remove unused variableAndrzej Hajda1-2/+0
The variable is unused for long time. Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos/dsi: constify read only structuresAndrzej Hajda1-15/+15
All global variables are read only. Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos/dsi: replace registry access macros with functionsAndrzej Hajda1-51/+57
Functions are preferred over macros as more type-safe. Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: support exynos5422 mipi-dsiChanho Park2-0/+32
This patch supports mipi dsi for exynos5422. The dsi register offsets of the exynos5422 are similar with exynos5433. However, the values of the registers are quite different from the exynos5433. For example, the exynos5422 uses sw reset like previous chips. Signed-off-by: Chanho Park <[email protected]> Reviewed-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos/decon: fix disable clocks orderAndrzej Hajda1-2/+2
Decon requires that clocks should be disabled in reverse order. Otherwise system hangs. Signed-off-by: Andrzej Hajda <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: fix incorrect cpu address for dma_mmap_attrs()Marek Szyprowski2-2/+2
dma_mmap_attrs() should be called with cpu address returned by dma_alloc_attrs(). Existing code however passed pages array base as cpu address. This worked only by a pure luck on ARM architecture. This patch fixes this issue. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: exynos5433_decon: fix wrong state in decon_vblank_enableMarek Szyprowski1-1/+1
BIT_IRQS_ENABLED was never set because of incorrect test in decon_vlank_enable() function, what resulted in lack of enabling vblank support. This patch fixes this issue. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: exynos5433_decon: fix wrong state assignment in decon_enableMarek Szyprowski1-2/+0
Patch ebf3fd403b79ba6561bd1a4bb5a7cacc99da08e5 ("drm/exynos: add pm_runtime to DECON 5433") removed some code from decon_enable() function, but it left set_bit(BIT_SUSPENDED, &ctx->flags) call, which was earlier called only in error path. This patch removes it, what finally lets driver to go out of suspended state. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: dsi: restore support for drm bridgeMarek Szyprowski1-0/+1
This patch fixes issue introduced by commit cf67cc9a29ac19c98bc4fa0e6d14b0c1f592d322 ("drm/exynos: remove struct exynos_drm_display"), which removed assigning of drm bridge to drm encoder. Lack of it caused that no bridge callbacks were called on encoder enable/disable actions. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: mic: make all functions staticMarek Szyprowski1-5/+5
There is no point exposing all internal functions to global kernel name space, so make all internals functions static. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: mic: convert to component frameworkMarek Szyprowski1-20/+36
MIC is SoC component and important part of kms pipeline on Exynos5433, so convert it to use component framework like other KMS/CRTC drivers. MIC driver is already listed on KMS component driver list in Exynos DRM core, so without this conversion, initialization of Exynos DRM core fails on Exynos 5433 SoC. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: mic: use devm_clk interfaceMarek Szyprowski1-5/+1
Drivers should use devm_clk* interface instead of of_clk* functions. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: fix types for compilation on 64bit architecturesMarek Szyprowski3-6/+9
This patch fixes compilation warnings (on 64bit architectures) and bugs related to casting pointers through 32bit integers. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: ipp: fix incorrect format specifiers in debug messagesMarek Szyprowski4-19/+19
Drivers should use %p for printing pointers instead of hardcoding them as hexadecimal integers. This patch fixes compilation warnings on 64bit architectures. Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/exynos: depend on ARCH_EXYNOS for DRM_EXYNOSJoonyoung Shim1-1/+1
Because PLAT_SAMSUNG isn't include exynos SoCs for arm64, but ARCH_EXYNOS can do it. And it also needs to add ARCH_S3C64XX instead of PLAT_SAMSUNG. Signed-off-by: Joonyoung Shim <[email protected]> Signed-off-by: Marek Szyprowski <[email protected]> Signed-off-by: Inki Dae <[email protected]>
2016-03-01drm/imx: only enable vblank IRQs when neededLucas Stach1-0/+9
The vblank IRQ is only needed to trigger page flip work, so we might as well disable it when there is no work to do. Signed-off-by: Lucas Stach <[email protected]> Signed-off-by: Philipp Zabel <[email protected]>
2016-03-01drm/imx: implement fence syncLucas Stach1-2/+61
If the FB is backed by a GEM object with an dma-buf attached we need to wait for any pending fences to signal before executing the page flip. The implementation is straight forward by deferring the flip to a workqueue in that case. Signed-off-by: Lucas Stach <[email protected]> Signed-off-by: Philipp Zabel <[email protected]>
2016-03-01drm/imx: keep GEM object referenced as long as scanout is activeLucas Stach1-5/+44
The DRM core only references the currently queued/active framebuffer. So there is a period of time where the flip is not completed, but the GEM object backing the FB is already unreferenced and could be destroyed if userspace closes its handle. Make sure to keep a reference to the GEM object until the flip is actually executed clean things up in a worker running behind the flip execution. Also move the page flip event into the context of this worker, so it gets cleaned up automatically. Signed-off-by: Lucas Stach <[email protected]> Signed-off-by: Philipp Zabel <[email protected]>
2016-03-01drm/imx: track flip state explicitlyLucas Stach1-5/+10
Start tracking the flip state explicitly, as opposed to inferring it from the presence if a new FB. This is a preparatory step to introduce an new immediate state, where we can wait for a fence to signal. Signed-off-by: Lucas Stach <[email protected]> Signed-off-by: Philipp Zabel <[email protected]>
2016-03-01drm/imx: don't touch primary fb on pageflipLucas Stach1-1/+0
The core already does the correct replacemet if the driver page flip function returns without an error, so there is no need to do it here. Signed-off-by: Lucas Stach <[email protected]> Signed-off-by: Philipp Zabel <[email protected]>
2016-03-01drm/imx: ipuv3 plane: Replace dev_info with dev_dbg if a plane's CRTC changesLiu Ying1-1/+1
This patch changes the dev_info() call to dev_dbg() in ipu_plane_update() to print out the information that a plane's CRTC is changed, because this kind of information is only useful for debugging. Signed-off-by: Liu Ying <[email protected]> Signed-off-by: Philipp Zabel <[email protected]>
2016-03-01gpu: ipu-v3: ipu-dc: Simplify display controller microcode setupPhilipp Zabel1-27/+26
This cleans up the display controller microcode setup in ipu_dc_init_sync a little bit. The microcode template words for DI0 and DI1 are properly separated to avoid a clash when DI1 is active in interlaced mode at the same time as DI0 in non-interlaced mode. A comment is added to explain the meaning of the sync counter. Signed-off-by: Philipp Zabel <[email protected]>
2016-03-01drm/rockchip: remove rockchip_drm_encoder_get_mux_idPhilipp Zabel4-34/+2
It is replaced by drm_of_encoder_active_endpoint_id. Suggested-by: Daniel Kurtz <[email protected]> Reviewed-by: Daniel Kurtz <[email protected]> Reviewed-by: Heiko Stuebner <[email protected]> Tested-by: Yakir Yang <[email protected]> [for dw_hdmi-rockchip] Acked-by: Mark Yao <[email protected]> Signed-off-by: Philipp Zabel <[email protected]>
2016-03-01drm/imx: remove imx_drm_encoder_get_mux_idPhilipp Zabel4-36/+4
It is replaced by drm_of_encoder_active_port_id. Suggested-by: Daniel Kurtz <[email protected]> Signed-off-by: Philipp Zabel <[email protected]>
2016-03-01Merge tag 'drm-intel-next-2016-02-14' of ↵Dave Airlie46-1093/+1568
git://anongit.freedesktop.org/drm-intel into drm-next - lots and lots of fbc work from Paulo - max pixel clock checks from Mika Kahola - prep work for nv12 offset handling from Ville - piles of small fixes and refactorings all around * tag 'drm-intel-next-2016-02-14' of git://anongit.freedesktop.org/drm-intel: (113 commits) drm/i915: Update DRIVER_DATE to 20160214 drm/i915: edp resume/On time optimization. agp/intel-gtt: Only register fake agp driver for gen1 drm/i915: TV pixel clock check drm/i915: CRT pixel clock check drm/i915: SDVO pixel clock check drm/i915: DisplayPort-MST pixel clock check drm/i915: HDMI pixel clock check drm/i915: DisplayPort pixel clock check drm/i915: check that rpm ref is held when accessing ringbuf in stolen mem drm/i915: fix error path in intel_setup_gmbus() drm/i915: Stop depending upon CONFIG_AGP_INTEL agp/intel-gtt: Don't leak the scratch page drm/i915: Capture PCI revision and subsytem details in error state drm/i915: fix context/engine cleanup order drm/i915: Handle PipeC fused off on IVB/HSW/BDW drm/i915/skl: Fix typo in DPLL_CFGCR1 definition drm/i915: Skip DDI PLL selection for DSI drm/i915/skl: Explicitly check for eDP in skl_ddi_pll_select() drm/i915/skl: Don't skip mst encoders in skl_ddi_pll_select() ...
2016-03-01Merge tag 'drm-amdkfd-next-2016-02-27' of ↵Dave Airlie8-59/+64
git://people.freedesktop.org/~gabbayo/linux into drm-next Here are a few amdkfd patches for 4.6. These patches defer radeon/amdgpu loading in case amdkfd is not yet loaded, by returning -EPROBE_DEFER during their probing stage. * tag 'drm-amdkfd-next-2016-02-27' of git://people.freedesktop.org/~gabbayo/linux: drm/amdgpu: Return -EPROBE_DEFER when amdkfd not loaded drm/radeon: Return -EPROBE_DEFER when amdkfd not loaded drm/amdkfd: Track when module's init is complete
2016-02-27drm/amdgpu: Return -EPROBE_DEFER when amdkfd not loadedOded Gabbay3-39/+30
amdgpu must load only after amdkfd's loading has been completed. If that is not enforced, then amdgpu's call into amdkfd's functions will cause a kernel BUG. When amdgpu and amdkfd are built as kernel modules, that rule is enforced by the kernel's modules loading mechanism. When amdgpu and amdkfd are built inside the kernel image, that rule is enforced by ordering in the drm Makefile (amdkfd before amdgpu). Instead of using drm Makefile ordering, we can now use deferred loading as amdkfd now returns -EPROBE_DEFER in kgd2kfd_init() when it is not yet loaded. This patch defers amdgpu loading by propagating -EPROBE_DEFER to the kernel's drivers loading infrastructure. That will put amdgpu into the pending drivers list (see description in dd.c). Once amdkfd is loaded, a call to kgd2kfd_init() will return successfully and amdgpu will be able to load. Signed-off-by: Oded Gabbay <[email protected]> Reviewed-by: Alex Deucher <[email protected]>
2016-02-27drm/radeon: Return -EPROBE_DEFER when amdkfd not loadedOded Gabbay3-16/+21
radeon must load only after amdkfd's loading has been completed. If that is not enforced, then radeon's call into amdkfd's functions will cause a kernel BUG. When radeon and amdkfd are built as kernel modules, that rule is enforced by the kernel's modules loading mechanism. When radeon and amdkfd are built inside the kernel image, that rule is enforced by ordering in the drm Makefile (amdkfd before radeon). Instead of using drm Makefile ordering, we can now use deferred loading as amdkfd now returns -EPROBE_DEFER in kgd2kfd_init() when it is not yet loaded. This patch defers radeon loading by propagating -EPROBE_DEFER to the kernel's drivers loading infrastructure. That will put radeon into the pending drivers list (see description in dd.c). Once amdkfd is loaded, a call to kgd2kfd_init() will return successfully and radeon will be able to load. Signed-off-by: Oded Gabbay <[email protected]> Reviewed-by: Alex Deucher <[email protected]>
2016-02-27drm/amdkfd: Track when module's init is completeOded Gabbay4-8/+17
Current dependencies between amdkfd and radeon/amdgpu force the loading of amdkfd _before_ radeon and/or amdgpu are loaded. When all these kernel drivers are built as modules, this ordering is enforced by the kernel built-in mechanism of loading dependent modules. However, there is no such mechanism in case where all these drivers are compiled inside the kernel image (not as modules). The current way to enforce loading of amdkfd before radeon/amdgpu, is to put amdkfd before radeon/amdgpu in the drm Makefile, but that method is way too fragile. In addition, there is no kernel mechanism to check whether a kernel driver that is built inside the kernel image, has already been loaded. To solve this, this patch adds to kfd_module.c a new static variable, amdkfd_init_completed, that is set to 1 only when amdkfd's module initialization function has been completed (successfully). kgd2kfd_init(), which is the initialization function of the kgd-->kfd interface, and which is the first function in amdkfd called by radeon/amdgpu, will return successfully only if amdkfd_init_completed is equal 1. If amdkfd_init_completed is not equal to 1, kgd2kfd_init() will return -EPROBE_DEFER to signal radeon/amdgpu they need to defer their loading until amdkfd is loaded. Signed-off-by: Oded Gabbay <[email protected]> Reviewed-by: Alex Deucher <[email protected]>
2016-02-26Merge branch 'for-next' of http://git.agner.ch/git/linux-drm-fsl-dcu into ↵Dave Airlie7-208/+168
drm-next As previously discussed, this is my first pull request for the DCU DRM driver along with the change in MAINTAINERS. https://lkml.org/lkml/2016/1/7/26 The pull contains some code cleanup changes (e.g. removing all error handling for the regmap calls) and several fixes. * 'for-next' of http://git.agner.ch/git/linux-drm-fsl-dcu: drm/fsl-dcu: fix register initialization drm/fsl-dcu: use mode flags for hsync/vsync polarity drm/fsl-dcu: fix alpha blending drm/fsl-dcu: mask all interrupts on initialization drm/fsl-dcu: handle initialization errors properly drm/fsl-dcu: avoid memory leak on errors drm/fsl-dcu: remove regmap return value checks drm/fsl-dcu: specify volatile registers drm: fsl-dcu: Fix no fb check bug MAINTAINERS: update for Freescale DCU DRM driver
2016-02-25drm/fsl-dcu: fix register initializationStefan Agner1-2/+2
The layer enumeration start with 0 (0-15 for LS1021a and 0-63 for Vybrid) whereas the register enumeration start from 1 (1-10 for LS1021a and 1-9 for Vybrid). The loop started off from 0 for both iterations and initialized the number of layers inclusive, which is one layer too many. All extensively written registers seem to be unassigned, it seems that the write to those registers did not do any harm in practice. Signed-off-by: Stefan Agner <[email protected]>
2016-02-25drm/fsl-dcu: use mode flags for hsync/vsync polarityStefan Agner2-3/+9
The current default configuration is as follows: - Invert VSYNC signal (active LOW) - Invert HSYNC signal (active LOW) The mode flags allow to specify the required polarity per mode. Furthermore, none of the current driver settings is actually a standard polarity. This patch applies the current driver default polarities as explicit flags to the display which has been introduced with the driver (NEC WQVGA "nec,nl4827hc19-05b"). The driver now also parses the flags field and applies the configuration accordingly, by using the following values as standard polarities: (e.g. when no flags are specified): - VSYNC signal not inverted (active HIGH) - HSYNC signal not inverted (active HIGH) Acked-by: Thierry Reding <[email protected]> Signed-off-by: Stefan Agner <[email protected]>
2016-02-25drm/fsl-dcu: fix alpha blendingStefan Agner2-12/+23
Fix alpha blending by enabling alpha blending for the whole frame if a color mode with alpha channel is selected (DRM_FORMAT_ARGB*). Also support color modes without alpha channel (DRM_FORMAT_XRGB*) by just not enabling alpha blending on layer level. Signed-off-by: Stefan Agner <[email protected]>
2016-02-25drm/fsl-dcu: mask all interrupts on initializationStefan Agner1-4/+1
The state of the interrupt mask register on initialization is unknown, e.g. U-Boot could already used the DCU. So depending on the boot loader, the outcome of the interrupt mask register could be different. A defined state is much more preferable. Also, there is no value in keeping interrupts enabled which we don't need. Therefor, mask all interrupts on initialization. Signed-off-by: Stefan Agner <[email protected]>
2016-02-25drm/fsl-dcu: handle initialization errors properlyStefan Agner1-4/+20
If initialization fails (e.g. due to missing panel node or deferred probe) make sure to roll-back all operations and return the error code. Signed-off-by: Stefan Agner <[email protected]>
2016-02-25drm/fsl-dcu: avoid memory leak on errorsStefan Agner2-1/+7
Improve error handling during CRTC initialization. Especially avoid memory leaks in the primary plane initialization error path. Signed-off-by: Stefan Agner <[email protected]>
2016-02-25drm/fsl-dcu: remove regmap return value checksStefan Agner3-188/+99
It is not common to do regmap return value checks, especially not for memory mapped device. We can rule out most error returns since the conditions are static and we know they are ok (e.g. offset aligned to register stride). Also without proper error handling they are not really valuable for the user. Hence remove most of them. The check in the interrupt handler is worth keeping since a volatile register won't be readable in case register caching is still enabled. Signed-off-by: Stefan Agner <[email protected]>