]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/exynos/exynos_hdmi.c
drm/exynos/hdmi: fix disable sequence
[karo-tx-linux.git] / drivers / gpu / drm / exynos / exynos_hdmi.c
index 1ff6ab6371e8e7aaa6bce6b1fe1dee64c9e08390..9087c91347c8552d676c2f02ef89d9ee5caf7ba0 100644 (file)
@@ -1486,8 +1486,6 @@ static void hdmi_enable(struct drm_encoder *encoder)
 static void hdmi_disable(struct drm_encoder *encoder)
 {
        struct hdmi_context *hdata = encoder_to_hdmi(encoder);
-       struct drm_crtc *crtc = encoder->crtc;
-       const struct drm_crtc_helper_funcs *funcs = NULL;
 
        if (!hdata->powered)
                return;
@@ -1498,18 +1496,11 @@ static void hdmi_disable(struct drm_encoder *encoder)
         * to disable TV Subsystem should be as following,
         *      VP -> Mixer -> HDMI
         *
-        * Below codes will try to disable Mixer and VP(if used)
-        * prior to disabling HDMI.
+        * To achieve such sequence HDMI is disabled together with HDMI PHY, via
+        * pipe clock callback.
         */
-       if (crtc)
-               funcs = crtc->helper_private;
-       if (funcs && funcs->disable)
-               (*funcs->disable)(crtc);
-
-       cec_notifier_set_phys_addr(hdata->notifier, CEC_PHYS_ADDR_INVALID);
        cancel_delayed_work(&hdata->hotplug_work);
-
-       hdmiphy_disable(hdata);
+       cec_notifier_set_phys_addr(hdata->notifier, CEC_PHYS_ADDR_INVALID);
 }
 
 static const struct drm_encoder_helper_funcs exynos_hdmi_encoder_helper_funcs = {
@@ -1683,7 +1674,7 @@ static int hdmi_resources_init(struct hdmi_context *hdata)
        return hdmi_bridge_init(hdata);
 }
 
-static struct of_device_id hdmi_match_types[] = {
+static const struct of_device_id hdmi_match_types[] = {
        {
                .compatible = "samsung,exynos4210-hdmi",
                .data = &exynos4210_hdmi_driver_data,