Message ID | 20230709202511.287794-3-dmitry.baryshkov@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | drm/bridge_connector: implement OOB HPD handling | expand |
On 2023-07-09 23:25:10 +0300, Dmitry Baryshkov wrote: > In some cases the bridge drivers would like to receive hotplug events > even in the case new status is equal to the old status. In the DP case > this is used to deliver "attention" messages to the DP host. Stop > filtering the events in the drm_bridge_connector_hpd_cb() and let > drivers decide whether they would like to receive the event or not. Worth mentioning in the commit message that all current bridges which set .hpd_notify appear to be safe w.r.t multiple calls with the same status. meson_encoder_hdmi.c will do unnecessary work when called repeatedly with status connected. Not sure if it is worth adressing since I don't expect multiple calls with connector_status_connected to occur for this particular bridge. Reviewed-By: Janne Grunau <j@jannau.net> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > drivers/gpu/drm/drm_bridge_connector.c | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c > index 19ae4a177ac3..84d8d310ef04 100644 > --- a/drivers/gpu/drm/drm_bridge_connector.c > +++ b/drivers/gpu/drm/drm_bridge_connector.c > @@ -113,16 +113,11 @@ static void drm_bridge_connector_hpd_cb(void *cb_data, > struct drm_bridge_connector *drm_bridge_connector = cb_data; > struct drm_connector *connector = &drm_bridge_connector->base; > struct drm_device *dev = connector->dev; > - enum drm_connector_status old_status; > > mutex_lock(&dev->mode_config.mutex); > - old_status = connector->status; > connector->status = status; > mutex_unlock(&dev->mode_config.mutex); > > - if (old_status == status) > - return; > - > drm_bridge_connector_hpd_notify(connector, status); > > drm_kms_helper_hotplug_event(dev); > -- > 2.39.2 >
diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c index 19ae4a177ac3..84d8d310ef04 100644 --- a/drivers/gpu/drm/drm_bridge_connector.c +++ b/drivers/gpu/drm/drm_bridge_connector.c @@ -113,16 +113,11 @@ static void drm_bridge_connector_hpd_cb(void *cb_data, struct drm_bridge_connector *drm_bridge_connector = cb_data; struct drm_connector *connector = &drm_bridge_connector->base; struct drm_device *dev = connector->dev; - enum drm_connector_status old_status; mutex_lock(&dev->mode_config.mutex); - old_status = connector->status; connector->status = status; mutex_unlock(&dev->mode_config.mutex); - if (old_status == status) - return; - drm_bridge_connector_hpd_notify(connector, status); drm_kms_helper_hotplug_event(dev);
In some cases the bridge drivers would like to receive hotplug events even in the case new status is equal to the old status. In the DP case this is used to deliver "attention" messages to the DP host. Stop filtering the events in the drm_bridge_connector_hpd_cb() and let drivers decide whether they would like to receive the event or not. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> --- drivers/gpu/drm/drm_bridge_connector.c | 5 ----- 1 file changed, 5 deletions(-)