media: venus: hfi_venus: add suspend functionality for Venus 4xx
authorStanimir Varbanov <stanimir.varbanov@linaro.org>
Thu, 5 Jul 2018 13:03:44 +0000 (09:03 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 25 Jul 2018 12:46:09 +0000 (08:46 -0400)
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.varbanov@linaro.org>
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Tested-by: Alexandre Courbot <acourbot@chromium.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/qcom/venus/hfi_venus.c

index 7a83e96..1240855 100644 (file)
@@ -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);