On 12/10/18 5:34 PM, Thierry Reding wrote: > From: Thierry Reding <treding@xxxxxxxxxx> > > Most of the CEC support code already lives in the "output" library code. > Move registration and unregistration to the library code as well to make > use of the same code with HDMI on Tegra210 and later via the SOR. > > Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> Reviewed-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> Thanks! Hans > --- > drivers/gpu/drm/tegra/drm.h | 2 +- > drivers/gpu/drm/tegra/hdmi.c | 9 --------- > drivers/gpu/drm/tegra/output.c | 11 +++++++++-- > 3 files changed, 10 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h > index 019862a41cb4..dbc9e11b0aec 100644 > --- a/drivers/gpu/drm/tegra/drm.h > +++ b/drivers/gpu/drm/tegra/drm.h > @@ -132,7 +132,7 @@ struct tegra_output { > struct drm_panel *panel; > struct i2c_adapter *ddc; > const struct edid *edid; > - struct cec_notifier *notifier; > + struct cec_notifier *cec; > unsigned int hpd_irq; > int hpd_gpio; > enum of_gpio_flags hpd_gpio_flags; > diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c > index 0082468f703c..d19973945614 100644 > --- a/drivers/gpu/drm/tegra/hdmi.c > +++ b/drivers/gpu/drm/tegra/hdmi.c > @@ -22,8 +22,6 @@ > > #include <sound/hda_verbs.h> > > -#include <media/cec-notifier.h> > - > #include "hdmi.h" > #include "drm.h" > #include "dc.h" > @@ -1709,10 +1707,6 @@ static int tegra_hdmi_probe(struct platform_device *pdev) > return PTR_ERR(hdmi->vdd); > } > > - hdmi->output.notifier = cec_notifier_get(&pdev->dev); > - if (hdmi->output.notifier == NULL) > - return -ENOMEM; > - > hdmi->output.dev = &pdev->dev; > > err = tegra_output_probe(&hdmi->output); > @@ -1771,9 +1765,6 @@ static int tegra_hdmi_remove(struct platform_device *pdev) > > tegra_output_remove(&hdmi->output); > > - if (hdmi->output.notifier) > - cec_notifier_put(hdmi->output.notifier); > - > return 0; > } > > diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c > index c662efc7e413..9c2b9dad55c3 100644 > --- a/drivers/gpu/drm/tegra/output.c > +++ b/drivers/gpu/drm/tegra/output.c > @@ -36,7 +36,7 @@ int tegra_output_connector_get_modes(struct drm_connector *connector) > else if (output->ddc) > edid = drm_get_edid(connector, output->ddc); > > - cec_notifier_set_phys_addr_from_edid(output->notifier, edid); > + cec_notifier_set_phys_addr_from_edid(output->cec, edid); > drm_connector_update_edid_property(connector, edid); > > if (edid) { > @@ -73,7 +73,7 @@ tegra_output_connector_detect(struct drm_connector *connector, bool force) > } > > if (status != connector_status_connected) > - cec_notifier_phys_addr_invalidate(output->notifier); > + cec_notifier_phys_addr_invalidate(output->cec); > > return status; > } > @@ -174,11 +174,18 @@ int tegra_output_probe(struct tegra_output *output) > disable_irq(output->hpd_irq); > } > > + output->cec = cec_notifier_get(output->dev); > + if (!output->cec) > + return -ENOMEM; > + > return 0; > } > > void tegra_output_remove(struct tegra_output *output) > { > + if (output->cec) > + cec_notifier_put(output->cec); > + > if (gpio_is_valid(output->hpd_gpio)) { > free_irq(output->hpd_irq, output); > gpio_free(output->hpd_gpio); >