On Thu 19 Mar 11:19 PDT 2020, Rob Clark wrote: > On Wed, Mar 18, 2020 at 9:39 PM Bjorn Andersson > <bjorn.andersson@xxxxxxxxxx> wrote: > > > > With the introduction of '3ef2f119bd3e ("drm/msm: Use > > drm_attach_bridge() to attach a bridge to an encoder")' the HDMI bridge > > is attached both in msm_hdmi_bridge_init() and later in > > msm_hdmi_modeset_init(). > > > > The second attempt fails as the bridge is already attached to the > > encoder and the whole process is aborted. > > > > So instead make msm_hdmi_bridge_init() just initialize the hdmi_bridge > > object and let msm_hdmi_modeset_init() attach it later. > > > > Fixes: 3ef2f119bd3e ("drm/msm: Use drm_attach_bridge() to attach a bridge to an encoder") > > Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > > Thanks, I think this should also be solved by: > > https://patchwork.freedesktop.org/patch/357331/?series=74611&rev=1 Yes, didn't find that when looking yesterday. T-b and R-b. Thanks, Bjorn > > BR, > -R > > > --- > > drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 19 +++---------------- > > 1 file changed, 3 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c > > index 6e380db9287b..0e103ee1b730 100644 > > --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c > > +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c > > @@ -271,31 +271,18 @@ static const struct drm_bridge_funcs msm_hdmi_bridge_funcs = { > > /* initialize bridge */ > > struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi) > > { > > - struct drm_bridge *bridge = NULL; > > struct hdmi_bridge *hdmi_bridge; > > - int ret; > > + struct drm_bridge *bridge; > > > > hdmi_bridge = devm_kzalloc(hdmi->dev->dev, > > sizeof(*hdmi_bridge), GFP_KERNEL); > > - if (!hdmi_bridge) { > > - ret = -ENOMEM; > > - goto fail; > > - } > > + if (!hdmi_bridge) > > + return ERR_PTR(-ENOMEM); > > > > hdmi_bridge->hdmi = hdmi; > > > > bridge = &hdmi_bridge->base; > > bridge->funcs = &msm_hdmi_bridge_funcs; > > > > - ret = drm_bridge_attach(hdmi->encoder, bridge, NULL, 0); > > - if (ret) > > - goto fail; > > - > > return bridge; > > - > > -fail: > > - if (bridge) > > - msm_hdmi_bridge_destroy(bridge); > > - > > - return ERR_PTR(ret); > > } > > -- > > 2.24.0 > > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel