summaryrefslogtreecommitdiff
path: root/drivers/gpu/arm/midgard/platform/juno_soc/mali_kbase_config_juno_soc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/arm/midgard/platform/juno_soc/mali_kbase_config_juno_soc.c')
-rw-r--r--drivers/gpu/arm/midgard/platform/juno_soc/mali_kbase_config_juno_soc.c86
1 files changed, 29 insertions, 57 deletions
diff --git a/drivers/gpu/arm/midgard/platform/juno_soc/mali_kbase_config_juno_soc.c b/drivers/gpu/arm/midgard/platform/juno_soc/mali_kbase_config_juno_soc.c
index c65481810927..3baf3d96d41a 100644
--- a/drivers/gpu/arm/midgard/platform/juno_soc/mali_kbase_config_juno_soc.c
+++ b/drivers/gpu/arm/midgard/platform/juno_soc/mali_kbase_config_juno_soc.c
@@ -1,6 +1,6 @@
/*
*
- * (C) COPYRIGHT 2011-2016 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2011-2015 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
@@ -66,76 +66,48 @@ struct kbase_pm_callback_conf pm_callbacks = {
};
/*
- * Juno Protected Mode integration
+ * Juno Secure Mode integration
*/
/* SMC Function Numbers */
-#define JUNO_SMC_PROTECTED_ENTER_FUNC 0xff06
-#define JUNO_SMC_PROTECTED_RESET_FUNC 0xff07
+#define JUNO_SMC_SECURE_ENABLE_FUNC 0xff06
+#define JUNO_SMC_SECURE_DISABLE_FUNC 0xff07
-static int juno_protected_mode_enter(struct kbase_device *kbdev)
+static int juno_secure_mode_enable(struct kbase_device *kbdev)
{
- /* T62X in SoC detected */
- u64 ret = kbase_invoke_smc(SMC_OEN_SIP,
- JUNO_SMC_PROTECTED_ENTER_FUNC, false,
- 0, 0, 0);
- return ret;
-}
-
-/* TODO: Remove these externs, reset should should be done by the firmware */
-extern void kbase_reg_write(struct kbase_device *kbdev, u16 offset, u32 value,
- struct kbase_context *kctx);
-
-extern u32 kbase_reg_read(struct kbase_device *kbdev, u16 offset,
- struct kbase_context *kctx);
-
-static int juno_protected_mode_reset(struct kbase_device *kbdev)
-{
-
- /* T62X in SoC detected */
- u64 ret = kbase_invoke_smc(SMC_OEN_SIP,
- JUNO_SMC_PROTECTED_RESET_FUNC, false,
- 0, 0, 0);
-
- /* TODO: Remove this reset, it should be done by the firmware */
- kbase_reg_write(kbdev, GPU_CONTROL_REG(GPU_COMMAND),
- GPU_COMMAND_HARD_RESET, NULL);
-
- while ((kbase_reg_read(kbdev, GPU_CONTROL_REG(GPU_IRQ_RAWSTAT), NULL)
- & RESET_COMPLETED) != RESET_COMPLETED)
- ;
+ u32 gpu_id = kbdev->gpu_props.props.raw_props.gpu_id;
- return ret;
+ if (gpu_id == GPU_ID_MAKE(GPU_ID_PI_T62X, 0, 1, 0) &&
+ kbdev->reg_start == 0x2d000000) {
+ /* T62X in SoC detected */
+ u64 ret = kbase_invoke_smc(SMC_OEN_SIP,
+ JUNO_SMC_SECURE_ENABLE_FUNC, false,
+ 0, 0, 0);
+ return ret;
+ }
+
+ return -EINVAL; /* Not supported */
}
-static bool juno_protected_mode_supported(struct kbase_device *kbdev)
+static int juno_secure_mode_disable(struct kbase_device *kbdev)
{
u32 gpu_id = kbdev->gpu_props.props.raw_props.gpu_id;
- /*
- * Protected mode is only supported for the built in GPU
- * _and_ only if the right firmware is running.
- *
- * Given that at init time the GPU is not powered up the
- * juno_protected_mode_reset function can't be used as
- * is needs to access GPU registers.
- * However, although we don't want the GPU to boot into
- * protected mode we know a GPU reset will be done after
- * this function is called so although we set the GPU to
- * protected mode it will exit protected mode before the
- * driver is ready to run work.
- */
if (gpu_id == GPU_ID_MAKE(GPU_ID_PI_T62X, 0, 1, 0) &&
- (kbdev->reg_start == 0x2d000000))
- return juno_protected_mode_enter(kbdev) == 0;
-
- return false;
+ kbdev->reg_start == 0x2d000000) {
+ /* T62X in SoC detected */
+ u64 ret = kbase_invoke_smc(SMC_OEN_SIP,
+ JUNO_SMC_SECURE_DISABLE_FUNC, false,
+ 0, 0, 0);
+ return ret;
+ }
+
+ return -EINVAL; /* Not supported */
}
-struct kbase_protected_ops juno_protected_ops = {
- .protected_mode_enter = juno_protected_mode_enter,
- .protected_mode_reset = juno_protected_mode_reset,
- .protected_mode_supported = juno_protected_mode_supported,
+struct kbase_secure_ops juno_secure_ops = {
+ .secure_mode_enable = juno_secure_mode_enable,
+ .secure_mode_disable = juno_secure_mode_disable,
};
static struct kbase_platform_config versatile_platform_config = {