On Tue, Apr 19, 2022 at 11:08 PM Laurent Pinchart laurent.pinchart@ideasonboard.com wrote:
On Tue, Apr 19, 2022 at 06:16:07PM +0200, Robert Foss wrote:
On Tue, 19 Apr 2022 at 11:41, Jagan Teki jagan@amarulasolutions.com wrote:
On Tue, Apr 19, 2022 at 2:44 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
If panel_bridge_attach() happens after DRM device registration, the created connector will not be registered by the DRM core anymore. Fix this by registering it explicitely in such case.
This fixes the following issue observed on Samsung Exynos4210-based Trats board with a DSI panel (the panel driver is registed after the Exynos DRM component device is bound):
$ ./modetest -c -Mexynos could not get connector 56: No such file or directory Segmentation fault
While touching this, move the connector reset() call also under the DRM device registered check, because otherwise it is not really needed.
Fixes: 934aef885f9d ("drm: bridge: panel: Reset the connector state pointer") Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com
Here is a bit more backgroud on this issue is available in this thread: https://lore.kernel.org/all/f0474a95-4ba3-a74f-d7de-ef7aab12bc86@samsung.com...
drivers/gpu/drm/bridge/panel.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c index ff1c37b2e6e5..0ee563eb2b6f 100644 --- a/drivers/gpu/drm/bridge/panel.c +++ b/drivers/gpu/drm/bridge/panel.c @@ -83,8 +83,11 @@ static int panel_bridge_attach(struct drm_bridge *bridge, drm_connector_attach_encoder(&panel_bridge->connector, bridge->encoder);
if (connector->funcs->reset)
connector->funcs->reset(connector);
if (bridge->dev->registered) {
if (connector->funcs->reset)
connector->funcs->reset(connector);
drm_connector_register(connector);
}
Reviewed-by: Jagan Teki jagan@amarulasolutions.com
Fixed typos in commit message.
Reviewed-by: Robert Foss robert.foss@linaro.org
Applied to drm-misc-next
Doesn't this open the door to various race conditions ?
Also, what happens if the panel bridge is detached and reattached ? If I
I believe the dev->registered is the check for those already registered.
Jagan.