public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [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