<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/gpu/drm/tegra/dc.c, branch linux-4.13.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.13.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.13.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2017-06-15T12:20:30Z</updated>
<entry>
<title>drm/tegra: dc: Disable plane if it is invisible</title>
<updated>2017-06-15T12:20:30Z</updated>
<author>
<name>Dmitry Osipenko</name>
</author>
<published>2017-06-14T23:18:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=80d3eef16e16912df967a083da237d56dc4493b8'/>
<id>urn:sha1:80d3eef16e16912df967a083da237d56dc4493b8</id>
<content type='text'>
On Tegra20 if plane has width or height equal to 0, it will be infinitely
wide or tall. Let's disable the plane if it is invisible on atomic state
committing to fix the issue. The Rockchip DRM driver does the same.

Signed-off-by: Dmitry Osipenko &lt;digetx@gmail.com&gt;
Reviewed-by: Erik Faye-Lund &lt;kusmabite@gmail.com&gt;
Signed-off-by: Thierry Reding &lt;treding@nvidia.com&gt;
</content>
</entry>
<entry>
<title>drm/tegra: dc: Apply clipping to the plane</title>
<updated>2017-06-15T12:20:11Z</updated>
<author>
<name>Dmitry Osipenko</name>
</author>
<published>2017-06-14T23:18:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7d2058571aafad239e7f1a3c04a830c6ec6a426f'/>
<id>urn:sha1:7d2058571aafad239e7f1a3c04a830c6ec6a426f</id>
<content type='text'>
On Tegra20 an overlay plane should be clipped, otherwise its output is
distorted once plane crosses display boundary.

Signed-off-by: Dmitry Osipenko &lt;digetx@gmail.com&gt;
Reviewed-by: Erik Faye-Lund &lt;kusmabite@gmail.com&gt;
Signed-off-by: Thierry Reding &lt;treding@nvidia.com&gt;
</content>
</entry>
<entry>
<title>drm/tegra: dc: Avoid reset asserts on Tegra20</title>
<updated>2017-06-15T12:19:23Z</updated>
<author>
<name>Dmitry Osipenko</name>
</author>
<published>2017-06-14T23:18:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6ac1571b4c60cb73a1f174b15ea93f7e38d74a88'/>
<id>urn:sha1:6ac1571b4c60cb73a1f174b15ea93f7e38d74a88</id>
<content type='text'>
Commit 33a8eb8d40ee ("drm/tegra: dc: Implement runtime PM") introduced
HW reset control. It causes a hang on Tegra20 if both display
controllers are utilized (RGB panel and HDMI). The TRM suggests that
each display controller has its own reset control, apparently it is not
correct.

Fixes: 33a8eb8d40ee ("drm/tegra: dc: Implement runtime PM")
Signed-off-by: Dmitry Osipenko &lt;digetx@gmail.com&gt;
Reviewed-by: Erik Faye-Lund &lt;kusmabite@gmail.com&gt;
Signed-off-by: Thierry Reding &lt;treding@nvidia.com&gt;
</content>
</entry>
<entry>
<title>drm/tegra: Don't use modeset_lock_crtc</title>
<updated>2017-03-27T15:50:47Z</updated>
<author>
<name>Daniel Vetter</name>
</author>
<published>2017-03-22T21:50:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=99612b27763f819e53d5d892ce81a4b042a1de11'/>
<id>urn:sha1:99612b27763f819e53d5d892ce81a4b042a1de11</id>
<content type='text'>
Yes the help text is unhelpful, but atomic drivers should never use
this. Just grab the lock without context or anything.

Also an aside: Checking -&gt;active like this doesn't protect against
nonblocking commits, this is rather bogus.

Cc: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Acked-by: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@intel.com&gt;
Link: http://patchwork.freedesktop.org/patch/msgid/20170322215058.8671-8-daniel.vetter@ffwll.ch
</content>
</entry>
<entry>
<title>drm: tegra: use vblank hooks in struct drm_crtc_funcs</title>
<updated>2017-02-09T08:11:31Z</updated>
<author>
<name>Shawn Guo</name>
</author>
<published>2017-02-07T09:16:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=10437d9b475e9f41f0d7a679659f1d1eab8987bc'/>
<id>urn:sha1:10437d9b475e9f41f0d7a679659f1d1eab8987bc</id>
<content type='text'>
The vblank hooks in struct drm_driver are deprecated and only meant for
legacy drivers.  For modern drivers with DRIVER_MODESET flag, the hooks
in struct drm_crtc_funcs should be used instead.

As the result, the wrapper functions tegra_drm_xxx get killed
completely, and tegra_dc_xxx are filled into struct drm_crtc_funcs as
vblank hooks directly.

Signed-off-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Cc: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Acked-by: Thierry Reding &lt;treding@nvidia.com&gt;
Link: http://patchwork.freedesktop.org/patch/msgid/1486458995-31018-21-git-send-email-shawnguo@kernel.org
</content>
</entry>
<entry>
<title>drm: Nuke fb-&gt;pixel_format</title>
<updated>2016-12-15T12:55:34Z</updated>
<author>
<name>Ville Syrjälä</name>
</author>
<published>2016-12-14T21:32:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=438b74a5497c36d6d59baded434002e30267cabe'/>
<id>urn:sha1:438b74a5497c36d6d59baded434002e30267cabe</id>
<content type='text'>
Replace uses of fb-&gt;pixel_format with fb-&gt;format-&gt;format.
Less duplicated information is a good thing.

Note that coccinelle failed to eliminate the
"/* fourcc format */" comment from drm_framebuffer.h, so I had
to do that part manually.

@@
struct drm_framebuffer *FB;
expression E;
@@
 drm_helper_mode_fill_fb_struct(...) {
	...
-	FB-&gt;pixel_format = E;
	...
 }

@@
struct drm_framebuffer *FB;
expression E;
@@
 i9xx_get_initial_plane_config(...) {
	...
-	FB-&gt;pixel_format = E;
	...
 }

@@
struct drm_framebuffer *FB;
expression E;
@@
 ironlake_get_initial_plane_config(...) {
	...
-	FB-&gt;pixel_format = E;
	...
 }

@@
struct drm_framebuffer *FB;
expression E;
@@
 skylake_get_initial_plane_config(...) {
	...
-	FB-&gt;pixel_format = E;
	...
 }

@@
struct drm_framebuffer *a;
struct drm_framebuffer b;
@@
(
- a-&gt;pixel_format
+ a-&gt;format-&gt;format
|
- b.pixel_format
+ b.format-&gt;format
)

@@
struct drm_plane_state *a;
struct drm_plane_state b;
@@
(
- a-&gt;fb-&gt;pixel_format
+ a-&gt;fb-&gt;format-&gt;format
|
- b.fb-&gt;pixel_format
+ b.fb-&gt;format-&gt;format
)

@@
struct drm_crtc *CRTC;
@@
(
- CRTC-&gt;primary-&gt;fb-&gt;pixel_format
+ CRTC-&gt;primary-&gt;fb-&gt;format-&gt;format
|
- CRTC-&gt;primary-&gt;state-&gt;fb-&gt;pixel_format
+ CRTC-&gt;primary-&gt;state-&gt;fb-&gt;format-&gt;format
)

@@
struct drm_mode_set *set;
@@
(
- set-&gt;fb-&gt;pixel_format
+ set-&gt;fb-&gt;format-&gt;format
|
- set-&gt;crtc-&gt;primary-&gt;fb-&gt;pixel_format
+ set-&gt;crtc-&gt;primary-&gt;fb-&gt;format-&gt;format
)

@@
@@
 struct drm_framebuffer {
	 ...
-	 uint32_t pixel_format;
	 ...
 };

v2: Fix commit message (Laurent)
    Rebase due to earlier removal of many fb-&gt;pixel_format uses,
    including the 'fb-&gt;format = drm_format_info(fb-&gt;format-&gt;format);'
    snafu
v3: Adjusted the semantic patch a bit and regenerated due to code
    changes

Cc: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Signed-off-by: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Reviewed-by: Alex Deucher &lt;alexander.deucher@amd.com&gt; (v1)
Reviewed-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Link: http://patchwork.freedesktop.org/patch/msgid/1481751175-18463-1-git-send-email-ville.syrjala@linux.intel.com
</content>
</entry>
<entry>
<title>drm: Nuke fb-&gt;bits_per_pixel</title>
<updated>2016-12-15T12:55:34Z</updated>
<author>
<name>Ville Syrjälä</name>
</author>
<published>2016-12-14T21:32:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=272725c7db4da1fd3229d944fc76d2e98e3a144e'/>
<id>urn:sha1:272725c7db4da1fd3229d944fc76d2e98e3a144e</id>
<content type='text'>
Replace uses of fb-&gt;bits_per_pixel with fb-&gt;format-&gt;cpp[0]*8.
Less duplicated information is a good thing.

Note that I didn't put parens around the cpp*8 in the below cocci script,
on account of not wanting spurious parens all over the place. Instead I
did the unsafe way, and tried to look over the entire diff to spot if
any dangerous expressions were produced. I didn't see any.

There are some cases where previously the code did X*bpp/8, so the
division happened after the multiplication. Those are now just X*cpp
so the division effectively happens before the multiplication,
but that is perfectly fine since bpp is always a multiple of 8.

@@
struct drm_framebuffer *FB;
expression E;
@@
 drm_helper_mode_fill_fb_struct(...) {
	...
-	FB-&gt;bits_per_pixel = E;
	...
 }

@@
struct drm_framebuffer *FB;
expression E;
@@
 i9xx_get_initial_plane_config(...) {
	...
-	FB-&gt;bits_per_pixel = E;
	...
 }

@@
struct drm_framebuffer *FB;
expression E;
@@
 ironlake_get_initial_plane_config(...) {
	...
-	FB-&gt;bits_per_pixel = E;
	...
 }

@@
struct drm_framebuffer *FB;
expression E;
@@
 skylake_get_initial_plane_config(...) {
	...
-	FB-&gt;bits_per_pixel = E;
	...
 }

@@
struct drm_framebuffer FB;
expression E;
@@
(
- E * FB.bits_per_pixel / 8
+ E * FB.format-&gt;cpp[0]
|
- FB.bits_per_pixel / 8
+ FB.format-&gt;cpp[0]
|
- E * FB.bits_per_pixel &gt;&gt; 3
+ E * FB.format-&gt;cpp[0]
|
- FB.bits_per_pixel &gt;&gt; 3
+ FB.format-&gt;cpp[0]
|
- (FB.bits_per_pixel + 7) / 8
+ FB.format-&gt;cpp[0]
|
- FB.bits_per_pixel
+ FB.format-&gt;cpp[0] * 8
|
- FB.format-&gt;cpp[0] * 8 != 8
+ FB.format-&gt;cpp[0] != 1
)

@@
struct drm_framebuffer *FB;
expression E;
@@
(
- E * FB-&gt;bits_per_pixel / 8
+ E * FB-&gt;format-&gt;cpp[0]
|
- FB-&gt;bits_per_pixel / 8
+ FB-&gt;format-&gt;cpp[0]
|
- E * FB-&gt;bits_per_pixel &gt;&gt; 3
+ E * FB-&gt;format-&gt;cpp[0]
|
- FB-&gt;bits_per_pixel &gt;&gt; 3
+ FB-&gt;format-&gt;cpp[0]
|
- (FB-&gt;bits_per_pixel + 7) / 8
+ FB-&gt;format-&gt;cpp[0]
|
- FB-&gt;bits_per_pixel
+ FB-&gt;format-&gt;cpp[0] * 8
|
- FB-&gt;format-&gt;cpp[0] * 8 != 8
+ FB-&gt;format-&gt;cpp[0] != 1
)

@@
struct drm_plane_state *state;
expression E;
@@
(
- E * state-&gt;fb-&gt;bits_per_pixel / 8
+ E * state-&gt;fb-&gt;format-&gt;cpp[0]
|
- state-&gt;fb-&gt;bits_per_pixel / 8
+ state-&gt;fb-&gt;format-&gt;cpp[0]
|
- E * state-&gt;fb-&gt;bits_per_pixel &gt;&gt; 3
+ E * state-&gt;fb-&gt;format-&gt;cpp[0]
|
- state-&gt;fb-&gt;bits_per_pixel &gt;&gt; 3
+ state-&gt;fb-&gt;format-&gt;cpp[0]
|
- (state-&gt;fb-&gt;bits_per_pixel + 7) / 8
+ state-&gt;fb-&gt;format-&gt;cpp[0]
|
- state-&gt;fb-&gt;bits_per_pixel
+ state-&gt;fb-&gt;format-&gt;cpp[0] * 8
|
- state-&gt;fb-&gt;format-&gt;cpp[0] * 8 != 8
+ state-&gt;fb-&gt;format-&gt;cpp[0] != 1
)

@@
@@
- (8 * 8)
+ 8 * 8

@@
struct drm_framebuffer FB;
@@
- (FB.format-&gt;cpp[0])
+ FB.format-&gt;cpp[0]

@@
struct drm_framebuffer *FB;
@@
- (FB-&gt;format-&gt;cpp[0])
+ FB-&gt;format-&gt;cpp[0]

@@
@@
 struct drm_framebuffer {
	 ...
-	 int bits_per_pixel;
	 ...
 };

v2: Clean up the 'cpp*8 != 8' and '(8 * 8)' cases (Laurent)
v3: Adjusted the semantic patch a bit and regenerated due to code
    changes

Signed-off-by: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Reviewed-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Reviewed-by: Alex Deucher &lt;alexander.deucher@amd.com&gt; (v1)
Link: http://patchwork.freedesktop.org/patch/msgid/1481751140-18352-1-git-send-email-ville.syrjala@linux.intel.com
</content>
</entry>
<entry>
<title>drm: Replace drm_format_num_planes() with fb-&gt;format-&gt;num_planes</title>
<updated>2016-12-15T12:55:31Z</updated>
<author>
<name>Ville Syrjälä</name>
</author>
<published>2016-12-14T21:30:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bcb0b461454c9cb3b5804cf75bacaadb52348864'/>
<id>urn:sha1:bcb0b461454c9cb3b5804cf75bacaadb52348864</id>
<content type='text'>
Replace drm_format_num_planes(fb-&gt;pixel_format) with just
fb-&gt;format-&gt;num_planes. Avoids the expensive format info lookup.

@@
struct drm_framebuffer *a;
struct drm_framebuffer b;
@@
(
- drm_format_num_planes(a-&gt;pixel_format)
+ a-&gt;format-&gt;num_planes
|
- drm_format_num_planes(b.pixel_format)
+ b.format-&gt;num_planes
)

@@
struct drm_plane_state *a;
struct drm_plane_state b;
@@
(
- drm_format_num_planes(a-&gt;fb-&gt;pixel_format)
+ a-&gt;fb-&gt;format-&gt;num_planes
|
- drm_format_num_planes(b.fb-&gt;pixel_format)
+ b.fb-&gt;format-&gt;num_planes
)

@@
struct drm_framebuffer *a;
identifier T;
@@
  T = a-&gt;pixel_format
&lt;+...
- drm_format_num_planes(T)
+ a-&gt;format-&gt;num_planes
...+&gt;

@@
struct drm_framebuffer b;
identifier T;
@@
  T = b.pixel_format
&lt;+...
- drm_format_num_planes(T)
+ b.format-&gt;num_planes
...+&gt;

v2: Rerun spatch due to code changes

Cc: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Suggested-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Signed-off-by: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Reviewed-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Link: http://patchwork.freedesktop.org/patch/msgid/1481751022-18015-1-git-send-email-ville.syrjala@linux.intel.com
</content>
</entry>
<entry>
<title>Merge tag 'drm/tegra/for-4.9-rc1' of git://anongit.freedesktop.org/tegra/linux into drm-next</title>
<updated>2016-09-30T03:00:36Z</updated>
<author>
<name>Dave Airlie</name>
</author>
<published>2016-09-30T03:00:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b2d7e08903e62b9f504fe6a954425b737aa9ff96'/>
<id>urn:sha1:b2d7e08903e62b9f504fe6a954425b737aa9ff96</id>
<content type='text'>
drm/tegra: Changes for v4.9-rc1

One bugfix that avoids overwriting the Y plane base address when
displaying buffers with one of the YUV/YVU formats.

* tag 'drm/tegra/for-4.9-rc1' of git://anongit.freedesktop.org/tegra/linux:
  drm/tegra: Fix window[0] base address corruption
</content>
</entry>
<entry>
<title>drm/tegra: Fix window[0] base address corruption</title>
<updated>2016-08-24T14:15:09Z</updated>
<author>
<name>Dmitry Osipenko</name>
</author>
<published>2016-08-21T08:57:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=08ee01789eebf433c27e8b3eecc3ddbb5f7c4d51'/>
<id>urn:sha1:08ee01789eebf433c27e8b3eecc3ddbb5f7c4d51</id>
<content type='text'>
Window uses shared stride for UV planes and tegra_dc_window struct
defines array of 2 strides per window. That's not taken in account
during setting up of the window addresses and strides, resulting in
out-of-bounds write of the 3-rd (non-existent) V plane stride that
overwrites Y plane base address.

Signed-off-by: Dmitry Osipenko &lt;digetx@gmail.com&gt;
[treding@nvidia.com: explain why the V-plane stride is ignored]
Signed-off-by: Thierry Reding &lt;treding@nvidia.com&gt;
</content>
</entry>
</feed>
