This adds suspend (power collapse) functionality by reusing
the suspend function for Venus 3xx and also enables idle indicator
property for Venus 4xx (where it is disabled by default).

Signed-off-by: Stanimir Varbanov <stanimir.varba...@linaro.org>
Reviewed-by: Tomasz Figa <tf...@chromium.org>
---
 drivers/media/platform/qcom/venus/hfi_venus.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/qcom/venus/hfi_venus.c 
b/drivers/media/platform/qcom/venus/hfi_venus.c
index 7a83e967a8ea..124085556b94 100644
--- a/drivers/media/platform/qcom/venus/hfi_venus.c
+++ b/drivers/media/platform/qcom/venus/hfi_venus.c
@@ -879,6 +879,14 @@ 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))
+               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);
@@ -1533,7 +1541,7 @@ static int venus_suspend_3xx(struct venus_core *core)
 
 static int venus_suspend(struct venus_core *core)
 {
-       if (core->res->hfi_version == HFI_VERSION_3XX)
+       if (IS_V3(core) || IS_V4(core))
                return venus_suspend_3xx(core);
 
        return venus_suspend_1xx(core);
-- 
2.14.1

Reply via email to