platform: msm_shared: Add support for lpae
Add support for lpae mapping and scm apis to check if mapping of tz and
hypervisor memory is allowed
Change-Id: Ibdb838b0ca82aaedc49990617468dbf9773c4ad5
diff --git a/platform/msm_shared/include/mmu.h b/platform/msm_shared/include/mmu.h
index 6d001e7..d70872e 100644
--- a/platform/msm_shared/include/mmu.h
+++ b/platform/msm_shared/include/mmu.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2011, 2015 The Linux Foundation. All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -30,12 +30,23 @@
#define __MSM_SHARED_MMU_H__
#include <sys/types.h>
+#include <arch/arm/mmu.h>
+#ifdef LPAE
+typedef struct {
+ uint64_t paddress;
+ uint64_t vaddress;
+ mapping_type type;
+ uint64_t size;
+ uint64_t flags;
+} mmu_section_t;
+#else
typedef struct {
addr_t paddress;
addr_t vaddress;
uint32_t num_of_sections;
uint32_t flags;
} mmu_section_t;
+#endif
#endif
diff --git a/platform/msm_shared/include/scm.h b/platform/msm_shared/include/scm.h
index 2cdca66..95f4f46 100644
--- a/platform/msm_shared/include/scm.h
+++ b/platform/msm_shared/include/scm.h
@@ -235,6 +235,7 @@
#define SVC_MEMORY_PROTECTION 0x0C
#define TZ_SVC_CRYPTO 0x0A
#define SCM_SVC_INFO 0x06
+#define TZ_SVC_DLOAD_MODE 0x3
/*Service specific command IDs */
#define ERR_FATAL_ENABLE 0x0
@@ -461,4 +462,5 @@
bool is_scm_armv8_support();
int scm_dload_mode(int mode);
+int scm_device_enter_dload();
#endif
diff --git a/platform/msm_shared/scm.c b/platform/msm_shared/scm.c
index 5179e8e..cdb0282 100644
--- a/platform/msm_shared/scm.c
+++ b/platform/msm_shared/scm.c
@@ -1334,4 +1334,22 @@
return ret;
}
+
+bool scm_device_enter_dload()
+{
+ uint32_t ret = 0;
+
+ scmcall_arg scm_arg = {0};
+ scmcall_ret scm_ret = {0};
+
+ scm_arg.x0 = MAKE_SIP_SCM_CMD(TZ_SVC_DLOAD_MODE, SCM_DLOAD_CMD);
+ ret = scm_call2(&scm_arg, &scm_ret);
+ if (ret)
+ dprintf(CRITICAL, "SCM call to check dload mode failed: %x\n", ret);
+
+ if (!ret && (scm_io_read(TCSR_BOOT_MISC_DETECT) == SCM_DLOAD_MODE))
+ return true;
+
+ return false;
+}
#endif