]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
mach-stm32: Factorize MPU's region config for STM32 SoCs
authorPatrice Chotard <patrice.chotard@st.com>
Thu, 16 Nov 2017 07:59:21 +0000 (08:59 +0100)
committerTom Rini <trini@konsulko.com>
Thu, 30 Nov 2017 03:30:50 +0000 (22:30 -0500)
MPU's region setup can be factorized between STM32F4/F7/H7 SoCs family
and used a common MPU's region config.

Only one exception for STM32H7 which doesn't have device area
located at 0xA000 0000.

For STM32F4, configure_clocks() need to be moved from arch_cpu_init()
to board_early_init_f().

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
Reviewed-by: Vikas Manocha <vikas.manocha@st.com>
arch/arm/mach-stm32/Makefile
arch/arm/mach-stm32/soc.c [moved from arch/arm/mach-stm32/stm32h7/soc.c with 75% similarity]
arch/arm/mach-stm32/stm32f4/Makefile
arch/arm/mach-stm32/stm32f4/soc.c [deleted file]
arch/arm/mach-stm32/stm32f7/Makefile
arch/arm/mach-stm32/stm32f7/soc.c [deleted file]
arch/arm/mach-stm32/stm32h7/Makefile [deleted file]
board/st/stm32f429-discovery/stm32f429-discovery.c

index 0f5ac37168a57b628d6449a24a744400061a650b..c2806af69b04ea0db300c54ac0e84010da6541df 100644 (file)
@@ -4,7 +4,6 @@
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
-
+obj-y += soc.o
 obj-$(CONFIG_STM32F4) += stm32f4/
 obj-$(CONFIG_STM32F7) += stm32f7/
-obj-$(CONFIG_STM32H7) += stm32h7/
similarity index 75%
rename from arch/arm/mach-stm32/stm32h7/soc.c
rename to arch/arm/mach-stm32/soc.c
index 692dbcc04a89eaade43c75400908264c3f36abd9..df20d547c5008361413c647ec8a54efe7488706e 100644 (file)
@@ -9,11 +9,6 @@
 #include <asm/io.h>
 #include <asm/armv7m_mpu.h>
 
-u32 get_cpu_rev(void)
-{
-       return 0;
-}
-
 int arch_cpu_init(void)
 {
        int i;
@@ -30,11 +25,11 @@ int arch_cpu_init(void)
                { 0x00000000, REGION_0, XN_DIS, PRIV_RW_USR_RW,
                O_I_WB_RD_WR_ALLOC, REGION_4GB },
 
-               /* Code area, executable & strongly ordered */
-               { 0xD0000000, REGION_1, XN_EN, PRIV_RW_USR_RW,
-               STRONG_ORDER, REGION_8MB },
+               /* armv7m code area */
+               { 0x00000000, REGION_1, XN_DIS, PRIV_RW_USR_RW,
+               STRONG_ORDER, REGION_512MB },
 
-               /* Device area in all H7 : Not executable */
+               /* Device area : Not executable */
                { 0x40000000, REGION_2, XN_EN, PRIV_RW_USR_RW,
                DEVICE_NON_SHARED, REGION_512MB },
 
@@ -42,8 +37,14 @@ int arch_cpu_init(void)
                 * Armv7m fixed configuration: strongly ordered & not
                 * executable, not cacheable
                 */
-               { 0xE0000000, REGION_4, XN_EN, PRIV_RW_USR_RW,
+               { 0xE0000000, REGION_3, XN_EN, PRIV_RW_USR_RW,
                STRONG_ORDER, REGION_512MB },
+
+#if !defined(CONFIG_STM32H7)
+               /* Device area : Not executable */
+               { 0xA0000000, REGION_4, XN_EN, PRIV_RW_USR_RW,
+               DEVICE_NON_SHARED, REGION_512MB },
+#endif
        };
 
        disable_mpu();
@@ -53,7 +54,3 @@ int arch_cpu_init(void)
 
        return 0;
 }
-
-void s_init(void)
-{
-}
index 020e78370c84715d643a0e5dce31ce29c3505347..63db8200300255bc8ce73ff1b5931036778a6bb7 100644 (file)
@@ -8,4 +8,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y += soc.o clock.o timer.o
+obj-y += clock.o timer.o
diff --git a/arch/arm/mach-stm32/stm32f4/soc.c b/arch/arm/mach-stm32/stm32f4/soc.c
deleted file mode 100644 (file)
index 9eb655a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * (C) Copyright 2015
- * Kamil Lulko, <kamil.lulko@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/armv7m_mpu.h>
-#include <asm/arch/stm32.h>
-
-u32 get_cpu_rev(void)
-{
-       return 0;
-}
-
-int arch_cpu_init(void)
-{
-       struct mpu_region_config stm32_region_config[] = {
-               { 0x00000000, REGION_0, XN_DIS, PRIV_RW_USR_RW,
-               STRONG_ORDER, REGION_4GB },
-       };
-       int i;
-
-       configure_clocks();
-       /*
-        * Configure the memory protection unit (MPU) to allow full access to
-        * the whole 4GB address space.
-        */
-       disable_mpu();
-       for (i = 0; i < ARRAY_SIZE(stm32_region_config); i++)
-               mpu_config(&stm32_region_config[i]);
-       enable_mpu();
-
-       return 0;
-}
-
-void s_init(void)
-{
-}
index 6696b267fe434f834e1644af46ecbd583f79b4e7..8132c1323403bfd6df532a1ca948b37bc60b5792 100644 (file)
@@ -5,4 +5,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y += timer.o soc.o
+obj-y += timer.o
diff --git a/arch/arm/mach-stm32/stm32f7/soc.c b/arch/arm/mach-stm32/stm32f7/soc.c
deleted file mode 100644 (file)
index a960cc1..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * (C) Copyright 2015
- * Kamil Lulko, <kamil.lulko@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/armv7m_mpu.h>
-#include <asm/arch/stm32.h>
-
-u32 get_cpu_rev(void)
-{
-       return 0;
-}
-
-int arch_cpu_init(void)
-{
-       int i;
-
-       struct mpu_region_config stm32_region_config[] = {
-               { 0x00000000, REGION_0, XN_DIS, PRIV_RW_USR_RW,
-               O_I_WB_RD_WR_ALLOC, REGION_4GB },
-
-               { 0x00000000, REGION_1, XN_DIS, PRIV_RW_USR_RW,
-               STRONG_ORDER, REGION_512MB },
-
-               { 0x40000000, REGION_2, XN_EN, PRIV_RW_USR_RW,
-               DEVICE_NON_SHARED, REGION_512MB },
-
-               { 0xA0000000, REGION_3, XN_EN, PRIV_RW_USR_RW,
-               DEVICE_NON_SHARED, REGION_512MB },
-
-               { 0xE0000000, REGION_4, XN_EN, PRIV_RW_USR_RW,
-               STRONG_ORDER, REGION_512MB },
-       };
-
-       disable_mpu();
-       for (i = 0; i < ARRAY_SIZE(stm32_region_config); i++)
-               mpu_config(&stm32_region_config[i]);
-       enable_mpu();
-
-       return 0;
-}
-
-void s_init(void)
-{
-}
diff --git a/arch/arm/mach-stm32/stm32h7/Makefile b/arch/arm/mach-stm32/stm32h7/Makefile
deleted file mode 100644 (file)
index cba2e3b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# Copyright (C) 2017, STMicroelectronics - All Rights Reserved
-# Author(s): Patrice CHOTARD, <patrice.chotard@st.com> for STMicroelectronics.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y += soc.o
index 6f19a0563d0e09e7c69a25c9bd45ab8ddae5fef4..1c34a8efe14e314b68cfbe9953b2409c7b34baad 100644 (file)
@@ -294,6 +294,8 @@ int board_early_init_f(void)
 {
        int res;
 
+       configure_clocks();
+
        res = uart_setup_gpio();
        if (res)
                return res;