- 29 8月, 2016 2 次提交
-
-
由 Liu Ying 提交于
We don't support configuring active plane on-the-fly for imx-drm. The relevant CRTC should be disabled before the plane configuration. Of course, the plane itself should be disabled as well. This patch adds active plane reconfiguration support by forcing CRTC mode change in plane's ->atomic_check callback so that the CRTC will be disabled before the plane configuration. Suggested-by: NDaniel Vetter <daniel.vetter@ffwll.ch> Cc: Philipp Zabel <p.zabel@pengutronix.de> Cc: David Airlie <airlied@linux.ie> Cc: Russell King <linux@armlinux.org.uk> Cc: Peter Senna Tschudin <peter.senna@gmail.com> Cc: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Liu Ying 提交于
The IPUv3 display controller behind imx-drm needs all planes of a CRTC be disabled when the CRTC is disabled. The DRM_PLANE_COMMIT_NO_DISABLE_AFTER_MODESET flag reflects this hardware requirement. Let's use the flag for imx-drm. Suggested-by: NDaniel Vetter <daniel.vetter@ffwll.ch> Cc: Philipp Zabel <p.zabel@pengutronix.de> Cc: David Airlie <airlied@linux.ie> Cc: Russell King <linux@armlinux.org.uk> Cc: Peter Senna Tschudin <peter.senna@gmail.com> Cc: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 13 7月, 2016 6 次提交
-
-
由 Philipp Zabel 提交于
This allows the compiler to do type checking. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Liu Ying 提交于
Replacing drm_crtc_helper_set_config() by drm_atomic_helper_set_config() and converting the suspend/resume operations to atomic make us be able to use atomic configurations. All of these allow us to remove the crtc_funcs->mode_set callback as it is no longer used. Also, change the plane_funcs->update/disable_plane callbacks from the transitional version to the atomic version. Furthermore, switching to the pure atomic version of set_config callback means that we may implement CRTC/plane atomic checks by using the new CRTC/plane states instead of the legacy ones and we may remove the private ipu_crtc->enabled state which was left there for the transitional atomic helpers in phase 1. Page flip is also switched to the atomic version. Last, the legacy function drm_helper_disable_unused_functions() is removed from ->load in order not to confuse the atomic driver. Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Liu Ying 提交于
Wire up CRTCs', planes' and connectors' ->reset, ->duplicate and ->destroy state hooks to use the default implementations from the atomic helper library. The helpers track each DRM object state. Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Liu Ying 提交于
Use the drm_plane_helper_update/disable() and drm_helper_crtc_mode_set() transitional atomic helpers. The crtc->mode_set_nofb callback is added so that the primary plane is no longer tied to the CRTC. Check/update logics are separated to make sure crtc->mode_set_nofb and plane->atomic_update are always successful. Also, some necessary logics are tweaked for a smooth transition. Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Liu Ying 提交于
For all video modes we support currently, we always get 2 slots for a plane by using the current existing dynamic DMFC FIFO allocation mechanism. So, let's change to use the static one to simplify the code. This also makes it easier to implement the atomic mode setting as we don't need to handle allocation failure cases then. Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Liu Ying 提交于
The IPUv3 primary plane doesn't support partial off screen. So, this patch separates plane check logics for primary plane and overlay plane and adds more limitations on the primary plane. Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 30 5月, 2016 3 次提交
-
-
由 Liu Ying 提交于
Since the drm core sets plane->crtc correctly, we don't need to do that. Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Liu Ying 提交于
Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Philipp Zabel 提交于
Advertise the DRM_FORMAT_UYVY and DRM_FORMAT_VYUY formats to userspace. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 31 3月, 2016 5 次提交
-
-
由 Liu Ying 提交于
Just as the function ipu_dmfc_config_wait4eot() tells, the DMFC wait4eot bit depends on the number of DMFC slots to be used, so it should be called after the slots are determined in the function ipu_dmfc_alloc_bandwidth(). Based on tests, this patch may eliminate display distortion issue on overlay plane with small resolutions. To reproduce the issue, we may run this drm modetest case - 'modetest -P 19:64x64'. Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Liu Ying 提交于
The function name 'ipu_dmfc_config_wait4eot' matches the implementation of the function better than 'ipu_dmfc_init_channel', since it only touches the wait4eot bits. Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Liu Ying 提交于
Since the function ipu_dmfc_init_channel() always returns zero, we may change the return type to void to simplify the code. Signed-off-by: NLiu Ying <gnuiyl@gmail.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Philipp Zabel 提交于
The driver already advertises multi-planar YUV support, but previously the U/V offset and stride setup was missing. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Philipp Zabel 提交于
The IPU addresses multiplanar formats using a base address and relative offsets for the secondary planes. Since those offsets must be positive and not too large, and none of the plane parameters except the base address may be changed while scanout is active, store the pitches and u/v offsets and check all values against IDMAC limitations. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 01 3月, 2016 1 次提交
-
-
由 Liu Ying 提交于
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: NLiu Ying <Ying.Liu@freescale.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 10 2月, 2016 1 次提交
-
-
由 Enrico Jorns 提交于
DRM_FORMAT_RGB565 is missing from ipu_plane_formats. The support is there, just need to make it available to userspace. Signed-off-by: NEnrico Jorns <ejo@pengutronix.de> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 11 12月, 2015 1 次提交
-
-
由 Ville Syrjälä 提交于
Done with coccinelle for the most part. It choked on msm/mdp/mdp5/mdp5_plane.c like so: "BAD:!!!!! enum drm_plane_type type;" No idea how to deal with that, so I just fixed that up by hand. Also it thinks '...' is part of the semantic patch, so I put an 'int DOTDOTDOT' placeholder in its place and got rid of it with sed afterwards. I didn't convert drm_plane_init() since passing the varargs through would mean either cpp macros or va_list, and I figured we don't care about these legacy functions enough to warrant the extra pain. @@ typedef uint32_t; identifier dev, plane, possible_crtcs, funcs, formats, format_count, type; @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane, unsigned long possible_crtcs, const struct drm_plane_funcs *funcs, const uint32_t *formats, unsigned int format_count, enum drm_plane_type type + ,const char *name, int DOTDOTDOT ) { ... } @@ identifier dev, plane, possible_crtcs, funcs, formats, format_count, type; @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane, unsigned long possible_crtcs, const struct drm_plane_funcs *funcs, const uint32_t *formats, unsigned int format_count, enum drm_plane_type type + ,const char *name, int DOTDOTDOT ); @@ expression E1, E2, E3, E4, E5, E6, E7; @@ drm_universal_plane_init(E1, E2, E3, E4, E5, E6, E7 + ,NULL ) v2: Split crtc and plane changes apart Pass NUL for no-name instead of "" Leave drm_plane_init() alone v3: Add ', or NULL...' to @name kernel doc (Jani) Annotate the function with __printf() attribute (Jani) Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1449670795-2853-1-git-send-email-ville.syrjala@linux.intel.com
-
- 19 11月, 2015 1 次提交
-
-
由 Philipp Zabel 提交于
Use drm_universal_plane_init to create the planes, create the primary plane first and use drm_crtc_init_with_planes to associate it with the crtc. This gets rid of the unused fallback primary plane previously created by drm_crtc_init and fixes a NULL pointer dereference issue that can be triggered by a modeset from userspace when fbdev helpers are enabled [1]. [1] https://lkml.org/lkml/2015/11/4/107Reported-by: NLiu Ying <Ying.Liu@freescale.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Acked-by: NLiu Ying <Ying.Liu@freescale.com>
-
- 31 10月, 2015 3 次提交
-
-
由 Lucas Stach 提交于
This patch allows to use the ARGB4444 color format on planes. Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Philipp Zabel 提交于
This patch allows to use the RGBX and RGBA 8:8:8:8 formats. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Philipp Zabel 提交于
This patch enables the ARGB1555, ABGR1555, RGBA5551, and BGRA5551 formats to be used on planes. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 31 3月, 2015 1 次提交
-
-
由 Philipp Zabel 提交于
This patch allows interlaced frame buffer scanout for interlaced output via HDMI or TV-Encoder. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 26 11月, 2014 1 次提交
-
-
由 Philipp Zabel 提交于
The imx-drm driver was put into staging mostly for the following reasons, all of which have been addressed or superseded: - convert the irq driver to use linear irq domains - work out the device tree bindings, this lead to the common of_graph bindings being used - factor out common helper functions, this mostly resulted in the component framework and drm of_graph helpers. Before adding new fixes, and certainly before adding new features, move it into its proper place below drivers/gpu/drm. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NDave Airlie <airlied@redhat.com>
-
- 04 11月, 2014 4 次提交
-
-
由 Philipp Zabel 提交于
While the DMA channel is running, it is not allowed to change anything but the inactive (double) buffer base address, so resizing a plane or changing to a frame buffer with different pixel format is not possible. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Philipp Zabel 提交于
This allows to update the buffer base address while the DMA channel is running. It is needed to flip the frame buffer of an active plane. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Philipp Zabel 提交于
Setting the stride can only be done on inactive channels, while the buffer base address can also be updated for running channels using the hardware double buffering feature. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Philipp Zabel 提交于
For the overlay plane scanning out a framebuffer with an alpha component, enable the DP local alpha feature on the partial plane. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 24 9月, 2014 1 次提交
-
-
由 Shawn Guo 提交于
All those ipu_*_put() calls in ipu_plane_dpms() are unnecessary, because the only occurrence of ipu_plane_dpms() with 'mode' not being DRM_MODE_DPMS_ON is in function ipu_disable_plane(), which already has a ipu_plane_put_resources() call to put those ipu resources right after ipu_plane_dpms(). So with those redundant ipu_*_put() calls removed from ipu_plane_dpms(), the only left code in the function is ipu_plane_enable|disable(). Thus, we can just call ipu_plane_enable|disable() as needed directly and remove the ipu_plane_dpms() function completely. Suggested-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NShawn Guo <shawn.guo@freescale.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 09 9月, 2014 1 次提交
-
-
由 Russell King 提交于
When unbinding imx-drm, the following oops was observed: Unable to handle kernel NULL pointer dereference at virtual address 00000004 pgd = e995c000 [00000004] *pgd=4fea5831 Internal error: Oops: 817 [#1] SMP ARM Modules linked in: bnep rfcomm bluetooth nfsd exportfs hid_cypress brcmfmac brcmutil snd_soc_fsl_ssi snd_soc_fsl_spdif imx_pcm_fiq imx_pcm_dma snd_soc_sgtl5000 imx_sdma imx2_wdt imx_ldb(C) imx_thermal snd_soc_imx_sgtl5000 snd_soc_imx_spdif snd_soc_imx_audmux CPU: 1 PID: 779 Comm: bash Tainted: G C 3.16.0-rc2+ #1230 task: ea9eb180 ti: ea378000 task.ti: ea378000 PC is at ipu_dp_put+0x10/0x18 LR is at ipu_plane_dpms+0x60/0x8c pc : [<c0350d20>] lr : [<c04bd9e8>] psr: 200f0013 sp : ea379d80 ip : ea379d90 fp : ea379d8c r10: 00100100 r9 : 00000000 r8 : 00200200 r7 : e9ba0264 r6 : e9ba01f8 r5 : 00000000 r4 : ea34b800 r3 : 00000000 r2 : 00000000 r1 : 0000009b r0 : 00000000 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user Control: 10c53c7d Table: 3995c04a DAC: 00000015 Process bash (pid: 779, stack limit = 0xea378240) Stack: (0xea379d80 to 0xea37a000) ... Backtrace: [<c0350d10>] (ipu_dp_put) from [<c04bd9e8>] (ipu_plane_dpms+0x60/0x8c) [<c04bd988>] (ipu_plane_dpms) from [<c04bda40>] (ipu_disable_plane+0x2c/0x60) [<c04bda14>] (ipu_disable_plane) from [<c04bda9c>] (ipu_plane_destroy+0x28/0x60) [<c04bda74>] (ipu_plane_destroy) from [<c033ff84>] (drm_mode_config_cleanup+0x1b8/0x250) [<c033fdcc>] (drm_mode_config_cleanup) from [<c04bc234>] (imx_drm_driver_unload+0x44/0x4c) [<c04bc1f0>] (imx_drm_driver_unload) from [<c03394a4>] (drm_dev_unregister+0x2c/0xa0) [<c0339478>] (drm_dev_unregister) from [<c0339f8c>] (drm_put_dev+0x30/0x6c) [<c0339f5c>] (drm_put_dev) from [<c04bc1cc>] (imx_drm_unbind+0x14/0x18) [<c04bc1b8>] (imx_drm_unbind) from [<c03530b4>] (component_master_del+0xbc/0xd8) ... Code: e1a0c00d e92dd800 e24cb004 e3a03000 (e5c03004) This is caused by a missing check in ipu_plane_dpms for a NULL pointer. Fixes: b8d181e4 ("staging: drm/imx: add drm plane support") Cc: <stable@vger.kernel.org> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 18 8月, 2014 1 次提交
-
-
由 Steve Longerbeam 提交于
The ipu_cpmem_*() calls now take a channel pointer instead of a pointer into cpmem for that channel. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 04 6月, 2014 1 次提交
-
-
由 Philipp Zabel 提交于
The i.MX Image Processing Unit (IPU) contains a number of image processing blocks that sit right in the middle between DRM and V4L2. Some of the modules, such as Display Controller, Processor, and Interface (DC, DP, DI) or CMOS Sensor Interface (CSI) and their FIFOs could be assigned to either framework, but others, such as the dma controller (IDMAC) and image converter (IC) can be used by both. The IPUv3 core driver provides an internal API to access the modules, to be used by both DRM and V4L2 IPUv3 drivers. Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 26 4月, 2014 1 次提交
-
-
由 Philipp Zabel 提交于
The former has to be done before disabling the DMFC, the latter has to be done afterwards. Otherwise the DMFC FIFOs never get cleared properly. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
- 28 3月, 2014 1 次提交
-
-
由 Lespiau, Damien 提交于
There are only a few users of the DRM_LOG_KMS() macro. We can simplify the DRM code a bit by replacing them by DRM_DEBUG_KMS(). Cc: Philipp Zabel <p.zabel@pengutronix.de> Cc: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com> Acked-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NDave Airlie <airlied@redhat.com>
-
- 28 2月, 2014 1 次提交
-
-
由 Fabio Estevam 提交于
Fix the following static checker warning: drivers/staging/imx-drm/ipuv3-plane.c:75:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'dma_addr_t' [-Wformat] Use %pad to print 'dma_addr_t'. Reported-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NFabio Estevam <fabio.estevam@freescale.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 14 1月, 2014 3 次提交
-
-
由 Lucas Stach 提交于
CRTC offsets are only set with the initial modeset, any subseqent pageflips assume them to be kept the same, so we need to remember the current state until another modeset changes it. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Lucas Stach 提交于
We didn't take the pixel format into account, so x-direction offsets were off by a factor of 2 or 4 for 16bpp and 32bpp framebuffers. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Philipp Zabel 提交于
Even though we do not enable the hardware double buffering feature right now, set the second base address pointer (EBA1) as well to increase robustness. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 12 10月, 2013 1 次提交
-
-
由 Philipp Zabel 提交于
This patch adds support for a drm overlay plane on DI0 using the DP. In principle, the overlay plane could also be used on DI1, but to switch the overlay plane between display interfaces, the base planes would have to be exchanged transparently while both display interfaces are inactive. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-