<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/video/sh_mobile_lcdcfb.c, branch v3.12.34</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>fb: reorder the lock sequence to fix potential dead lock</title>
<updated>2014-04-18T09:03:37+00:00</updated>
<author>
<name>Gu Zheng</name>
<email>guz.fnst@cn.fujitsu.com</email>
</author>
<published>2013-11-05T10:00:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=be5289088d0dd45d1b05753eba1cb9252375dff2'/>
<id>be5289088d0dd45d1b05753eba1cb9252375dff2</id>
<content type='text'>
commit 3a41c5dbe8bc396a7fb16ca8739e945bb003342e upstream.

Following commits:

50e244cc79 fb: rework locking to fix lock ordering on takeover
e93a9a8687 fb: Yet another band-aid for fixing lockdep mess
054430e773 fbcon: fix locking harder

reworked locking to fix related lock ordering on takeover, and introduced console_lock
into fbmem, but it seems that the new lock sequence(fb_info-&gt;lock ---&gt; console_lock)
is against with the one in console_callback(console_lock ---&gt; fb_info-&gt;lock), and leads to
a potential dead lock as following:

[  601.079000] ======================================================
[  601.079000] [ INFO: possible circular locking dependency detected ]
[  601.079000] 3.11.0 #189 Not tainted
[  601.079000] -------------------------------------------------------
[  601.079000] kworker/0:3/619 is trying to acquire lock:
[  601.079000]  (&amp;fb_info-&gt;lock){+.+.+.}, at: [&lt;ffffffff81397566&gt;] lock_fb_info+0x26/0x60
[  601.079000]
but task is already holding lock:
[  601.079000]  (console_lock){+.+.+.}, at: [&lt;ffffffff8141aae3&gt;] console_callback+0x13/0x160
[  601.079000]
which lock already depends on the new lock.

[  601.079000]
the existing dependency chain (in reverse order) is:
[  601.079000]
-&gt; #1 (console_lock){+.+.+.}:
[  601.079000]        [&lt;ffffffff810dc971&gt;] lock_acquire+0xa1/0x140
[  601.079000]        [&lt;ffffffff810c6267&gt;] console_lock+0x77/0x80
[  601.079000]        [&lt;ffffffff81399448&gt;] register_framebuffer+0x1d8/0x320
[  601.079000]        [&lt;ffffffff81cfb4c8&gt;] efifb_probe+0x408/0x48f
[  601.079000]        [&lt;ffffffff8144a963&gt;] platform_drv_probe+0x43/0x80
[  601.079000]        [&lt;ffffffff8144853b&gt;] driver_probe_device+0x8b/0x390
[  601.079000]        [&lt;ffffffff814488eb&gt;] __driver_attach+0xab/0xb0
[  601.079000]        [&lt;ffffffff814463bd&gt;] bus_for_each_dev+0x5d/0xa0
[  601.079000]        [&lt;ffffffff81447e6e&gt;] driver_attach+0x1e/0x20
[  601.079000]        [&lt;ffffffff81447a07&gt;] bus_add_driver+0x117/0x290
[  601.079000]        [&lt;ffffffff81448fea&gt;] driver_register+0x7a/0x170
[  601.079000]        [&lt;ffffffff8144a10a&gt;] __platform_driver_register+0x4a/0x50
[  601.079000]        [&lt;ffffffff8144a12d&gt;] platform_driver_probe+0x1d/0xb0
[  601.079000]        [&lt;ffffffff81cfb0a1&gt;] efifb_init+0x273/0x292
[  601.079000]        [&lt;ffffffff81002132&gt;] do_one_initcall+0x102/0x1c0
[  601.079000]        [&lt;ffffffff81cb80a6&gt;] kernel_init_freeable+0x15d/0x1ef
[  601.079000]        [&lt;ffffffff8166d2de&gt;] kernel_init+0xe/0xf0
[  601.079000]        [&lt;ffffffff816914ec&gt;] ret_from_fork+0x7c/0xb0
[  601.079000]
-&gt; #0 (&amp;fb_info-&gt;lock){+.+.+.}:
[  601.079000]        [&lt;ffffffff810dc1d8&gt;] __lock_acquire+0x1e18/0x1f10
[  601.079000]        [&lt;ffffffff810dc971&gt;] lock_acquire+0xa1/0x140
[  601.079000]        [&lt;ffffffff816835ca&gt;] mutex_lock_nested+0x7a/0x3b0
[  601.079000]        [&lt;ffffffff81397566&gt;] lock_fb_info+0x26/0x60
[  601.079000]        [&lt;ffffffff813a4aeb&gt;] fbcon_blank+0x29b/0x2e0
[  601.079000]        [&lt;ffffffff81418658&gt;] do_blank_screen+0x1d8/0x280
[  601.079000]        [&lt;ffffffff8141ab34&gt;] console_callback+0x64/0x160
[  601.079000]        [&lt;ffffffff8108d855&gt;] process_one_work+0x1f5/0x540
[  601.079000]        [&lt;ffffffff8108e04c&gt;] worker_thread+0x11c/0x370
[  601.079000]        [&lt;ffffffff81095fbd&gt;] kthread+0xed/0x100
[  601.079000]        [&lt;ffffffff816914ec&gt;] ret_from_fork+0x7c/0xb0
[  601.079000]
other info that might help us debug this:

[  601.079000]  Possible unsafe locking scenario:

[  601.079000]        CPU0                    CPU1
[  601.079000]        ----                    ----
[  601.079000]   lock(console_lock);
[  601.079000]                                lock(&amp;fb_info-&gt;lock);
[  601.079000]                                lock(console_lock);
[  601.079000]   lock(&amp;fb_info-&gt;lock);
[  601.079000]
 *** DEADLOCK ***

so we reorder the lock sequence the same as it in console_callback() to
avoid this issue. And following Tomi's suggestion, fix these similar
issues all in fb subsystem.

Signed-off-by: Gu Zheng &lt;guz.fnst@cn.fujitsu.com&gt;
Signed-off-by: Tomi Valkeinen &lt;tomi.valkeinen@ti.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 3a41c5dbe8bc396a7fb16ca8739e945bb003342e upstream.

Following commits:

50e244cc79 fb: rework locking to fix lock ordering on takeover
e93a9a8687 fb: Yet another band-aid for fixing lockdep mess
054430e773 fbcon: fix locking harder

reworked locking to fix related lock ordering on takeover, and introduced console_lock
into fbmem, but it seems that the new lock sequence(fb_info-&gt;lock ---&gt; console_lock)
is against with the one in console_callback(console_lock ---&gt; fb_info-&gt;lock), and leads to
a potential dead lock as following:

[  601.079000] ======================================================
[  601.079000] [ INFO: possible circular locking dependency detected ]
[  601.079000] 3.11.0 #189 Not tainted
[  601.079000] -------------------------------------------------------
[  601.079000] kworker/0:3/619 is trying to acquire lock:
[  601.079000]  (&amp;fb_info-&gt;lock){+.+.+.}, at: [&lt;ffffffff81397566&gt;] lock_fb_info+0x26/0x60
[  601.079000]
but task is already holding lock:
[  601.079000]  (console_lock){+.+.+.}, at: [&lt;ffffffff8141aae3&gt;] console_callback+0x13/0x160
[  601.079000]
which lock already depends on the new lock.

[  601.079000]
the existing dependency chain (in reverse order) is:
[  601.079000]
-&gt; #1 (console_lock){+.+.+.}:
[  601.079000]        [&lt;ffffffff810dc971&gt;] lock_acquire+0xa1/0x140
[  601.079000]        [&lt;ffffffff810c6267&gt;] console_lock+0x77/0x80
[  601.079000]        [&lt;ffffffff81399448&gt;] register_framebuffer+0x1d8/0x320
[  601.079000]        [&lt;ffffffff81cfb4c8&gt;] efifb_probe+0x408/0x48f
[  601.079000]        [&lt;ffffffff8144a963&gt;] platform_drv_probe+0x43/0x80
[  601.079000]        [&lt;ffffffff8144853b&gt;] driver_probe_device+0x8b/0x390
[  601.079000]        [&lt;ffffffff814488eb&gt;] __driver_attach+0xab/0xb0
[  601.079000]        [&lt;ffffffff814463bd&gt;] bus_for_each_dev+0x5d/0xa0
[  601.079000]        [&lt;ffffffff81447e6e&gt;] driver_attach+0x1e/0x20
[  601.079000]        [&lt;ffffffff81447a07&gt;] bus_add_driver+0x117/0x290
[  601.079000]        [&lt;ffffffff81448fea&gt;] driver_register+0x7a/0x170
[  601.079000]        [&lt;ffffffff8144a10a&gt;] __platform_driver_register+0x4a/0x50
[  601.079000]        [&lt;ffffffff8144a12d&gt;] platform_driver_probe+0x1d/0xb0
[  601.079000]        [&lt;ffffffff81cfb0a1&gt;] efifb_init+0x273/0x292
[  601.079000]        [&lt;ffffffff81002132&gt;] do_one_initcall+0x102/0x1c0
[  601.079000]        [&lt;ffffffff81cb80a6&gt;] kernel_init_freeable+0x15d/0x1ef
[  601.079000]        [&lt;ffffffff8166d2de&gt;] kernel_init+0xe/0xf0
[  601.079000]        [&lt;ffffffff816914ec&gt;] ret_from_fork+0x7c/0xb0
[  601.079000]
-&gt; #0 (&amp;fb_info-&gt;lock){+.+.+.}:
[  601.079000]        [&lt;ffffffff810dc1d8&gt;] __lock_acquire+0x1e18/0x1f10
[  601.079000]        [&lt;ffffffff810dc971&gt;] lock_acquire+0xa1/0x140
[  601.079000]        [&lt;ffffffff816835ca&gt;] mutex_lock_nested+0x7a/0x3b0
[  601.079000]        [&lt;ffffffff81397566&gt;] lock_fb_info+0x26/0x60
[  601.079000]        [&lt;ffffffff813a4aeb&gt;] fbcon_blank+0x29b/0x2e0
[  601.079000]        [&lt;ffffffff81418658&gt;] do_blank_screen+0x1d8/0x280
[  601.079000]        [&lt;ffffffff8141ab34&gt;] console_callback+0x64/0x160
[  601.079000]        [&lt;ffffffff8108d855&gt;] process_one_work+0x1f5/0x540
[  601.079000]        [&lt;ffffffff8108e04c&gt;] worker_thread+0x11c/0x370
[  601.079000]        [&lt;ffffffff81095fbd&gt;] kthread+0xed/0x100
[  601.079000]        [&lt;ffffffff816914ec&gt;] ret_from_fork+0x7c/0xb0
[  601.079000]
other info that might help us debug this:

[  601.079000]  Possible unsafe locking scenario:

[  601.079000]        CPU0                    CPU1
[  601.079000]        ----                    ----
[  601.079000]   lock(console_lock);
[  601.079000]                                lock(&amp;fb_info-&gt;lock);
[  601.079000]                                lock(console_lock);
[  601.079000]   lock(&amp;fb_info-&gt;lock);
[  601.079000]
 *** DEADLOCK ***

so we reorder the lock sequence the same as it in console_callback() to
avoid this issue. And following Tomi's suggestion, fix these similar
issues all in fb subsystem.

Signed-off-by: Gu Zheng &lt;guz.fnst@cn.fujitsu.com&gt;
Signed-off-by: Tomi Valkeinen &lt;tomi.valkeinen@ti.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fbdev: sh_mobile_lcdc: fixup B side hsync adjust settings</title>
<updated>2013-03-27T13:47:24+00:00</updated>
<author>
<name>Kuninori Morimoto</name>
<email>kuninori.morimoto.gx@renesas.com</email>
</author>
<published>2013-03-05T04:44:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9beb09f1cadf33145c307c504f844ae24686c872'/>
<id>9beb09f1cadf33145c307c504f844ae24686c872</id>
<content type='text'>
The lcdc B side horizon output is shifted
if sh_mobile_lcdc_pan() was called.
This patch fixup this issue.
It is tested on R8A7740 Armadillo800eva HDMI output.
Special thanks to Fukushima-san, and Sano-san

Reported-by: Osamu Fukushima &lt;osamu.fukushima.wr@renesas.com&gt;
Signed-off-by: Hideyuki Sano &lt;hideyuki.sano.dn@renesas.com&gt;
Signed-off-by: Kuninori Morimoto &lt;kuninori.morimoto.gx@renesas.com&gt;
Acked-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Signed-off-by: Simon Horman &lt;horms+renesas@verge.net.au&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The lcdc B side horizon output is shifted
if sh_mobile_lcdc_pan() was called.
This patch fixup this issue.
It is tested on R8A7740 Armadillo800eva HDMI output.
Special thanks to Fukushima-san, and Sano-san

Reported-by: Osamu Fukushima &lt;osamu.fukushima.wr@renesas.com&gt;
Signed-off-by: Hideyuki Sano &lt;hideyuki.sano.dn@renesas.com&gt;
Signed-off-by: Kuninori Morimoto &lt;kuninori.morimoto.gx@renesas.com&gt;
Acked-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Signed-off-by: Simon Horman &lt;horms+renesas@verge.net.au&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Drivers: video: remove __dev* attributes.</title>
<updated>2013-01-03T23:57:01+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2012-12-21T21:07:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=48c68c4f1b542444f175a9e136febcecf3e704d8'/>
<id>48c68c4f1b542444f175a9e136febcecf3e704d8</id>
<content type='text'>
CONFIG_HOTPLUG is going away as an option.  As a result, the __dev*
markings need to be removed.

This change removes the use of __devinit, __devexit_p, __devinitdata,
__devinitconst, and __devexit from these drivers.

Based on patches originally written by Bill Pemberton, but redone by me
in order to handle some of the coding style issues better, by hand.

Cc: Bill Pemberton &lt;wfp5p@virginia.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
CONFIG_HOTPLUG is going away as an option.  As a result, the __dev*
markings need to be removed.

This change removes the use of __devinit, __devexit_p, __devinitdata,
__devinitconst, and __devexit from these drivers.

Based on patches originally written by Bill Pemberton, but redone by me
in order to handle some of the coding style issues better, by hand.

Cc: Bill Pemberton &lt;wfp5p@virginia.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fbdev: sh_mobile_lcdc: Make sh_mobile_lcdc_sys_bus_ops static</title>
<updated>2012-11-21T14:50:02+00:00</updated>
<author>
<name>Laurent Pinchart</name>
<email>laurent.pinchart+renesas@ideasonboard.com</email>
</author>
<published>2012-08-13T11:56:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d38d840ac61fdd5fe86b3b5925f538b0a26ed85b'/>
<id>d38d840ac61fdd5fe86b3b5925f538b0a26ed85b</id>
<content type='text'>
The structure isn't used outside of its compilation unit, make it
static.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The structure isn't used outside of its compilation unit, make it
static.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fbdev: sh_mobile_lcdc: Store the backlight brightness internally</title>
<updated>2012-11-21T14:50:01+00:00</updated>
<author>
<name>Laurent Pinchart</name>
<email>laurent.pinchart+renesas@ideasonboard.com</email>
</author>
<published>2012-08-15T16:10:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=656d4f332c02b14e62fe3f4247a1dcdc33961de6'/>
<id>656d4f332c02b14e62fe3f4247a1dcdc33961de6</id>
<content type='text'>
There's no need to query the hardware for the currenty brightness value
through a platform data callback when we can cache the value internally
in the LCDC driver.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There's no need to query the hardware for the currenty brightness value
through a platform data callback when we can cache the value internally
in the LCDC driver.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fbdev: sh_mobile_lcdc: Remove priv argument from channel and overlay init</title>
<updated>2012-11-21T14:50:00+00:00</updated>
<author>
<name>Laurent Pinchart</name>
<email>laurent.pinchart+renesas@ideasonboard.com</email>
</author>
<published>2012-08-13T11:56:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0707330b337cec85d7b393303e82f0fad5dc4c00'/>
<id>0707330b337cec85d7b393303e82f0fad5dc4c00</id>
<content type='text'>
The channel and overlay init functions operate on a channel and an
overlay, don't pass the priv parameter explicitly.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The channel and overlay init functions operate on a channel and an
overlay, don't pass the priv parameter explicitly.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fbdev: sh_mobile_lcdc: Rename mode argument to modes</title>
<updated>2012-11-21T14:50:00+00:00</updated>
<author>
<name>Laurent Pinchart</name>
<email>laurent.pinchart+renesas@ideasonboard.com</email>
</author>
<published>2012-08-13T11:56:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=352d6138779e22c5340803d5a32fc332ad2e5e1d'/>
<id>352d6138779e22c5340803d5a32fc332ad2e5e1d</id>
<content type='text'>
The sh_mobile_lcdc_channel_fb_init() mode argument is used to pass a
list of modes, rename it to modes.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The sh_mobile_lcdc_channel_fb_init() mode argument is used to pass a
list of modes, rename it to modes.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fbdev: sh_mobile_lcdc: Get display dimensions from the channel structure</title>
<updated>2012-11-21T14:49:59+00:00</updated>
<author>
<name>Laurent Pinchart</name>
<email>laurent.pinchart+renesas@ideasonboard.com</email>
</author>
<published>2012-08-13T11:56:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=856e8dfe6efed7cf35bc6bf827f030a164bee083'/>
<id>856e8dfe6efed7cf35bc6bf827f030a164bee083</id>
<content type='text'>
Get the display dimensions directly from the channel structure instead
of recomputing them from the monitor specs or accessing the platform
data.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Get the display dimensions directly from the channel structure instead
of recomputing them from the monitor specs or accessing the platform
data.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fbdev: sh_mobile_lcdc: use dma_mmap_coherent</title>
<updated>2012-11-21T14:31:45+00:00</updated>
<author>
<name>Hideki EIRAKU</name>
<email>hdk@igel.co.jp</email>
</author>
<published>2012-08-16T10:13:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bf10a53765b4435a5349a92a5a51753902ed86f1'/>
<id>bf10a53765b4435a5349a92a5a51753902ed86f1</id>
<content type='text'>
fb_mmap() implemented in fbmem.c uses smem_start as the physical
address of the frame buffer.  In the sh_mobile_lcdc driver, the
smem_start is a dma_addr_t that is not a physical address when IOMMU is
enabled.  dma_mmap_coherent() maps the address correctly.

Signed-off-by: Hideki EIRAKU &lt;hdk@igel.co.jp&gt;
Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fb_mmap() implemented in fbmem.c uses smem_start as the physical
address of the frame buffer.  In the sh_mobile_lcdc driver, the
smem_start is a dma_addr_t that is not a physical address when IOMMU is
enabled.  dma_mmap_coherent() maps the address correctly.

Signed-off-by: Hideki EIRAKU &lt;hdk@igel.co.jp&gt;
Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fbdev: sh_mobile_lcdc: Fix vertical panning step</title>
<updated>2012-07-29T01:17:07+00:00</updated>
<author>
<name>Laurent Pinchart</name>
<email>laurent.pinchart@ideasonboard.com</email>
</author>
<published>2012-07-26T12:36:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ac33a207b13a70bbca6e58094e28bd92b9fc1ff3'/>
<id>ac33a207b13a70bbca6e58094e28bd92b9fc1ff3</id>
<content type='text'>
Commit 15dede882e564601947f2ce4b647742c0351be6d added support for
horizontal panning but accidentally computes the Y pan step value
incorrectly for NV12/21 and NV16/61 formats. Fix this.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Signed-off-by: Florian Tobias Schandinat &lt;FlorianSchandinat@gmx.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit 15dede882e564601947f2ce4b647742c0351be6d added support for
horizontal panning but accidentally computes the Y pan step value
incorrectly for NV12/21 and NV16/61 formats. Fix this.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Signed-off-by: Florian Tobias Schandinat &lt;FlorianSchandinat@gmx.de&gt;
</pre>
</div>
</content>
</entry>
</feed>
