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:20:12 +0000 (19:20 +0100)
This reverts commit ac4ba79bb02881ed714adaa89faee601a18bff6d 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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/vc4/vc4_hdmi.c

index 8eac7dc637b0f581af1d0476fa4d17f3511e9b51..9392de2679a1d28a7a1b1dab8c63655ce82b34af 100644 (file)
@@ -1402,18 +1402,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);
@@ -1439,10 +1439,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;
 }
 
@@ -1534,6 +1531,8 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
        if (ret < 0)
                goto err_delete_cec_adap;
 
+       pm_runtime_put(&vc4_hdmi->pdev->dev);
+
        return 0;
 
 err_delete_cec_adap: