From 36896bf3e16fc05e949b9e535da132dfbe65bd58 Mon Sep 17 00:00:00 2001 From: Pengguang Zhu Date: Fri, 12 Oct 2018 19:46:00 +0800 Subject: [PATCH] board: get ao_register_base from dts [1/1] PD#SWPL-3203 Problem: android P can not boot up on G12A with 32bit kernel Solution: get register base from dts Verify: Local Change-Id: Ifb3163a867c1c8ed4f8c344d064cead216334773 Signed-off-by: Pengguang Zhu --- arch/arm/mach-meson/meson-secure.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-meson/meson-secure.c b/arch/arm/mach-meson/meson-secure.c index d47b458..d7931ed 100644 --- a/arch/arm/mach-meson/meson-secure.c +++ b/arch/arm/mach-meson/meson-secure.c @@ -24,6 +24,8 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include +#include #include #include #include @@ -45,7 +47,7 @@ #define TZDBG(fmt, ...) #endif -#define MESON_SECURE_FLAG_REG 0xC11081F0 +#define MESON_SECURE_FLAG_REG_OFFS 0x81F0 #define MESON_SECURE_FLAG_VALUE_DISABLED 0x0 #define MESON_SECURE_FLAG_VALUE_ENABLED 0x1 #define MESON_SECURE_FLAG_VALUE_INVALID 0xFFFFFFFF @@ -62,14 +64,23 @@ static void __iomem *secure_flag_base; bool meson_secure_enabled(void) { bool ret = false; + struct device_node *np; if (secure_flag == MESON_SECURE_FLAG_VALUE_INVALID) { - secure_flag_base = ioremap(MESON_SECURE_FLAG_REG, 4); + np = of_find_compatible_node(NULL, NULL, "amlogic, iomap"); + if (!np) { + TZDBG("find iomap node fail."); + return false; + } + + secure_flag_base = of_iomap(np, 0); if (!secure_flag_base) { - TZDBG("iomap(0x%x) error.", MESON_SECURE_FLAG_REG); + TZDBG("of_iomap error."); return false; } - secure_flag = readl_relaxed(secure_flag_base); + + secure_flag = readl_relaxed(secure_flag_base + + MESON_SECURE_FLAG_REG_OFFS); } TZDBG("secure_flag: 0x%x\n", secure_flag); -- 2.7.4