media: venus: hfi_venus: Only consider sys_idle_indicator on V1
authorKonrad Dybcio <konrad.dybcio@linaro.org>
Tue, 30 May 2023 12:30:35 +0000 (14:30 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Thu, 10 Aug 2023 05:58:34 +0000 (07:58 +0200)
As per information from Qualcomm [1], this property is not really
supported beyond msm8916 (HFI V1) and some newer HFI versions really
dislike receiving it, going as far as crashing the device.

Only consider toggling it (via the module option) on HFIV1.
While at it, get rid of the global static variable (which defaulted
to zero) which was never explicitly assigned to for V1.

Note: [1] is a reply to the actual message in question, as lore did not
properly receive some of the emails..

[1] https://lore.kernel.org/lkml/955cd520-3881-0c22-d818-13fe9a47e124@linaro.org/
Fixes: 7ed9e0b3393c ("media: venus: hfi, vdec: v6 Add IS_V6() to existing IS_V4() if locations")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Stanimir Varbanov <stanimir.k.varbanov@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/qcom/venus/hfi_venus.c

index f0b46389e8d569c8e3e2dfd56ee55d10f45c8f6b..918a283bd890083887c141e225043f0419292a1d 100644 (file)
@@ -131,7 +131,6 @@ struct venus_hfi_device {
 
 static bool venus_pkt_debug;
 int venus_fw_debug = HFI_DEBUG_MSG_ERROR | HFI_DEBUG_MSG_FATAL;
-static bool venus_sys_idle_indicator;
 static bool venus_fw_low_power_mode = true;
 static int venus_hw_rsp_timeout = 1000;
 static bool venus_fw_coverage;
@@ -927,17 +926,12 @@ static int venus_sys_set_default_properties(struct venus_hfi_device *hdev)
        if (ret)
                dev_warn(dev, "setting fw debug msg ON failed (%d)\n", ret);
 
-       /*
-        * Idle indicator is disabled by default on some 4xx firmware versions,
-        * enable it explicitly in order to make suspend functional by checking
-        * WFI (wait-for-interrupt) bit.
-        */
-       if (IS_V4(hdev->core) || IS_V6(hdev->core))
-               venus_sys_idle_indicator = true;
-
-       ret = venus_sys_set_idle_message(hdev, venus_sys_idle_indicator);
-       if (ret)
-               dev_warn(dev, "setting idle response ON failed (%d)\n", ret);
+       /* HFI_PROPERTY_SYS_IDLE_INDICATOR is not supported beyond 8916 (HFI V1) */
+       if (IS_V1(hdev->core)) {
+               ret = venus_sys_set_idle_message(hdev, false);
+               if (ret)
+                       dev_warn(dev, "setting idle response ON failed (%d)\n", ret);
+       }
 
        ret = venus_sys_set_power_control(hdev, venus_fw_low_power_mode);
        if (ret)