[PATCH] drm: bridge: panel: Register connector if DRM device is already registered
Jagan Teki
jagan at amarulasolutions.com
Tue Apr 19 09:40:54 UTC 2022
On Tue, Apr 19, 2022 at 2:44 PM Marek Szyprowski
<m.szyprowski at 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 at 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 at amarulasolutions.com>
More information about the dri-devel
mailing list