]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "drm/vc4: hdmi: Make sure the device is powered with CEC"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 5 Feb 2022 18:01:20 +0000 (19:01 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 5 Feb 2022 18:22:06 +0000 (19:22 +0100)
This reverts commit 3a63b718200be5b1997f6eb28e5e688ec58ec41b which is
commit 20b0dfa86bef0e80b41b0e5ac38b92f23b6f27f9 upstream.

It wasn't applied correctly, something went wrong with an attempt to fix
it up again, so just revert the whole thing to be back at a clean state.

Reported-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20220205171238.GA3073350@roeck-us.net
Reported-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Link: https://lore.kernel.org/r/Yf5lNIJnvhP4ajam@kroah.com
Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>
Cc: Maxime Ripard <maxime@cerno.tech>
Cc: Michael Stapelberg <michael+drm@stapelberg.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/vc4/vc4_hdmi.c

index e6aad838065b9dc804e9505146202b7fe1a5c84d..8465914892fad7142bceebe25ed734f6cc34da42 100644 (file)
@@ -1739,18 +1739,18 @@ static int vc4_hdmi_cec_adap_enable(struct cec_adapter *adap, bool enable)
        u32 val;
        int ret;
 
-       if (enable) {
-               ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
-               if (ret)
-                       return ret;
+       ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
+       if (ret)
+               return ret;
 
-               val = HDMI_READ(HDMI_CEC_CNTRL_5);
-               val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
-                        VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
-                        VC4_HDMI_CEC_CNT_TO_4500_US_MASK);
-               val |= ((4700 / usecs) << VC4_HDMI_CEC_CNT_TO_4700_US_SHIFT) |
-                       ((4500 / usecs) << VC4_HDMI_CEC_CNT_TO_4500_US_SHIFT);
+       val = HDMI_READ(HDMI_CEC_CNTRL_5);
+       val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
+                VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
+                VC4_HDMI_CEC_CNT_TO_4500_US_MASK);
+       val |= ((4700 / usecs) << VC4_HDMI_CEC_CNT_TO_4700_US_SHIFT) |
+              ((4500 / usecs) << VC4_HDMI_CEC_CNT_TO_4500_US_SHIFT);
 
+       if (enable) {
                HDMI_WRITE(HDMI_CEC_CNTRL_5, val |
                           VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
                HDMI_WRITE(HDMI_CEC_CNTRL_5, val);
@@ -1778,10 +1778,7 @@ static int vc4_hdmi_cec_adap_enable(struct cec_adapter *adap, bool enable)
                        HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, VC4_HDMI_CPU_CEC);
                HDMI_WRITE(HDMI_CEC_CNTRL_5, val |
                           VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
-
-               pm_runtime_put(&vc4_hdmi->pdev->dev);
        }
-
        return 0;
 }
 
@@ -1892,6 +1889,8 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
        if (ret < 0)
                goto err_remove_handlers;
 
+       pm_runtime_put(&vc4_hdmi->pdev->dev);
+
        return 0;
 
 err_remove_handlers: