From: Nishanth Menon <nm@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V6 05/11] ARM: OMAP: Change set_pl310_ctrl_reg to be generic
Date: Mon, 9 Mar 2015 17:12:03 -0500 [thread overview]
Message-ID: <1425939129-308-6-git-send-email-nm@ti.com> (raw)
In-Reply-To: <1425939129-308-1-git-send-email-nm@ti.com>
set_pl310_ctrl_reg does use the Secure Monitor Call (SMC) to setup
PL310 control register, however, that is something that is generic
enough to be used for OMAP5 generation of processors as well. The only
difference being the service being invoked for the function.
So, convert the service to a macro and use a generic name (same as
that used in Linux for some consistency). While at that, also add a
data barrier which is necessary as per recommendation.
While at this, smc #0 is maintained as handcoded assembly thanks to
various gcc version eccentricities, discussion thread:
http://marc.info/?t=142542166800001&r=1&w=2
Signed-off-by: Nishanth Menon <nm@ti.com>
---
arch/arm/cpu/armv7/omap-common/lowlevel_init.S | 18 +++++++++++-------
arch/arm/cpu/armv7/omap4/hwinit.c | 4 ++--
arch/arm/include/asm/arch-omap4/sys_proto.h | 4 +++-
arch/arm/include/asm/omap_common.h | 2 ++
4 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
index e19c7aececdd..80619b04df5d 100644
--- a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
+++ b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
@@ -22,11 +22,15 @@ ENTRY(save_boot_params)
b save_boot_params_ret
ENDPROC(save_boot_params)
-ENTRY(set_pl310_ctrl_reg)
- PUSH {r4-r11, lr} @ save registers - ROM code may pollute
+ENTRY(omap_smc1)
+ PUSH {r4-r12, lr} @ save registers - ROM code may pollute
@ our registers
- LDR r12, =0x102 @ Set PL310 control register - value in R0
- .word 0xe1600070 @ SMC #0 - hand assembled because -march=armv5
- @ call ROM Code API to set control register
- POP {r4-r11, pc}
-ENDPROC(set_pl310_ctrl_reg)
+ MOV r12, r0 @ Service
+ MOV r0, r1 @ Argument
+ DSB
+ DMB
+ .word 0xe1600070 @ SMC #0 - hand assembled for GCC versions
+ @ call ROM Code API for the service requested
+
+ POP {r4-r12, pc}
+ENDPROC(omap_smc1)
diff --git a/arch/arm/cpu/armv7/omap4/hwinit.c b/arch/arm/cpu/armv7/omap4/hwinit.c
index db16548fac49..9792761d40a0 100644
--- a/arch/arm/cpu/armv7/omap4/hwinit.c
+++ b/arch/arm/cpu/armv7/omap4/hwinit.c
@@ -159,11 +159,11 @@ void init_omap_revision(void)
#ifndef CONFIG_SYS_L2CACHE_OFF
void v7_outer_cache_enable(void)
{
- set_pl310_ctrl_reg(1);
+ omap_smc1(OMAP4_SERVICE_PL310_CONTROL_REG_SET, 1);
}
void v7_outer_cache_disable(void)
{
- set_pl310_ctrl_reg(0);
+ omap_smc1(OMAP4_SERVICE_PL310_CONTROL_REG_SET, 0);
}
#endif /* !CONFIG_SYS_L2CACHE_OFF */
diff --git a/arch/arm/include/asm/arch-omap4/sys_proto.h b/arch/arm/include/asm/arch-omap4/sys_proto.h
index e19975efaf50..f30f86539130 100644
--- a/arch/arm/include/asm/arch-omap4/sys_proto.h
+++ b/arch/arm/include/asm/arch-omap4/sys_proto.h
@@ -37,7 +37,6 @@ void do_set_mux(u32 base, struct pad_conf_entry const *array, int size);
void set_muxconf_regs_essential(void);
u32 wait_on_value(u32, u32, void *, u32);
void sdelay(unsigned long);
-void set_pl310_ctrl_reg(u32 val);
void setup_clocks_for_console(void);
void prcm_init(void);
void bypass_dpll(u32 const base);
@@ -57,4 +56,7 @@ int omap_vc_bypass_send_value(u8 sa, u8 reg_addr, u8 reg_data);
u32 warm_reset(void);
void force_emif_self_refresh(void);
void setup_warmreset_time(void);
+
+#define OMAP4_SERVICE_PL310_CONTROL_REG_SET 0x102
+
#endif
diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h
index 323952f5f1b4..123c84ff9593 100644
--- a/arch/arm/include/asm/omap_common.h
+++ b/arch/arm/include/asm/omap_common.h
@@ -579,6 +579,8 @@ s8 abb_setup_ldovbb(u32 fuse, u32 ldovbb);
void usb_fake_mac_from_die_id(u32 *id);
+void omap_smc1(u32 service, u32 val);
+
/* ABB */
#define OMAP_ABB_NOMINAL_OPP 0
#define OMAP_ABB_FAST_OPP 1
--
1.7.9.5
next prev parent reply other threads:[~2015-03-09 22:12 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-09 22:11 [U-Boot] [PATCH V6 00/11] ARM: OMAP3-DRA7: CP15 erratum workarounds and improvements Nishanth Menon
2015-03-09 22:11 ` [U-Boot] [PATCH V6 01/11] ARM: Introduce erratum workaround for 798870 Nishanth Menon
2015-03-11 15:48 ` Tom Rini
2015-03-15 21:50 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 02/11] ARM: Introduce erratum workaround for 454179 Nishanth Menon
2015-03-11 15:48 ` Tom Rini
2015-03-15 21:50 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 03/11] ARM: Introduce erratum workaround for 430973 Nishanth Menon
2015-03-11 15:48 ` Tom Rini
2015-03-15 21:50 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 04/11] ARM: Introduce erratum workaround for 621766 Nishanth Menon
2015-03-11 15:48 ` Tom Rini
2015-03-15 21:50 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` Nishanth Menon [this message]
2015-03-11 15:48 ` [U-Boot] [PATCH V6 05/11] ARM: OMAP: Change set_pl310_ctrl_reg to be generic Tom Rini
2015-03-15 21:51 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 06/11] ARM: OMAP3: Rename omap3.h to omap.h to be generic as all SoCs Nishanth Menon
2015-03-11 15:48 ` Tom Rini
2015-03-15 21:51 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 07/11] ARM: OMAP3: Get rid of omap3_gp_romcode_call and replace with omap_smc1 Nishanth Menon
2015-03-11 15:48 ` Tom Rini
2015-03-11 15:53 ` Nishanth Menon
2015-03-11 16:00 ` Tom Rini
2015-03-11 16:04 ` Nishanth Menon
2015-03-11 20:26 ` Paul Kocialkowski
2015-03-11 21:16 ` Tom Rini
2015-03-11 21:33 ` Paul Kocialkowski
2015-03-15 21:51 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 08/11] ARM: DRA7 / OMAP5: Add workaround for ARM errata 798870 Nishanth Menon
2015-03-11 15:48 ` Tom Rini
2015-03-15 21:51 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 09/11] ARM: OMAP5 / DRA7: Setup L2 Aux Control Register with recommended configuration Nishanth Menon
2015-03-11 15:49 ` Tom Rini
2015-03-15 21:51 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 10/11] ARM: OMAP3: Enable workaround for ARM errata 454179, 430973, 621766 Nishanth Menon
2015-03-11 15:51 ` Tom Rini
2015-03-15 21:51 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 11/11] ARM: OMAP3: rx51: " Nishanth Menon
2015-03-11 15:51 ` Tom Rini
2015-03-15 21:51 ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-11 15:48 ` [U-Boot] [PATCH V6 00/11] ARM: OMAP3-DRA7: CP15 erratum workarounds and improvements Tom Rini
2015-03-11 15:51 ` Nishanth Menon
2015-03-11 16:00 ` Tom Rini
2015-03-12 0:26 ` Matt Porter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1425939129-308-6-git-send-email-nm@ti.com \
--to=nm@ti.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox