<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/gpu/ipu-v3/ipu-common.c, branch v4.2</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>GPU: ipu: fix lockup caused by pending chained interrupts</title>
<updated>2015-07-10T09:02:46+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2015-06-16T22:29:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=510e6426d32baf46b6df929e6689ef65fcb58a2c'/>
<id>510e6426d32baf46b6df929e6689ef65fcb58a2c</id>
<content type='text'>
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: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>GPU: ipu: Fix race in installing IPU chained IRQ handler</title>
<updated>2015-06-18T12:03:08+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2015-06-16T22:06:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=86f5e73304651c3eeec0a1fce90bb3e1d610e3b9'/>
<id>86f5e73304651c3eeec0a1fce90bb3e1d610e3b9</id>
<content type='text'>
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 : [&lt;c03c56d8&gt;]    lr : [&lt;c03c58a4&gt;]    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:
[&lt;c03c56b0&gt;] (ipu_irq_handle) from [&lt;c03c58a4&gt;] (ipu_irq_handler+0x6c/0xc0)
[&lt;c03c5838&gt;] (ipu_irq_handler) from [&lt;c0080154&gt;] (generic_handle_irq+0x28/0x38)
[&lt;c008012c&gt;] (generic_handle_irq) from [&lt;c0080288&gt;] (__handle_domain_irq+0x5c/0xb8)
[&lt;c008022c&gt;] (__handle_domain_irq) from [&lt;c0009428&gt;] (gic_handle_irq+0x28/0x68)
[&lt;c0009400&gt;] (gic_handle_irq) from [&lt;c0013dc4&gt;] (__irq_svc+0x44/0x5c)
[&lt;c07638fc&gt;] (_raw_spin_unlock_irqrestore) from [&lt;c00803bc&gt;] (__irq_put_desc_unlock+0x1c/0x40)
[&lt;c00803a0&gt;] (__irq_put_desc_unlock) from [&lt;c00841f4&gt;] (__irq_set_handler+0x54/0x5c)
[&lt;c00841a0&gt;] (__irq_set_handler) from [&lt;c03c5f48&gt;] (ipu_probe+0x29c/0x708)
[&lt;c03c5cac&gt;] (ipu_probe) from [&lt;c03d3848&gt;] (platform_drv_probe+0x50/0xac)
[&lt;c03d37f8&gt;] (platform_drv_probe) from [&lt;c03d1f3c&gt;] (driver_probe_device+0x1d4/0x278)

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Cc: Alexandre Courbot &lt;gnurou@gmail.com&gt;
Cc: Hans Ulli Kroll &lt;ulli.kroll@googlemail.com&gt;
Cc: Jason Cooper &lt;jason@lakedaemon.net&gt;
Cc: Lee Jones &lt;lee.jones@linaro.org&gt;
Cc: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/E1Z4z02-0002SI-Br@rmk-PC.arm.linux.org.uk
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 : [&lt;c03c56d8&gt;]    lr : [&lt;c03c58a4&gt;]    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:
[&lt;c03c56b0&gt;] (ipu_irq_handle) from [&lt;c03c58a4&gt;] (ipu_irq_handler+0x6c/0xc0)
[&lt;c03c5838&gt;] (ipu_irq_handler) from [&lt;c0080154&gt;] (generic_handle_irq+0x28/0x38)
[&lt;c008012c&gt;] (generic_handle_irq) from [&lt;c0080288&gt;] (__handle_domain_irq+0x5c/0xb8)
[&lt;c008022c&gt;] (__handle_domain_irq) from [&lt;c0009428&gt;] (gic_handle_irq+0x28/0x68)
[&lt;c0009400&gt;] (gic_handle_irq) from [&lt;c0013dc4&gt;] (__irq_svc+0x44/0x5c)
[&lt;c07638fc&gt;] (_raw_spin_unlock_irqrestore) from [&lt;c00803bc&gt;] (__irq_put_desc_unlock+0x1c/0x40)
[&lt;c00803a0&gt;] (__irq_put_desc_unlock) from [&lt;c00841f4&gt;] (__irq_set_handler+0x54/0x5c)
[&lt;c00841a0&gt;] (__irq_set_handler) from [&lt;c03c5f48&gt;] (ipu_probe+0x29c/0x708)
[&lt;c03c5cac&gt;] (ipu_probe) from [&lt;c03d3848&gt;] (platform_drv_probe+0x50/0xac)
[&lt;c03d37f8&gt;] (platform_drv_probe) from [&lt;c03d1f3c&gt;] (driver_probe_device+0x1d4/0x278)

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Cc: Alexandre Courbot &lt;gnurou@gmail.com&gt;
Cc: Hans Ulli Kroll &lt;ulli.kroll@googlemail.com&gt;
Cc: Jason Cooper &lt;jason@lakedaemon.net&gt;
Cc: Lee Jones &lt;lee.jones@linaro.org&gt;
Cc: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/E1Z4z02-0002SI-Br@rmk-PC.arm.linux.org.uk
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpu: ipu-v3: Fix IC control register offset</title>
<updated>2015-01-27T15:28:01+00:00</updated>
<author>
<name>Philipp Zabel</name>
<email>p.zabel@pengutronix.de</email>
</author>
<published>2014-09-22T15:15:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a49e7c0d079610062048a4ed1cff2bb09436127c'/>
<id>a49e7c0d079610062048a4ed1cff2bb09436127c</id>
<content type='text'>
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: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'ipu-fixes-3.18' of git://git.pengutronix.de/git/pza/linux into drm-next</title>
<updated>2014-10-07T04:31:14+00:00</updated>
<author>
<name>Dave Airlie</name>
<email>airlied@redhat.com</email>
</author>
<published>2014-10-07T04:31:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=46d987af7649ef9b2f1d1467b9249fb6e24d2658'/>
<id>46d987af7649ef9b2f1d1467b9249fb6e24d2658</id>
<content type='text'>
IPUv3 fixes for v3.18

* tag 'ipu-fixes-3.18' of git://git.pengutronix.de/git/pza/linux:
  gpu: ipu-v3: Kconfig: Remove SOC_IMX6SL from IMX_IPUV3_CORE Kconfig
  gpu: ipu-v3: ipu-smfc: Do not leave DEBUG defined
  gpu: ipu-v3: Return proper error on ipu_add_client_devices error path
  gpu: ipu-v3: Select GENERIC_IRQ_CHIP to fix build error
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
IPUv3 fixes for v3.18

* tag 'ipu-fixes-3.18' of git://git.pengutronix.de/git/pza/linux:
  gpu: ipu-v3: Kconfig: Remove SOC_IMX6SL from IMX_IPUV3_CORE Kconfig
  gpu: ipu-v3: ipu-smfc: Do not leave DEBUG defined
  gpu: ipu-v3: Return proper error on ipu_add_client_devices error path
  gpu: ipu-v3: Select GENERIC_IRQ_CHIP to fix build error
</pre>
</div>
</content>
</entry>
<entry>
<title>gpu: ipu-v3: Add ipu_dump()</title>
<updated>2014-09-02T12:55:56+00:00</updated>
<author>
<name>Steve Longerbeam</name>
<email>slongerbeam@gmail.com</email>
</author>
<published>2014-06-26T01:05:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=3feb049f378da6aa1209e05ef5c656a1f26a9183'/>
<id>3feb049f378da6aa1209e05ef5c656a1f26a9183</id>
<content type='text'>
Adds ipu_dump() which dumps IPU register state to debug.

Signed-off-by: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds ipu_dump() which dumps IPU register state to debug.

Signed-off-by: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpu: ipu-v3: Add more planar formats support</title>
<updated>2014-09-02T12:55:55+00:00</updated>
<author>
<name>Steve Longerbeam</name>
<email>slongerbeam@gmail.com</email>
</author>
<published>2014-06-26T01:05:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9a34cef01392358421b764645073601c352d0a85'/>
<id>9a34cef01392358421b764645073601c352d0a85</id>
<content type='text'>
Adds support for the following planar and partial-planar formats:

YUV422
NV12
NV16

Signed-off-by: Dmitry Eremin-Solenikov &lt;dmitry_eremin@mentor.com&gt;
Signed-off-by: Mohsin Kazmi &lt;mohsin_kazmi@mentor.com&gt;
Signed-off-by: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;

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: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds support for the following planar and partial-planar formats:

YUV422
NV12
NV16

Signed-off-by: Dmitry Eremin-Solenikov &lt;dmitry_eremin@mentor.com&gt;
Signed-off-by: Mohsin Kazmi &lt;mohsin_kazmi@mentor.com&gt;
Signed-off-by: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;

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: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpu: ipu-v3: Add ipu_idmac_lock_enable()</title>
<updated>2014-09-02T12:55:51+00:00</updated>
<author>
<name>Steve Longerbeam</name>
<email>slongerbeam@gmail.com</email>
</author>
<published>2014-06-26T01:05:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=4fd1a07af59bf5e1cfb73f7035bf525522cebc76'/>
<id>4fd1a07af59bf5e1cfb73f7035bf525522cebc76</id>
<content type='text'>
Adds ipu_idmac_lock_enable(), which enables or disables channel
burst locking.

Signed-off-by: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds ipu_idmac_lock_enable(), which enables or disables channel
burst locking.

Signed-off-by: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpu: ipu-v3: Add ipu_idmac_enable_watermark()</title>
<updated>2014-09-02T12:55:50+00:00</updated>
<author>
<name>Steve Longerbeam</name>
<email>slongerbeam@gmail.com</email>
</author>
<published>2014-06-26T01:05:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2bcf577eb6361827f8347529803528031033cb83'/>
<id>2bcf577eb6361827f8347529803528031033cb83</id>
<content type='text'>
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: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpu: ipu-v3: Add ipu_stride_to_bytes()</title>
<updated>2014-09-02T12:55:50+00:00</updated>
<author>
<name>Steve Longerbeam</name>
<email>slongerbeam@gmail.com</email>
</author>
<published>2014-06-26T01:05:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6930afdccfd2b3e6669c305d97958d81cf0d072e'/>
<id>6930afdccfd2b3e6669c305d97958d81cf0d072e</id>
<content type='text'>
Adds ipu_stride_to_bytes(), which converts a pixel stride to bytes,
suitable for passing to cpmem.

Signed-off-by: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds ipu_stride_to_bytes(), which converts a pixel stride to bytes,
suitable for passing to cpmem.

Signed-off-by: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpu: ipu-v3: Add __ipu_idmac_reset_current_buffer()</title>
<updated>2014-09-02T12:55:49+00:00</updated>
<author>
<name>Steve Longerbeam</name>
<email>slongerbeam@gmail.com</email>
</author>
<published>2014-06-26T01:05:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e7268c699bbe578e6dcf02e9f7f5a267837bc18f'/>
<id>e7268c699bbe578e6dcf02e9f7f5a267837bc18f</id>
<content type='text'>
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: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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: Steve Longerbeam &lt;steve_longerbeam@mentor.com&gt;
Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
</pre>
</div>
</content>
</entry>
</feed>
