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:21:09 +0000 (19:21 +0100)
This reverts commit d5e81e3a3e0b15964a86c19b5c27397676d6fc1b 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 2d532c0..5580267 100644 (file)
@@ -1738,18 +1738,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);
@@ -1777,10 +1777,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;
 }
 
@@ -1891,6 +1888,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: