Each of hdmi and edp are already attached in msm_*_bridge_init. A second attachment returns -EBUSY, failing the driver load.
Tested with HDMI on IFC6410 (APQ8064 / MDP4), but eDP case should be analogous.
Fixes: 3ef2f119bd3ed (drm/msm: Use drm_attach_bridge() to attach a bridge to an encoder) Cc: Boris Brezillon boris.brezillon@collabora.com Signed-off-by: Ilia Mirkin imirkin@alum.mit.edu --- drivers/gpu/drm/msm/edp/edp.c | 4 ---- drivers/gpu/drm/msm/hdmi/hdmi.c | 4 ---- 2 files changed, 8 deletions(-)
diff --git a/drivers/gpu/drm/msm/edp/edp.c b/drivers/gpu/drm/msm/edp/edp.c index ad4e963ccd9b..106a67473af5 100644 --- a/drivers/gpu/drm/msm/edp/edp.c +++ b/drivers/gpu/drm/msm/edp/edp.c @@ -178,10 +178,6 @@ int msm_edp_modeset_init(struct msm_edp *edp, struct drm_device *dev, goto fail; }
- ret = drm_bridge_attach(encoder, edp->bridge, NULL); - if (ret) - goto fail; - priv->bridges[priv->num_bridges++] = edp->bridge; priv->connectors[priv->num_connectors++] = edp->connector;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c index 1a9b6289637d..737453b6e596 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -327,10 +327,6 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, goto fail; }
- ret = drm_bridge_attach(encoder, hdmi->bridge, NULL); - if (ret) - goto fail; - priv->bridges[priv->num_bridges++] = hdmi->bridge; priv->connectors[priv->num_connectors++] = hdmi->connector;
On Wed, Mar 11, 2020 at 8:52 PM Ilia Mirkin imirkin@alum.mit.edu wrote:
Each of hdmi and edp are already attached in msm_*_bridge_init. A second attachment returns -EBUSY, failing the driver load.
Tested with HDMI on IFC6410 (APQ8064 / MDP4), but eDP case should be analogous.
Fixes: 3ef2f119bd3ed (drm/msm: Use drm_attach_bridge() to attach a bridge to an encoder) Cc: Boris Brezillon boris.brezillon@collabora.com Signed-off-by: Ilia Mirkin imirkin@alum.mit.edu
Thanks
Reviewed-by: Rob Clark robdclark@gmail.com
drivers/gpu/drm/msm/edp/edp.c | 4 ---- drivers/gpu/drm/msm/hdmi/hdmi.c | 4 ---- 2 files changed, 8 deletions(-)
diff --git a/drivers/gpu/drm/msm/edp/edp.c b/drivers/gpu/drm/msm/edp/edp.c index ad4e963ccd9b..106a67473af5 100644 --- a/drivers/gpu/drm/msm/edp/edp.c +++ b/drivers/gpu/drm/msm/edp/edp.c @@ -178,10 +178,6 @@ int msm_edp_modeset_init(struct msm_edp *edp, struct drm_device *dev, goto fail; }
ret = drm_bridge_attach(encoder, edp->bridge, NULL);
if (ret)
goto fail;
priv->bridges[priv->num_bridges++] = edp->bridge; priv->connectors[priv->num_connectors++] = edp->connector;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c index 1a9b6289637d..737453b6e596 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -327,10 +327,6 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, goto fail; }
ret = drm_bridge_attach(encoder, hdmi->bridge, NULL);
if (ret)
goto fail;
priv->bridges[priv->num_bridges++] = hdmi->bridge; priv->connectors[priv->num_connectors++] = hdmi->connector;
-- 2.24.1
On Thu, 12 Mar 2020 09:19:58 -0700 Rob Clark robdclark@gmail.com wrote:
On Wed, Mar 11, 2020 at 8:52 PM Ilia Mirkin imirkin@alum.mit.edu wrote:
Each of hdmi and edp are already attached in msm_*_bridge_init. A second attachment returns -EBUSY, failing the driver load.
Tested with HDMI on IFC6410 (APQ8064 / MDP4), but eDP case should be analogous.
Fixes: 3ef2f119bd3ed (drm/msm: Use drm_attach_bridge() to attach a bridge to an encoder) Cc: Boris Brezillon boris.brezillon@collabora.com Signed-off-by: Ilia Mirkin imirkin@alum.mit.edu
Thanks
Reviewed-by: Rob Clark robdclark@gmail.com
Sorry for the regression. Looks like encoder->bridge was assigned twice before my patch, and I didn't check if there were other drm_bridge_attach() calls in the driver :-/.
Reviewed-by: Boris Brezillon boris.brezillon@collabora.com
drivers/gpu/drm/msm/edp/edp.c | 4 ---- drivers/gpu/drm/msm/hdmi/hdmi.c | 4 ---- 2 files changed, 8 deletions(-)
diff --git a/drivers/gpu/drm/msm/edp/edp.c b/drivers/gpu/drm/msm/edp/edp.c index ad4e963ccd9b..106a67473af5 100644 --- a/drivers/gpu/drm/msm/edp/edp.c +++ b/drivers/gpu/drm/msm/edp/edp.c @@ -178,10 +178,6 @@ int msm_edp_modeset_init(struct msm_edp *edp, struct drm_device *dev, goto fail; }
ret = drm_bridge_attach(encoder, edp->bridge, NULL);
if (ret)
goto fail;
priv->bridges[priv->num_bridges++] = edp->bridge; priv->connectors[priv->num_connectors++] = edp->connector;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c index 1a9b6289637d..737453b6e596 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -327,10 +327,6 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, goto fail; }
ret = drm_bridge_attach(encoder, hdmi->bridge, NULL);
if (ret)
goto fail;
priv->bridges[priv->num_bridges++] = hdmi->bridge; priv->connectors[priv->num_connectors++] = hdmi->connector;
-- 2.24.1
On Wed 11 Mar 20:51 PDT 2020, Ilia Mirkin wrote:
Each of hdmi and edp are already attached in msm_*_bridge_init. A second attachment returns -EBUSY, failing the driver load.
Tested with HDMI on IFC6410 (APQ8064 / MDP4), but eDP case should be analogous.
Fixes: 3ef2f119bd3ed (drm/msm: Use drm_attach_bridge() to attach a bridge to an encoder) Cc: Boris Brezillon boris.brezillon@collabora.com Signed-off-by: Ilia Mirkin imirkin@alum.mit.edu
Had to manually apply this, as the drm_bridge_attach() prototype changed since this patch was written - but this was trivial. This is needed on db820c as well.
Tested-by: Bjorn Andersson bjorn.andersson@linaro.org (hdmi part) Reviewed-by: Bjorn Andersson bjorn.andersson@linaro.org
Regards, Bjorn
drivers/gpu/drm/msm/edp/edp.c | 4 ---- drivers/gpu/drm/msm/hdmi/hdmi.c | 4 ---- 2 files changed, 8 deletions(-)
diff --git a/drivers/gpu/drm/msm/edp/edp.c b/drivers/gpu/drm/msm/edp/edp.c index ad4e963ccd9b..106a67473af5 100644 --- a/drivers/gpu/drm/msm/edp/edp.c +++ b/drivers/gpu/drm/msm/edp/edp.c @@ -178,10 +178,6 @@ int msm_edp_modeset_init(struct msm_edp *edp, struct drm_device *dev, goto fail; }
- ret = drm_bridge_attach(encoder, edp->bridge, NULL);
- if (ret)
goto fail;
- priv->bridges[priv->num_bridges++] = edp->bridge; priv->connectors[priv->num_connectors++] = edp->connector;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c index 1a9b6289637d..737453b6e596 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -327,10 +327,6 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, goto fail; }
- ret = drm_bridge_attach(encoder, hdmi->bridge, NULL);
- if (ret)
goto fail;
- priv->bridges[priv->num_bridges++] = hdmi->bridge; priv->connectors[priv->num_connectors++] = hdmi->connector;
-- 2.24.1
dri-devel@lists.freedesktop.org