<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c, branch linux-5.10.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.10.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.10.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2022-04-27T11:53:56Z</updated>
<entry>
<title>drm/panel/raspberrypi-touchscreen: Initialise the bridge in prepare</title>
<updated>2022-04-27T11:53:56Z</updated>
<author>
<name>Dave Stevenson</name>
</author>
<published>2022-04-15T16:25:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=405d98427416849cf37c84c0c70bd5008b686a1e'/>
<id>urn:sha1:405d98427416849cf37c84c0c70bd5008b686a1e</id>
<content type='text'>
[ Upstream commit 5f18c0782b99e26121efa93d20b76c19e17aa1dd ]

The panel has a prepare call which is before video starts, and an
enable call which is after.
The Toshiba bridge should be configured before video, so move
the relevant power and initialisation calls to prepare.

Fixes: 2f733d6194bd ("drm/panel: Add support for the Raspberry Pi 7" Touchscreen.")
Signed-off-by: Dave Stevenson &lt;dave.stevenson@raspberrypi.com&gt;
Signed-off-by: Stefan Wahren &lt;stefan.wahren@i2se.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20220415162513.42190-3-stefan.wahren@i2se.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>drm/panel/raspberrypi-touchscreen: Avoid NULL deref if not initialised</title>
<updated>2022-04-27T11:53:56Z</updated>
<author>
<name>Dave Stevenson</name>
</author>
<published>2022-04-15T16:25:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=231381f5211620cec836b921f1c7a2cf702b3e8a'/>
<id>urn:sha1:231381f5211620cec836b921f1c7a2cf702b3e8a</id>
<content type='text'>
[ Upstream commit f92055ae0acb035891e988ce345d6b81a0316423 ]

If a call to rpi_touchscreen_i2c_write from rpi_touchscreen_probe
fails before mipi_dsi_device_register_full is called, then
in trying to log the error message if uses ts-&gt;dsi-&gt;dev when
it is still NULL.

Use ts-&gt;i2c-&gt;dev instead, which is initialised earlier in probe.

Fixes: 2f733d6194bd ("drm/panel: Add support for the Raspberry Pi 7" Touchscreen.")
Signed-off-by: Dave Stevenson &lt;dave.stevenson@raspberrypi.com&gt;
Signed-off-by: Stefan Wahren &lt;stefan.wahren@i2se.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20220415162513.42190-2-stefan.wahren@i2se.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>drm/panel: raspberrypi-touchscreen: Prevent double-free</title>
<updated>2021-07-28T12:35:41Z</updated>
<author>
<name>Maxime Ripard</name>
</author>
<published>2021-07-20T13:45:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b91e5b63470d7a2f5225540e8093b06426d00bf9'/>
<id>urn:sha1:b91e5b63470d7a2f5225540e8093b06426d00bf9</id>
<content type='text'>
[ Upstream commit 7bbcb919e32d776ca8ddce08abb391ab92eef6a9 ]

The mipi_dsi_device allocated by mipi_dsi_device_register_full() is
already free'd on release.

Fixes: 2f733d6194bd ("drm/panel: Add support for the Raspberry Pi 7" Touchscreen.")
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Reviewed-by: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20210720134525.563936-9-maxime@cerno.tech
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>drm/panel: remove return value of function drm_panel_add</title>
<updated>2020-08-02T06:59:06Z</updated>
<author>
<name>Bernard Zhao</name>
</author>
<published>2020-08-01T12:02:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c3ee8c65f63799b02e1fb828bac99fd5008fb565'/>
<id>urn:sha1:c3ee8c65f63799b02e1fb828bac99fd5008fb565</id>
<content type='text'>
The function "int drm_panel_add(struct drm_panel *panel)"
always returns 0, this return value is meaningless.
Also, there is no need to check return value which calls
"drm_panel_add and", error branch code will never run.

Signed-off-by: Bernard Zhao &lt;bernard@vivo.com&gt;
Reviewed-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20200801120216.8488-1-bernard@vivo.com
</content>
</entry>
<entry>
<title>drm: Nuke mode-&gt;vrefresh</title>
<updated>2020-05-27T11:31:42Z</updated>
<author>
<name>Ville Syrjälä</name>
</author>
<published>2020-04-28T17:19:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0425662fdf05665235e768e2fbcb4ced12432b43'/>
<id>urn:sha1:0425662fdf05665235e768e2fbcb4ced12432b43</id>
<content type='text'>
Get rid of mode-&gt;vrefresh and just calculate it on demand. Saves
a bit of space and avoids the cached value getting out of sync
with reality.

Mostly done with cocci, with the following manual fixups:
- Remove the now empty loop in drm_helper_probe_single_connector_modes()
- Fix __MODE() macro in ch7006_mode.c
- Fix DRM_MODE_ARG() macro in drm_modes.h
- Remove leftover comment from samsung_s6d16d0_mode
- Drop the TODO

@@
@@
struct drm_display_mode {
	...
-	int vrefresh;
	...
};

@@
identifier N;
expression E;
@@
struct drm_display_mode N = {
-	.vrefresh = E
};

@@
identifier N;
expression E;
@@
struct drm_display_mode N[...] = {
...,
{
-	.vrefresh = E
}
,...
};

@@
expression E;
@@
{
	DRM_MODE(...),
-	.vrefresh = E,
}

@@
identifier M, R;
@@
int drm_mode_vrefresh(const struct drm_display_mode *M)
{
  ...
- if (M-&gt;vrefresh &gt; 0)
- 	R = M-&gt;vrefresh;
- else
  if (...) {
  ...
  }
  ...
}

@@
struct drm_display_mode *p;
expression E;
@@
(
- p-&gt;vrefresh = E;
|
- p-&gt;vrefresh
+ drm_mode_vrefresh(p)
)

@@
struct drm_display_mode s;
expression E;
@@
(
- s.vrefresh = E;
|
- s.vrefresh
+ drm_mode_vrefresh(&amp;s)
)

@@
expression E;
@@
- drm_mode_vrefresh(E) ? drm_mode_vrefresh(E) : drm_mode_vrefresh(E)
+ drm_mode_vrefresh(E)

@find_substruct@
identifier X;
identifier S;
@@
struct X {
...
	struct drm_display_mode S;
...
};

@@
identifier find_substruct.S;
expression E;
identifier I;
@@
{
.S = {
-	.vrefresh = E
}
}

@@
identifier find_substruct.S;
identifier find_substruct.X;
expression E;
identifier I;
@@
struct X I[...] = {
...,
.S = {
-	.vrefresh = E
}
,...
};

v2: Drop TODO
v3: Rebase
v4: Rebase

Cc: Andrzej Hajda &lt;a.hajda@samsung.com&gt;
Cc: Neil Armstrong &lt;narmstrong@baylibre.com&gt;
Cc: Laurent Pinchart &lt;Laurent.pinchart@ideasonboard.com&gt;
Cc: Jonas Karlman &lt;jonas@kwiboo.se&gt;
Cc: Jernej Skrabec &lt;jernej.skrabec@siol.net&gt;
Cc: Inki Dae &lt;inki.dae@samsung.com&gt;
Cc: Joonyoung Shim &lt;jy0922.shim@samsung.com&gt;
Cc: Seung-Woo Kim &lt;sw0312.kim@samsung.com&gt;
Cc: Kyungmin Park &lt;kyungmin.park@samsung.com&gt;
Cc: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: CK Hu &lt;ck.hu@mediatek.com&gt;
Cc: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
Cc: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Cc: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Cc: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Cc: Jerry Han &lt;hanxu5@huaqin.corp-partner.google.com&gt;
Cc: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Cc: Jagan Teki &lt;jagan@amarulasolutions.com&gt;
Cc: Stefan Mavrodiev &lt;stefan@olimex.com&gt;
Cc: Robert Chiras &lt;robert.chiras@nxp.com&gt;
Cc: "Guido Günther" &lt;agx@sigxcpu.org&gt;
Cc: Purism Kernel Team &lt;kernel@puri.sm&gt;
Cc: Benjamin Gaignard &lt;benjamin.gaignard@linaro.org&gt;
Cc: Vincent Abriou &lt;vincent.abriou@st.com&gt;
Cc: VMware Graphics &lt;linux-graphics-maintainer@vmware.com&gt;
Cc: Thomas Hellstrom &lt;thellstrom@vmware.com&gt;
Cc: linux-amlogic@lists.infradead.org
Cc: nouveau@lists.freedesktop.org
Reviewed-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Reviewed-by: Emil Velikov &lt;emil.velikov@collabora.com&gt;
Reviewed-by: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20200428171940.19552-4-ville.syrjala@linux.intel.com
</content>
</entry>
<entry>
<title>drm/panel: drop drm_device from drm_panel</title>
<updated>2019-12-09T21:57:26Z</updated>
<author>
<name>Sam Ravnborg</name>
</author>
<published>2019-12-07T14:03:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=aa6c43644bc57b3d297247746184d1d82ed9de82'/>
<id>urn:sha1:aa6c43644bc57b3d297247746184d1d82ed9de82</id>
<content type='text'>
The panel drivers used drm_panel.drm for two purposes:
1) Argument to drm_mode_duplicate()
2) drm-&gt;dev was used in error messages

The first usage is replaced with drm_connector.dev
- drm_connector is already connected to a drm_device
  and we have a valid connector

The second usage is replaced with drm_panel.dev
- this makes drivers more consistent in their dev argument
  used for dev_err() and friends

With these replacements there are no more uses of drm_panel.drm,
so it is removed from struct drm_panel.
With this change drm_panel_attach() and drm_panel_detach()
no longer have any use as they are empty functions.

v2:
  - editorial correction in changelog (Laurent)

Signed-off-by: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Reviewed-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Reviewed-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Cc: Laurent Pinchart &lt;Laurent.pinchart@ideasonboard.com&gt;
Cc: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Cc: Maarten Lankhorst &lt;maarten.lankhorst@linux.intel.com&gt;
Cc: Maxime Ripard &lt;mripard@kernel.org&gt;
Cc: David Airlie &lt;airlied@linux.ie&gt;
Cc: Daniel Vetter &lt;daniel@ffwll.ch&gt;
Cc: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Jagan Teki &lt;jagan@amarulasolutions.com&gt;
Cc: Stefan Mavrodiev &lt;stefan@olimex.com&gt;
Cc: Robert Chiras &lt;robert.chiras@nxp.com&gt;
Cc: "Guido Günther" &lt;agx@sigxcpu.org&gt;
Cc: Purism Kernel Team &lt;kernel@puri.sm&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191207140353.23967-8-sam@ravnborg.org
</content>
</entry>
<entry>
<title>drm/panel: add drm_connector argument to get_modes()</title>
<updated>2019-12-09T21:57:26Z</updated>
<author>
<name>Sam Ravnborg</name>
</author>
<published>2019-12-07T14:03:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0ce8ddd8e06dcbcd8d31607921c31ad1c32ad56c'/>
<id>urn:sha1:0ce8ddd8e06dcbcd8d31607921c31ad1c32ad56c</id>
<content type='text'>
Today the bridge creates the drm_connector, but that is planned
to be moved to the display drivers.
To facilitate this, update drm_panel_funcs.get_modes() to
take drm_connector as an argument.
All panel drivers implementing get_modes() are updated.

v2:
  - drop accidental change (Laurent)
  - update docs for get_modes (Laurent)

Signed-off-by: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Reviewed-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Reviewed-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Cc: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Cc: Maarten Lankhorst &lt;maarten.lankhorst@linux.intel.com&gt;
Cc: Maxime Ripard &lt;mripard@kernel.org&gt;
Cc: David Airlie &lt;airlied@linux.ie&gt;
Cc: Daniel Vetter &lt;daniel@ffwll.ch&gt;
Cc: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Jagan Teki &lt;jagan@amarulasolutions.com&gt;
Cc: Stefan Mavrodiev &lt;stefan@olimex.com&gt;
Cc: Robert Chiras &lt;robert.chiras@nxp.com&gt;
Cc: "Guido Günther" &lt;agx@sigxcpu.org&gt;
Cc: Purism Kernel Team &lt;kernel@puri.sm&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191207140353.23967-6-sam@ravnborg.org
</content>
</entry>
<entry>
<title>drm/panel: rpi: Drop unused GPIO includes</title>
<updated>2019-12-03T17:41:22Z</updated>
<author>
<name>Linus Walleij</name>
</author>
<published>2019-12-03T15:26:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=99a375519eeaac617a0d5859d5a987049d548f59'/>
<id>urn:sha1:99a375519eeaac617a0d5859d5a987049d548f59</id>
<content type='text'>
The Rpi panel driver doesn't use any symbols from these
GPIO includes so just drop them.

Cc: Eric Anholt &lt;eric@anholt.net&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191203152655.159281-1-linus.walleij@linaro.org
</content>
</entry>
<entry>
<title>drm/panel: Add and fill drm_panel type field</title>
<updated>2019-09-08T17:04:01Z</updated>
<author>
<name>Laurent Pinchart</name>
</author>
<published>2019-09-04T13:28:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9a2654c0f62a1704f36acb6329f9ccbd539f75ad'/>
<id>urn:sha1:9a2654c0f62a1704f36acb6329f9ccbd539f75ad</id>
<content type='text'>
Add a type field to the drm_panel structure to report the panel type,
using DRM_MODE_CONNECTOR_* macros (the values that make sense are LVDS,
eDP, DSI and DPI). This will be used to initialise the corresponding
connector type.

Update all panel drivers accordingly. The panel-simple driver only
specifies the type for the known to be LVDS panels, while all other
panels are left as unknown and will be converted on a case-by-case
basis as they all need to be carefully reviewed.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Reviewed-by: Boris Brezillon &lt;boris.brezillon@collabora.com&gt;
Reviewed-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20190904132804.29680-2-laurent.pinchart@ideasonboard.com
</content>
</entry>
<entry>
<title>drm/panel: Initialise panel dev and funcs through drm_panel_init()</title>
<updated>2019-08-24T08:42:48Z</updated>
<author>
<name>Laurent Pinchart</name>
</author>
<published>2019-08-23T19:32:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6dbe0c4b0fc0646442b2b1580d022404e582fd7b'/>
<id>urn:sha1:6dbe0c4b0fc0646442b2b1580d022404e582fd7b</id>
<content type='text'>
Instead of requiring all drivers to set the dev and funcs fields of
drm_panel manually after calling drm_panel_init(), pass the data as
arguments to the function. This simplifies the panel drivers, and will
help future refactoring when adding new arguments to drm_panel_init().

The panel drivers have been updated with the following Coccinelle
semantic patch, with manual inspection to verify that no call to
drm_panel_init() with a single argument still exists.

@@
expression panel;
expression device;
identifier ops;
@@
 drm_panel_init(&amp;panel
+	, device, &amp;ops
 );
 ...
(
-panel.dev = device;
-panel.funcs = &amp;ops;
|
-panel.funcs = &amp;ops;
-panel.dev = device;
)

Suggested-by: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Signed-off-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Signed-off-by: Sam Ravnborg &lt;sam@ravnborg.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20190823193245.23876-3-laurent.pinchart@ideasonboard.com
</content>
</entry>
</feed>
