On Fri 22 Apr 16:07 PDT 2022, Dmitry Baryshkov wrote: > On 23/04/2022 01:32, Bjorn Andersson wrote: [..] > > diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_drm.c > > index 80f59cf99089..76904b1601b1 100644 > > --- a/drivers/gpu/drm/msm/dp/dp_drm.c > > +++ b/drivers/gpu/drm/msm/dp/dp_drm.c > > @@ -123,6 +123,14 @@ static enum drm_mode_status dp_connector_mode_valid( > > return dp_display_validate_mode(dp_disp, mode->clock); > > } > > +static void dp_oob_hotplug_event(struct drm_connector *connector, > > + enum drm_connector_hpd_state hpd_state) > > +{ > > + struct msm_dp *dp_disp = to_dp_connector(connector)->dp_display; > > + > > + dp_display_oob_hotplug_event(dp_disp, hpd_state); > > +} > > + > > static const struct drm_connector_funcs dp_connector_funcs = { > > .detect = dp_connector_detect, > > .fill_modes = drm_helper_probe_single_connector_modes, > > @@ -130,6 +138,7 @@ static const struct drm_connector_funcs dp_connector_funcs = { > > .reset = drm_atomic_helper_connector_reset, > > .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, > > .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, > > + .oob_hotplug_event = dp_oob_hotplug_event, > > We were (are) going to switch dp driver to use drm_bridge_connector (to fix > support for bridge chains, eDP panels, etc. > > So these changes must be ported to drm_bridge_connector (or we must > abandon/defer the idea of using the bridge_connector). > > For the oob_hotplug_event() callback proper support might be as simple as > calling drm_bridge_connector_hpd_cb(). > Are you saying that you have code ready and being merged into linux-next that I should redesign this on top of, or that you're planning to write some code in the future and DisplayPort support have to wait until then? > > }; > > static const struct drm_connector_helper_funcs dp_connector_helper_funcs = { > > @@ -160,6 +169,8 @@ struct drm_connector *dp_drm_connector_init(struct msm_dp *dp_display) > > if (ret) > > return ERR_PTR(ret); > > + connector->fwnode = fwnode_handle_get(dev_fwnode(dp_display->dev)); > > + > > This would be much more interesting. Supporting this in a generic way might > be tricky. But we can still set the fwnode manually from the dp code. > There's a slight mishmash here, because the device used to initialize the connector is the drm_dev, but we need the actual fwnode of the DP device associated with the connector. So I think this is how it needs to be done. Regards, Bjorn