Merge tag 'drm-misc-next-2021-04-09' of git://anongit.freedesktop.org/drm/drm-misc...
[linux-2.6-microblaze.git] / drivers / gpu / drm / tegra / dpaux.c
index 105fb9c..ea56c6e 100644 (file)
@@ -534,9 +534,7 @@ static int tegra_dpaux_probe(struct platform_device *pdev)
        dpaux->aux.transfer = tegra_dpaux_transfer;
        dpaux->aux.dev = &pdev->dev;
 
-       err = drm_dp_aux_register(&dpaux->aux);
-       if (err < 0)
-               return err;
+       drm_dp_aux_init(&dpaux->aux);
 
        /*
         * Assume that by default the DPAUX/I2C pads will be used for HDMI,
@@ -589,8 +587,6 @@ static int tegra_dpaux_remove(struct platform_device *pdev)
        pm_runtime_put_sync(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
 
-       drm_dp_aux_unregister(&dpaux->aux);
-
        mutex_lock(&dpaux_lock);
        list_del(&dpaux->list);
        mutex_unlock(&dpaux_lock);
@@ -723,6 +719,10 @@ int drm_dp_aux_attach(struct drm_dp_aux *aux, struct tegra_output *output)
        unsigned long timeout;
        int err;
 
+       err = drm_dp_aux_register(aux);
+       if (err < 0)
+               return err;
+
        output->connector.polled = DRM_CONNECTOR_POLL_HPD;
        dpaux->output = output;
 
@@ -760,6 +760,7 @@ int drm_dp_aux_detach(struct drm_dp_aux *aux)
        unsigned long timeout;
        int err;
 
+       drm_dp_aux_unregister(aux);
        disable_irq(dpaux->irq);
 
        if (dpaux->output->panel) {