* [U-Boot] [PATCH] mach-stm32: Factorize MPU's region config for STM32 SoCs
@ 2017-11-16 7:59 patrice.chotard at st.com
2017-11-16 17:55 ` Vikas Manocha
2017-11-30 15:35 ` [U-Boot] " Tom Rini
0 siblings, 2 replies; 3+ messages in thread
From: patrice.chotard at st.com @ 2017-11-16 7:59 UTC (permalink / raw)
To: u-boot
From: Patrice Chotard <patrice.chotard@st.com>
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>
---
arch/arm/mach-stm32/Makefile | 3 +-
arch/arm/mach-stm32/{stm32h7 => }/soc.c | 25 +++++------
arch/arm/mach-stm32/stm32f4/Makefile | 2 +-
arch/arm/mach-stm32/stm32f4/soc.c | 41 ------------------
arch/arm/mach-stm32/stm32f7/Makefile | 2 +-
arch/arm/mach-stm32/stm32f7/soc.c | 49 ----------------------
arch/arm/mach-stm32/stm32h7/Makefile | 8 ----
board/st/stm32f429-discovery/stm32f429-discovery.c | 2 +
8 files changed, 16 insertions(+), 116 deletions(-)
rename arch/arm/mach-stm32/{stm32h7 => }/soc.c (75%)
delete mode 100644 arch/arm/mach-stm32/stm32f4/soc.c
delete mode 100644 arch/arm/mach-stm32/stm32f7/soc.c
delete mode 100644 arch/arm/mach-stm32/stm32h7/Makefile
diff --git a/arch/arm/mach-stm32/Makefile b/arch/arm/mach-stm32/Makefile
index 0f5ac37..c2806af 100644
--- a/arch/arm/mach-stm32/Makefile
+++ b/arch/arm/mach-stm32/Makefile
@@ -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/
diff --git a/arch/arm/mach-stm32/stm32h7/soc.c b/arch/arm/mach-stm32/soc.c
similarity index 75%
rename from arch/arm/mach-stm32/stm32h7/soc.c
rename to arch/arm/mach-stm32/soc.c
index 692dbcc..df20d54 100644
--- a/arch/arm/mach-stm32/stm32h7/soc.c
+++ b/arch/arm/mach-stm32/soc.c
@@ -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)
-{
-}
diff --git a/arch/arm/mach-stm32/stm32f4/Makefile b/arch/arm/mach-stm32/stm32f4/Makefile
index 020e783..63db820 100644
--- a/arch/arm/mach-stm32/stm32f4/Makefile
+++ b/arch/arm/mach-stm32/stm32f4/Makefile
@@ -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
index 9eb655a..0000000
--- a/arch/arm/mach-stm32/stm32f4/soc.c
+++ /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)
-{
-}
diff --git a/arch/arm/mach-stm32/stm32f7/Makefile b/arch/arm/mach-stm32/stm32f7/Makefile
index 6696b26..8132c13 100644
--- a/arch/arm/mach-stm32/stm32f7/Makefile
+++ b/arch/arm/mach-stm32/stm32f7/Makefile
@@ -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
index a960cc1..0000000
--- a/arch/arm/mach-stm32/stm32f7/soc.c
+++ /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
index cba2e3b..0000000
--- a/arch/arm/mach-stm32/stm32h7/Makefile
+++ /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
diff --git a/board/st/stm32f429-discovery/stm32f429-discovery.c b/board/st/stm32f429-discovery/stm32f429-discovery.c
index d6763c3..9ca887c 100644
--- a/board/st/stm32f429-discovery/stm32f429-discovery.c
+++ b/board/st/stm32f429-discovery/stm32f429-discovery.c
@@ -293,6 +293,8 @@ int board_early_init_f(void)
{
int res;
+ configure_clocks();
+
res = uart_setup_gpio();
if (res)
return res;
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [U-Boot] [PATCH] mach-stm32: Factorize MPU's region config for STM32 SoCs
2017-11-16 7:59 [U-Boot] [PATCH] mach-stm32: Factorize MPU's region config for STM32 SoCs patrice.chotard at st.com
@ 2017-11-16 17:55 ` Vikas Manocha
2017-11-30 15:35 ` [U-Boot] " Tom Rini
1 sibling, 0 replies; 3+ messages in thread
From: Vikas Manocha @ 2017-11-16 17:55 UTC (permalink / raw)
To: u-boot
looks good,
On 11/15/2017 11:59 PM, patrice.chotard at st.com wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
>
> 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>
Cheers,
Vikas
> ---
> arch/arm/mach-stm32/Makefile | 3 +-
> arch/arm/mach-stm32/{stm32h7 => }/soc.c | 25 +++++------
> arch/arm/mach-stm32/stm32f4/Makefile | 2 +-
> arch/arm/mach-stm32/stm32f4/soc.c | 41 ------------------
> arch/arm/mach-stm32/stm32f7/Makefile | 2 +-
> arch/arm/mach-stm32/stm32f7/soc.c | 49 ----------------------
> arch/arm/mach-stm32/stm32h7/Makefile | 8 ----
> board/st/stm32f429-discovery/stm32f429-discovery.c | 2 +
> 8 files changed, 16 insertions(+), 116 deletions(-)
> rename arch/arm/mach-stm32/{stm32h7 => }/soc.c (75%)
> delete mode 100644 arch/arm/mach-stm32/stm32f4/soc.c
> delete mode 100644 arch/arm/mach-stm32/stm32f7/soc.c
> delete mode 100644 arch/arm/mach-stm32/stm32h7/Makefile
>
> diff --git a/arch/arm/mach-stm32/Makefile b/arch/arm/mach-stm32/Makefile
> index 0f5ac37..c2806af 100644
> --- a/arch/arm/mach-stm32/Makefile
> +++ b/arch/arm/mach-stm32/Makefile
> @@ -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/
> diff --git a/arch/arm/mach-stm32/stm32h7/soc.c b/arch/arm/mach-stm32/soc.c
> similarity index 75%
> rename from arch/arm/mach-stm32/stm32h7/soc.c
> rename to arch/arm/mach-stm32/soc.c
> index 692dbcc..df20d54 100644
> --- a/arch/arm/mach-stm32/stm32h7/soc.c
> +++ b/arch/arm/mach-stm32/soc.c
> @@ -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)
> -{
> -}
> diff --git a/arch/arm/mach-stm32/stm32f4/Makefile b/arch/arm/mach-stm32/stm32f4/Makefile
> index 020e783..63db820 100644
> --- a/arch/arm/mach-stm32/stm32f4/Makefile
> +++ b/arch/arm/mach-stm32/stm32f4/Makefile
> @@ -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
> index 9eb655a..0000000
> --- a/arch/arm/mach-stm32/stm32f4/soc.c
> +++ /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)
> -{
> -}
> diff --git a/arch/arm/mach-stm32/stm32f7/Makefile b/arch/arm/mach-stm32/stm32f7/Makefile
> index 6696b26..8132c13 100644
> --- a/arch/arm/mach-stm32/stm32f7/Makefile
> +++ b/arch/arm/mach-stm32/stm32f7/Makefile
> @@ -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
> index a960cc1..0000000
> --- a/arch/arm/mach-stm32/stm32f7/soc.c
> +++ /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
> index cba2e3b..0000000
> --- a/arch/arm/mach-stm32/stm32h7/Makefile
> +++ /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
> diff --git a/board/st/stm32f429-discovery/stm32f429-discovery.c b/board/st/stm32f429-discovery/stm32f429-discovery.c
> index d6763c3..9ca887c 100644
> --- a/board/st/stm32f429-discovery/stm32f429-discovery.c
> +++ b/board/st/stm32f429-discovery/stm32f429-discovery.c
> @@ -293,6 +293,8 @@ int board_early_init_f(void)
> {
> int res;
>
> + configure_clocks();
> +
> res = uart_setup_gpio();
> if (res)
> return res;
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [U-Boot] mach-stm32: Factorize MPU's region config for STM32 SoCs
2017-11-16 7:59 [U-Boot] [PATCH] mach-stm32: Factorize MPU's region config for STM32 SoCs patrice.chotard at st.com
2017-11-16 17:55 ` Vikas Manocha
@ 2017-11-30 15:35 ` Tom Rini
1 sibling, 0 replies; 3+ messages in thread
From: Tom Rini @ 2017-11-30 15:35 UTC (permalink / raw)
To: u-boot
On Thu, Nov 16, 2017 at 08:59:21AM +0100, patrice.chotard at st.com wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
>
> 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>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171130/308de9c9/attachment.sig>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-11-30 15:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-16 7:59 [U-Boot] [PATCH] mach-stm32: Factorize MPU's region config for STM32 SoCs patrice.chotard at st.com
2017-11-16 17:55 ` Vikas Manocha
2017-11-30 15:35 ` [U-Boot] " Tom Rini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox