Le jeu. 22 août 2019 à 10:11, Hans Verkuil <hverkuil-cisco@xxxxxxxxx> a écrit : > > Adding Benjamin Gaignard. > > Benjamin, can you take a look at this and Ack it (or merge it if you prefer) and > ideally test it as well. This is the only patch in this series that I could not > test since I don't have any hardware. Looks good for me. Applied on drm-misc-next, Thanks, Benjamin > > Regards, > > Hans > > On 8/14/19 12:45 PM, Dariusz Marcinkiewicz wrote: > > Use the new cec_notifier_conn_(un)register() functions to > > (un)register the notifier for the HDMI connector, and fill > > in the cec_connector_info. > > > > Changes since v2: > > Don't invalidate physical address before unregistering the > > notifier. > > > > Signed-off-by: Dariusz Marcinkiewicz <darekm@xxxxxxxxxx> > > --- > > drivers/gpu/drm/sti/sti_hdmi.c | 19 ++++++++++++------- > > 1 file changed, 12 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c > > index 9862c322f0c4a..bd15902b825ad 100644 > > --- a/drivers/gpu/drm/sti/sti_hdmi.c > > +++ b/drivers/gpu/drm/sti/sti_hdmi.c > > @@ -1256,6 +1256,7 @@ static int sti_hdmi_bind(struct device *dev, struct device *master, void *data) > > struct drm_device *drm_dev = data; > > struct drm_encoder *encoder; > > struct sti_hdmi_connector *connector; > > + struct cec_connector_info conn_info; > > struct drm_connector *drm_connector; > > struct drm_bridge *bridge; > > int err; > > @@ -1318,6 +1319,14 @@ static int sti_hdmi_bind(struct device *dev, struct device *master, void *data) > > goto err_sysfs; > > } > > > > + cec_fill_conn_info_from_drm(&conn_info, drm_connector); > > + hdmi->notifier = cec_notifier_conn_register(&hdmi->dev, NULL, > > + &conn_info); > > + if (!hdmi->notifier) { > > + hdmi->drm_connector = NULL; > > + return -ENOMEM; > > + } > > + > > /* Enable default interrupts */ > > hdmi_write(hdmi, HDMI_DEFAULT_INT, HDMI_INT_EN); > > > > @@ -1331,6 +1340,9 @@ static int sti_hdmi_bind(struct device *dev, struct device *master, void *data) > > static void sti_hdmi_unbind(struct device *dev, > > struct device *master, void *data) > > { > > + struct sti_hdmi *hdmi = dev_get_drvdata(dev); > > + > > + cec_notifier_conn_unregister(hdmi->notifier); > > } > > > > static const struct component_ops sti_hdmi_ops = { > > @@ -1436,10 +1448,6 @@ static int sti_hdmi_probe(struct platform_device *pdev) > > goto release_adapter; > > } > > > > - hdmi->notifier = cec_notifier_get(&pdev->dev); > > - if (!hdmi->notifier) > > - goto release_adapter; > > - > > hdmi->reset = devm_reset_control_get(dev, "hdmi"); > > /* Take hdmi out of reset */ > > if (!IS_ERR(hdmi->reset)) > > @@ -1459,14 +1467,11 @@ static int sti_hdmi_remove(struct platform_device *pdev) > > { > > struct sti_hdmi *hdmi = dev_get_drvdata(&pdev->dev); > > > > - cec_notifier_set_phys_addr(hdmi->notifier, CEC_PHYS_ADDR_INVALID); > > - > > i2c_put_adapter(hdmi->ddc_adapt); > > if (hdmi->audio_pdev) > > platform_device_unregister(hdmi->audio_pdev); > > component_del(&pdev->dev, &sti_hdmi_ops); > > > > - cec_notifier_put(hdmi->notifier); > > return 0; > > } > > > > >