Re: [U-Boot] [PATCH v2 1/3] exynos: move tzpc_init to armv7/exynos
Dear Minkyu, Thanks for the review. On 29 March 2013 08:27, Minkyu Kang mk7.k...@samsung.com wrote: Dear Inderpal Singh, On 15/03/13 15:23, Inderpal Singh wrote: tzpc_init is common for all exynos5 boards, hence move it to armv7/exynos so that all other boards can use it. Also update the smdk5250 Makefile and config file. Signed-off-by: Inderpal Singh inderpal.si...@linaro.org Acked-by: Chander Kashyap chander.kash...@linaro.org --- arch/arm/cpu/armv7/exynos/Makefile |2 +- arch/arm/cpu/armv7/exynos/tzpc_init.c | 48 +++ arch/arm/include/asm/arch-exynos/tzpc.h | 28 ++ board/samsung/smdk5250/Makefile |1 - board/samsung/smdk5250/setup.h | 25 board/samsung/smdk5250/tzpc_init.c | 48 --- include/configs/exynos5250-dt.h |2 -- 7 files changed, 77 insertions(+), 77 deletions(-) create mode 100644 arch/arm/cpu/armv7/exynos/tzpc_init.c delete mode 100644 board/samsung/smdk5250/tzpc_init.c diff --git a/arch/arm/cpu/armv7/exynos/Makefile b/arch/arm/cpu/armv7/exynos/Makefile index 9119961..b9cf921 100644 --- a/arch/arm/cpu/armv7/exynos/Makefile +++ b/arch/arm/cpu/armv7/exynos/Makefile @@ -22,7 +22,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(SOC).o -COBJS+= clock.o power.o soc.o system.o pinmux.o +COBJS+= clock.o power.o soc.o system.o pinmux.o tzpc_init.o patch looks good. but, do we need to build tzpc always? and please rename tzpc_init.c to just tzpc.c. Yes, we need it always. I have renamed the file to tzpc.c in the v3 version. SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) diff --git a/arch/arm/cpu/armv7/exynos/tzpc_init.c b/arch/arm/cpu/armv7/exynos/tzpc_init.c new file mode 100644 index 000..81adb4b --- /dev/null +++ b/arch/arm/cpu/armv7/exynos/tzpc_init.c @@ -0,0 +1,48 @@ +/* + * Lowlevel setup for SMDK5250 board based on S5PC520 + * + * Copyright (C) 2012 Samsung Electronics + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include asm/arch/tzpc.h +#include asm/io.h + +/* Setting TZPC[TrustZone Protection Controller] */ +void tzpc_init(void) +{ + struct exynos_tzpc *tzpc; + unsigned int addr; + + for (addr = TZPC0_BASE; addr = TZPC9_BASE; addr += TZPC_BASE_OFFSET) { + tzpc = (struct exynos_tzpc *)addr; + + if (addr == TZPC0_BASE) + writel(R0SIZE, tzpc-r0size); + + writel(DECPROTXSET, tzpc-decprot0set); + writel(DECPROTXSET, tzpc-decprot1set); + + if (addr != TZPC9_BASE) { + writel(DECPROTXSET, tzpc-decprot2set); + writel(DECPROTXSET, tzpc-decprot3set); + } + } +} diff --git a/arch/arm/include/asm/arch-exynos/tzpc.h b/arch/arm/include/asm/arch-exynos/tzpc.h index c5eb4b1..050ad70 100644 --- a/arch/arm/include/asm/arch-exynos/tzpc.h +++ b/arch/arm/include/asm/arch-exynos/tzpc.h @@ -47,6 +47,34 @@ struct exynos_tzpc { unsigned int pcellid2; unsigned int pcellid3; }; + +/* TZPC : Register Offsets */ +#define TZPC0_BASE 0x1010 +#define TZPC1_BASE 0x1011 +#define TZPC2_BASE 0x1012 +#define TZPC3_BASE 0x1013 +#define TZPC4_BASE 0x1014 +#define TZPC5_BASE 0x1015 +#define TZPC6_BASE 0x1016 +#define TZPC7_BASE 0x1017 +#define TZPC8_BASE 0x1018 +#define TZPC9_BASE 0x1019 we did not need these defines. please use samsung_get_base_tzpc(). Yes, good point. Have removed these macros and used samsung_get_base tzpc in v3. With Regards, Inder + +#define TZPC_BASE_OFFSET 0x1 + +/* + * TZPC Register Value : + * R0SIZE: 0x0 : Size of secured ram + */ +#define R0SIZE 0x0 + +/* + * TZPC Decode Protection Register Value : + * DECPROTXSET: 0xFF : Set Decode region to
Re: [U-Boot] [PATCH v2 1/3] exynos: move tzpc_init to armv7/exynos
Dear Inderpal Singh, On 15/03/13 15:23, Inderpal Singh wrote: tzpc_init is common for all exynos5 boards, hence move it to armv7/exynos so that all other boards can use it. Also update the smdk5250 Makefile and config file. Signed-off-by: Inderpal Singh inderpal.si...@linaro.org Acked-by: Chander Kashyap chander.kash...@linaro.org --- arch/arm/cpu/armv7/exynos/Makefile |2 +- arch/arm/cpu/armv7/exynos/tzpc_init.c | 48 +++ arch/arm/include/asm/arch-exynos/tzpc.h | 28 ++ board/samsung/smdk5250/Makefile |1 - board/samsung/smdk5250/setup.h | 25 board/samsung/smdk5250/tzpc_init.c | 48 --- include/configs/exynos5250-dt.h |2 -- 7 files changed, 77 insertions(+), 77 deletions(-) create mode 100644 arch/arm/cpu/armv7/exynos/tzpc_init.c delete mode 100644 board/samsung/smdk5250/tzpc_init.c diff --git a/arch/arm/cpu/armv7/exynos/Makefile b/arch/arm/cpu/armv7/exynos/Makefile index 9119961..b9cf921 100644 --- a/arch/arm/cpu/armv7/exynos/Makefile +++ b/arch/arm/cpu/armv7/exynos/Makefile @@ -22,7 +22,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(SOC).o -COBJS+= clock.o power.o soc.o system.o pinmux.o +COBJS+= clock.o power.o soc.o system.o pinmux.o tzpc_init.o patch looks good. but, do we need to build tzpc always? and please rename tzpc_init.c to just tzpc.c. SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) diff --git a/arch/arm/cpu/armv7/exynos/tzpc_init.c b/arch/arm/cpu/armv7/exynos/tzpc_init.c new file mode 100644 index 000..81adb4b --- /dev/null +++ b/arch/arm/cpu/armv7/exynos/tzpc_init.c @@ -0,0 +1,48 @@ +/* + * Lowlevel setup for SMDK5250 board based on S5PC520 + * + * Copyright (C) 2012 Samsung Electronics + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include asm/arch/tzpc.h +#include asm/io.h + +/* Setting TZPC[TrustZone Protection Controller] */ +void tzpc_init(void) +{ + struct exynos_tzpc *tzpc; + unsigned int addr; + + for (addr = TZPC0_BASE; addr = TZPC9_BASE; addr += TZPC_BASE_OFFSET) { + tzpc = (struct exynos_tzpc *)addr; + + if (addr == TZPC0_BASE) + writel(R0SIZE, tzpc-r0size); + + writel(DECPROTXSET, tzpc-decprot0set); + writel(DECPROTXSET, tzpc-decprot1set); + + if (addr != TZPC9_BASE) { + writel(DECPROTXSET, tzpc-decprot2set); + writel(DECPROTXSET, tzpc-decprot3set); + } + } +} diff --git a/arch/arm/include/asm/arch-exynos/tzpc.h b/arch/arm/include/asm/arch-exynos/tzpc.h index c5eb4b1..050ad70 100644 --- a/arch/arm/include/asm/arch-exynos/tzpc.h +++ b/arch/arm/include/asm/arch-exynos/tzpc.h @@ -47,6 +47,34 @@ struct exynos_tzpc { unsigned int pcellid2; unsigned int pcellid3; }; + +/* TZPC : Register Offsets */ +#define TZPC0_BASE 0x1010 +#define TZPC1_BASE 0x1011 +#define TZPC2_BASE 0x1012 +#define TZPC3_BASE 0x1013 +#define TZPC4_BASE 0x1014 +#define TZPC5_BASE 0x1015 +#define TZPC6_BASE 0x1016 +#define TZPC7_BASE 0x1017 +#define TZPC8_BASE 0x1018 +#define TZPC9_BASE 0x1019 we did not need these defines. please use samsung_get_base_tzpc(). + +#define TZPC_BASE_OFFSET 0x1 + +/* + * TZPC Register Value : + * R0SIZE: 0x0 : Size of secured ram + */ +#define R0SIZE 0x0 + +/* + * TZPC Decode Protection Register Value : + * DECPROTXSET: 0xFF : Set Decode region to non-secure + */ +#define DECPROTXSET 0xFF +void tzpc_init(void); + #endif #endif diff --git a/board/samsung/smdk5250/Makefile b/board/samsung/smdk5250/Makefile index ecca9f3..f2c32ee 100644 --- a/board/samsung/smdk5250/Makefile +++ b/board/samsung/smdk5250/Makefile @@ -28,7 +28,6 @@ SOBJS := lowlevel_init.o COBJS:= clock_init.o COBJS+=
[U-Boot] [PATCH v2 1/3] exynos: move tzpc_init to armv7/exynos
tzpc_init is common for all exynos5 boards, hence move it to armv7/exynos so that all other boards can use it. Also update the smdk5250 Makefile and config file. Signed-off-by: Inderpal Singh inderpal.si...@linaro.org Acked-by: Chander Kashyap chander.kash...@linaro.org --- arch/arm/cpu/armv7/exynos/Makefile |2 +- arch/arm/cpu/armv7/exynos/tzpc_init.c | 48 +++ arch/arm/include/asm/arch-exynos/tzpc.h | 28 ++ board/samsung/smdk5250/Makefile |1 - board/samsung/smdk5250/setup.h | 25 board/samsung/smdk5250/tzpc_init.c | 48 --- include/configs/exynos5250-dt.h |2 -- 7 files changed, 77 insertions(+), 77 deletions(-) create mode 100644 arch/arm/cpu/armv7/exynos/tzpc_init.c delete mode 100644 board/samsung/smdk5250/tzpc_init.c diff --git a/arch/arm/cpu/armv7/exynos/Makefile b/arch/arm/cpu/armv7/exynos/Makefile index 9119961..b9cf921 100644 --- a/arch/arm/cpu/armv7/exynos/Makefile +++ b/arch/arm/cpu/armv7/exynos/Makefile @@ -22,7 +22,7 @@ include $(TOPDIR)/config.mk LIB= $(obj)lib$(SOC).o -COBJS += clock.o power.o soc.o system.o pinmux.o +COBJS += clock.o power.o soc.o system.o pinmux.o tzpc_init.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) diff --git a/arch/arm/cpu/armv7/exynos/tzpc_init.c b/arch/arm/cpu/armv7/exynos/tzpc_init.c new file mode 100644 index 000..81adb4b --- /dev/null +++ b/arch/arm/cpu/armv7/exynos/tzpc_init.c @@ -0,0 +1,48 @@ +/* + * Lowlevel setup for SMDK5250 board based on S5PC520 + * + * Copyright (C) 2012 Samsung Electronics + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include asm/arch/tzpc.h +#include asm/io.h + +/* Setting TZPC[TrustZone Protection Controller] */ +void tzpc_init(void) +{ + struct exynos_tzpc *tzpc; + unsigned int addr; + + for (addr = TZPC0_BASE; addr = TZPC9_BASE; addr += TZPC_BASE_OFFSET) { + tzpc = (struct exynos_tzpc *)addr; + + if (addr == TZPC0_BASE) + writel(R0SIZE, tzpc-r0size); + + writel(DECPROTXSET, tzpc-decprot0set); + writel(DECPROTXSET, tzpc-decprot1set); + + if (addr != TZPC9_BASE) { + writel(DECPROTXSET, tzpc-decprot2set); + writel(DECPROTXSET, tzpc-decprot3set); + } + } +} diff --git a/arch/arm/include/asm/arch-exynos/tzpc.h b/arch/arm/include/asm/arch-exynos/tzpc.h index c5eb4b1..050ad70 100644 --- a/arch/arm/include/asm/arch-exynos/tzpc.h +++ b/arch/arm/include/asm/arch-exynos/tzpc.h @@ -47,6 +47,34 @@ struct exynos_tzpc { unsigned int pcellid2; unsigned int pcellid3; }; + +/* TZPC : Register Offsets */ +#define TZPC0_BASE 0x1010 +#define TZPC1_BASE 0x1011 +#define TZPC2_BASE 0x1012 +#define TZPC3_BASE 0x1013 +#define TZPC4_BASE 0x1014 +#define TZPC5_BASE 0x1015 +#define TZPC6_BASE 0x1016 +#define TZPC7_BASE 0x1017 +#define TZPC8_BASE 0x1018 +#define TZPC9_BASE 0x1019 + +#define TZPC_BASE_OFFSET 0x1 + +/* + * TZPC Register Value : + * R0SIZE: 0x0 : Size of secured ram + */ +#define R0SIZE 0x0 + +/* + * TZPC Decode Protection Register Value : + * DECPROTXSET: 0xFF : Set Decode region to non-secure + */ +#define DECPROTXSET0xFF +void tzpc_init(void); + #endif #endif diff --git a/board/samsung/smdk5250/Makefile b/board/samsung/smdk5250/Makefile index ecca9f3..f2c32ee 100644 --- a/board/samsung/smdk5250/Makefile +++ b/board/samsung/smdk5250/Makefile @@ -28,7 +28,6 @@ SOBJS := lowlevel_init.o COBJS := clock_init.o COBJS += dmc_common.o dmc_init_ddr3.o -COBJS += tzpc_init.o COBJS += smdk5250_spl.o ifndef CONFIG_SPL_BUILD diff --git a/board/samsung/smdk5250/setup.h b/board/samsung/smdk5250/setup.h index a159601..8c1a3f4 100644 --- a/board/samsung/smdk5250/setup.h +++ b/board/samsung/smdk5250/setup.h @@ -28,18 +28,6 @@ #include config.h #include asm/arch/dmc.h -/* TZPC :