- 06 6月, 2017 1 次提交
-
-
由 Marek Vasut 提交于
The description of the CSI_SEL bit in the i.MX6 reference manual is incorrect. It states "This bit defines which CSI is the input to the IC. This bit is effective only if IC_INPUT is bit cleared". From experiment it was found this is in fact not correct. The CSI_SEL bit selects which CSI is input to _both_ the VDIC _and_ the IC. If the IC_INPUT bit is set so that the IC is receiving from the VDIC, the IC ignores the CSI_SEL bit, but CSI_SEL still selects which CSI the VDIC receives from in that case. Signed-off-by: NMarek Vasut <marex@denx.de> Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 04 4月, 2017 1 次提交
-
-
由 Lucas Stach 提交于
The PRE/PRG drivers, which need the DRM infrastructure, are only used from the output path, so we skip building them into the ipu-v3 driver if CONFIG_DRM is not enabled. Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 16 3月, 2017 2 次提交
-
-
由 Lucas Stach 提交于
The i.MX6 QuadPlus IPU needs to PRG unit to gain access to the data bus. Make sure it is present and available to be used. Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Lucas Stach 提交于
This adds support for the i.MX6 QUadPlus PRG unit. It glues together the IPU and the PRE units. Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> --- v4: add missing ipu_soc->prg_priv
-
- 15 3月, 2017 3 次提交
-
-
由 Lucas Stach 提交于
This adds support for the i.MX6 QuadPlus PRE units. Currently only linear prefetch into SRAM is supported, other modes of operation like the tiled-to-linear conversion will be added later. Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Philipp Zabel 提交于
The IPUv3 can read 8-bit alpha values from a separate IDMAC channel driven by the Alpha Transparency Controller (ATC) for the graphics IDMAC channels. This allows to reduce memory bandwidth via a conditional read mechanism or to support planar YUV formats with alpha transparency. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Philipp Zabel 提交于
When disabling the foreground DP channel during a modeset, the DC is already disabled without waiting for end of frame. There is no reason to wait for a frame boundary before updating the DP registers in that case. Add support to apply updates immediately. No functional changes, yet. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Reviewed-by: NLucas Stach <l.stach@pengutronix.de>
-
- 17 2月, 2017 1 次提交
-
-
由 Philipp Zabel 提交于
Setting dev->of_node changes the modalias and breaks module autoloading. Since there is an of_node field in the platform data passed to child devices, we don't even need this anymore. Suggested-by: NRussell King <linux@armlinux.org.uk> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 20 10月, 2016 2 次提交
-
-
由 Philipp Zabel 提交于
If we want to stop resetting the IPU in the future, masking all interrupts before registering the irq handlers will not be enough to avoid spurious interrupts. We also have to clear them. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Acked-by: NLiu Ying <gnuiyl@gmail.com>
-
由 Philipp Zabel 提交于
The IDMAC does support reading and writing DRM_FORMAT_YUV444 and DRM_FORMAT_YVU444. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Acked-by: NLiu Ying <gnuiyl@gmail.com>
-
- 19 9月, 2016 2 次提交
-
-
由 Steve Longerbeam 提交于
This patch implements image conversion support using the IC tasks, with tiling to support scaling to and from images up to 4096x4096. Image rotation is also supported. Image conversion requests are added to a run queue under the IC tasks. The internal API is subsystem agnostic (no V4L2 dependency except for the use of V4L2 fourcc pixel formats). Callers prepare for image conversion by calling ipu_image_convert_prepare(), which initializes the parameters of the conversion. The caller passes in the ipu and IC task to use for the conversion, the input and output image formats, a rotation mode, and a completion callback and completion context pointer: struct ipu_image_converter_ctx * ipu_image_convert_prepare(struct ipu_soc *ipu, enum ipu_ic_task ic_task, struct ipu_image *in, struct ipu_image *out, enum ipu_rotate_mode rot_mode, ipu_image_converter_cb_t complete, void *complete_context); A new conversion context is created that is added to an IC task context queue. The caller is given the new conversion context, which can then be passed to the further APIs: int ipu_image_convert_queue(struct ipu_image_converter_run *run); This queues the given image conversion request run to a run queue, and starts the conversion immediately if the run queue is empty. Only the physaddr's of the input and output image buffers are needed, since the conversion context was created previously with ipu_image_convert_prepare(). When the conversion completes, the run pointer is returned to the completion callback. void ipu_image_convert_abort(struct ipu_image_converter_ctx *ctx); This will abort any active or pending conversions for this context. Any currently active or pending runs belonging to this context are returned via the completion callback with an error status. void ipu_image_convert_unprepare(struct ipu_image_converter_ctx *ctx); Unprepares the conversion context. Any active or pending runs will be aborted by calling ipu_image_convert_abort(). Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 LABBE Corentin 提交于
of_match_device could return NULL, and so cause a NULL pointer dereference later. For fixing this problem, we use of_device_get_match_data(), this will simplify the code a little by using a standard function for getting the match data. Testing the return value of of_device_get_match_data is also necessary for avoiding a second NULL deref later on devtype. Signed-off-by: NLABBE Corentin <clabbe.montjoie@gmail.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 29 8月, 2016 2 次提交
-
-
由 Steve Longerbeam 提交于
Adds functions to link and unlink source channels to sink channels in the FSU: int ipu_fsu_link(struct ipu_soc *ipu, int src_ch, int sink_ch); int ipu_fsu_unlink(struct ipu_soc *ipu, int src_ch, int sink_ch); The channels numbers are usually IDMAC channels, but they can also be channels that do not transfer data to or from memory. The following convenience functions can be used in place of ipu_fsu_link/unlink() when both source and sink channels are IDMAC channels: int ipu_idmac_link(struct ipuv3_channel *src, struct ipuv3_channel *sink); int ipu_idmac_unlink(struct ipuv3_channel *src, struct ipuv3_channel *sink); So far the following links are supported: IPUV3_CHANNEL_IC_PRP_ENC_MEM -> IPUV3_CHANNEL_MEM_ROT_ENC PUV3_CHANNEL_IC_PRP_VF_MEM -> IPUV3_CHANNEL_MEM_ROT_VF IPUV3_CHANNEL_IC_PP_MEM -> IPUV3_CHANNEL_MEM_ROT_PP IPUV3_CHANNEL_CSI_DIRECT -> IPUV3_CHANNEL_CSI_VDI_PREV More links can be added to the fsu_link_info[] array. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Adds the Video Deinterlacer (VDIC) unit. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 08 8月, 2016 2 次提交
-
-
由 Steve Longerbeam 提交于
Rename the CSI client device in the client_reg[] table to "imx-ipuv3-csi". Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Adds of-alias id to ipu_soc and retrieve with ipu_get_num(). Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 23 5月, 2016 1 次提交
-
-
由 Philipp Zabel 提交于
The component master driver imx-drm-core matches component devices using their of_node. Since commit 950b410dd1ab ("gpu: ipu-v3: Fix imx-ipuv3-crtc module autoloading"), the imx-ipuv3-crtc dev->of_node is not set during probing. Before that, of_node was set and caused an of: modalias to be used instead of the platform: modalias, which broke module autoloading. On the other hand, if dev->of_node is not set yet when the imx-ipuv3-crtc probe function calls component_add, component matching in imx-drm-core fails. While dev->of_node will be set once the next component tries to bring up the component master, imx-drm-core component binding will never succeed if one of the crtc devices is probed last. Add of_node to the component platform data and match against the pdata->of_node instead of dev->of_node in imx-drm-core to work around this problem. Cc: <stable@vger.kernel.org> # 4.4.x Fixes: 950b410dd1ab ("gpu: ipu-v3: Fix imx-ipuv3-crtc module autoloading") Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Tested-by: NFabio Estevam <fabio.estevam@nxp.com> Tested-by: NLothar Waßmann <LW@KARO-electronics.de> Tested-by: NHeiko Schocher <hs@denx.de> Tested-by: NChris Ruehl <chris.ruehl@gtsys.com.hk>
-
- 05 5月, 2016 1 次提交
-
-
由 Philipp Zabel 提交于
If of_node is set before calling platform_device_add, the driver core will try to use of: modalias matching, which fails because the device tree nodes don't have a compatible property set. This patch fixes imx-ipuv3-crtc module autoloading by setting the of_node property only after the platform modalias is set. Fixes: 304e6be6 ("gpu: ipu-v3: Assign of_node of child platform devices to corresponding ports") Reported-by: NDennis Gilmore <dennis@ausil.us> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Tested-By: NDennis Gilmore <dennis@ausil.us> Cc: stable@vger.kernel.org # 4.4+ Signed-off-by: NDave Airlie <airlied@redhat.com>
-
- 10 2月, 2016 2 次提交
-
-
由 David Jander 提交于
If we don't come out of a clean reset, make sure no IRQ is fired before everything is setup by resetting the IPU before activating the interrupt handlers. Signed-off-by: NDavid Jander <david@protonic.nl> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Philipp Zabel 提交于
The port nodes are documented as optional, treat them accordingly. Reported-by: NMartin Fuzzey <mfuzzey@parkeon.com> Reported-by: NChris Healy <Chris.Healy@zii.aero> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Fixes: 304e6be6 ("gpu: ipu-v3: Assign of_node of child platform devices to corresponding ports")
-
- 24 11月, 2015 2 次提交
-
-
由 Philipp Zabel 提交于
The crtc child device driver shouldn't have to modify the of_node of its platform device in the probe function. Instead, let the IPU core driver set the of_node when the platform device is created. Also reorder the client_reg array so the elements are in port id order (CSIs first, then DIs). Suggested-by: NRussell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de> Acked-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Philipp Zabel 提交于
This is not used, so remove it. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 31 10月, 2015 2 次提交
-
-
由 Lucas Stach 提交于
This patch adds support for the ARGB4444 color format. Signed-off-by: NLucas Stach <l.stach@pengutronix.de> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Philipp Zabel 提交于
This patch adds support for ARGB1555, ABGR1555, RGBA5551, and BGRA5551 in-memory formats. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 16 9月, 2015 2 次提交
-
-
由 Rob Herring 提交于
set_irq_flags is ARM specific with custom flags which have genirq equivalents. Convert drivers to use the genirq interfaces directly, so we can kill off set_irq_flags. The translation of flags is as follows: IRQF_VALID -> !IRQ_NOREQUEST IRQF_PROBE -> !IRQ_NOPROBE IRQF_NOAUTOEN -> IRQ_NOAUTOEN For IRQs managed by an irqdomain, the irqdomain core code handles clearing and setting IRQ_NOREQUEST already, so there is no need to do this in .map() functions and we can simply remove the set_irq_flags calls. Some users also modify IRQ_NOPROBE and this has been maintained although it is not clear that is really needed. There appears to be a great deal of blind copy and paste of this code. Signed-off-by: NRob Herring <robh@kernel.org> Cc: linux-arm-kernel@lists.infradead.org Cc: Russell King <linux@arm.linux.org.uk> Cc: David Airlie <airlied@linux.ie> Cc: dri-devel@lists.freedesktop.org Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
-
由 Thomas Gleixner 提交于
Most interrupt flow handlers do not use the irq argument. Those few which use it can retrieve the irq number from the irq descriptor. Remove the argument. Search and replace was done with coccinelle and some extra helper scripts around it. Thanks to Julia for her help! Signed-off-by: NThomas Gleixner <tglx@linutronix.de> Cc: Julia Lawall <Julia.Lawall@lip6.fr> Cc: Jiang Liu <jiang.liu@linux.intel.com>
-
- 16 7月, 2015 1 次提交
-
-
由 Jiang Liu 提交于
Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we already have a pointer to corresponding irq_desc. This is also a preparation for the removal of the 'irq' argument from interrupt flow handlers. Signed-off-by: NJiang Liu <jiang.liu@linux.intel.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Vinod Koul <vinod.koul@intel.com> Cc: dmaengine@vger.kernel.org Signed-off-by: NThomas Gleixner <tglx@linutronix.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 10 7月, 2015 1 次提交
-
-
由 Russell King 提交于
Even with the oops fixed by a previous patch, the system still fails to kexec, due to a stuck chained interrupt locking the system. We must disable the child interrupts prior to setting up the irq chip to ensure we don't get stuck here. Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 18 6月, 2015 1 次提交
-
-
由 Russell King 提交于
The IPU code was installing its chained interrupt handler (which enables the interrupt) before it was setting its data, which provokes an oops on kexec. Fix this by converting to irq_set_chained_handler_and_data(). [drm] Initialized drm 1.1.0 20060810 imx-drm display-subsystem: parent device of /soc/aips-bus@02000000/ldb@020e0008/lvds-channel@1 is not available imx-drm display-subsystem: parent device of /soc/aips-bus@02000000/ldb@020e0008/lvds-channel@1 is not available Unable to handle kernel NULL pointer dereference at virtual address 00000070 pgd = c0004000 [00000070] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.1.0-rc6+ #1693 Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) task: d74c0000 ti: d74aa000 task.ti: d74aa000 PC is at ipu_irq_handle+0x28/0xd8 LR is at ipu_irq_handler+0x6c/0xc0 pc : [<c03c56d8>] lr : [<c03c58a4>] psr: 200001d3 sp : d74abbd0 ip : d74abc00 fp : d74abbfc r10: 000001e0 r9 : c0085154 r8 : 00000009 r7 : 00000000 r6 : 00000000 r5 : d74abc04 r4 : c0a6b6a8 r3 : 00000000 r2 : 00000009 r1 : d74abc04 r0 : 00000000 Flags: nzCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment kernel Control: 10c5387d Table: 10004059 DAC: 00000015 Process swapper/0 (pid: 1, stack limit = 0xd74aa210) Stack: (0xd74abbd0 to 0xd74ac000) Backtrace: [<c03c56b0>] (ipu_irq_handle) from [<c03c58a4>] (ipu_irq_handler+0x6c/0xc0) [<c03c5838>] (ipu_irq_handler) from [<c0080154>] (generic_handle_irq+0x28/0x38) [<c008012c>] (generic_handle_irq) from [<c0080288>] (__handle_domain_irq+0x5c/0xb8) [<c008022c>] (__handle_domain_irq) from [<c0009428>] (gic_handle_irq+0x28/0x68) [<c0009400>] (gic_handle_irq) from [<c0013dc4>] (__irq_svc+0x44/0x5c) [<c07638fc>] (_raw_spin_unlock_irqrestore) from [<c00803bc>] (__irq_put_desc_unlock+0x1c/0x40) [<c00803a0>] (__irq_put_desc_unlock) from [<c00841f4>] (__irq_set_handler+0x54/0x5c) [<c00841a0>] (__irq_set_handler) from [<c03c5f48>] (ipu_probe+0x29c/0x708) [<c03c5cac>] (ipu_probe) from [<c03d3848>] (platform_drv_probe+0x50/0xac) [<c03d37f8>] (platform_drv_probe) from [<c03d1f3c>] (driver_probe_device+0x1d4/0x278) Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk> Cc: Alexandre Courbot <gnurou@gmail.com> Cc: Hans Ulli Kroll <ulli.kroll@googlemail.com> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Lee Jones <lee.jones@linaro.org> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/E1Z4z02-0002SI-Br@rmk-PC.arm.linux.org.ukSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
-
- 27 1月, 2015 1 次提交
-
-
由 Philipp Zabel 提交于
The IC register offset is at +0x20000 relative to the control module registers on all IPUv3 versions. This patch fixes wrong values for i.MX51 and i.MX53. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
- 02 9月, 2014 10 次提交
-
-
由 Steve Longerbeam 提交于
Adds ipu_dump() which dumps IPU register state to debug. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Adds support for the following planar and partial-planar formats: YUV422 NV12 NV16 Signed-off-by: NDmitry Eremin-Solenikov <dmitry_eremin@mentor.com> Signed-off-by: NMohsin Kazmi <mohsin_kazmi@mentor.com> Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Unified base offset and Y plane offset into a single variable, moved all ipu_cpmem_set_buffer calls to a single location. Removed NV21 and NV61 for now. The IDMAC doesn't understand U/V order for chroma interleaved formats, so we'd need to work around this by implenting U/V switching via the CSC unit. Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Adds ipu_idmac_lock_enable(), which enables or disables channel burst locking. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Adds the function ipu_idmac_enable_watermark(), which enables or disables watermarking in the IDMAC channel. Enabling watermarking can increase a channel's AXI bus arbitration priority. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Adds ipu_stride_to_bytes(), which converts a pixel stride to bytes, suitable for passing to cpmem. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Adds __ipu_idmac_reset_current_buffer() that resets a channel's internal current buffer pointer so that transfers start from buffer 0 on the next channel enable. This operation is required for channel linking to work correctly, for instance video capture pipelines that carry out image rotations will fail after the first streaming unless this function is called for each channel before re-enabling the channels. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Add the reverse of ipu_idmac_select_buffer(), that is, clear a buffer ready status in a channel. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Add ipu_idmac_buffer_is_ready(), returns true if the given buffer in the given channel is set ready (owned by IPU), or false if not ready (owned by CPU core). Support has been added for third buffer, there is no support yet for triple-buffering in idmac channels, but this function checks buffer-ready for third buffer in case this support is added later. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Add simple helper function returning true if passed pixel format is one of supported planar ones. Signed-off-by: NDmitry Eremin-Solenikov <dmitry_eremin@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-
由 Steve Longerbeam 提交于
Add two functions: - ipu_degrees_to_rot_mode(): converts a degrees, hflip, and vflip setting to an IPU rotation mode. - ipu_rot_mode_to_degrees(): converts an IPU rotation mode with given hflip and vflip settings to degrees. Signed-off-by: NSteve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
-