diff mbox

[U-Boot,1/6,v3] armv8: lsch3: Add generic get_svr() in assembly

Message ID 1478170950-16083-2-git-send-email-priyanka.jain@nxp.com
State Superseded
Delegated to: York Sun
Headers show

Commit Message

Priyanka Jain Nov. 3, 2016, 11:02 a.m. UTC
Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
---
 arch/arm/cpu/armv8/fsl-layerscape/cpu.c            |    7 -------
 arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S       |    9 +++++++++
 .../include/asm/arch-fsl-layerscape/immap_lsch3.h  |    6 +++---
 3 files changed, 12 insertions(+), 10 deletions(-)

Comments

York Sun Nov. 14, 2016, 4:50 p.m. UTC | #1
On 11/03/2016 04:12 AM, Priyanka Jain wrote:
> Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
> ---
>  arch/arm/cpu/armv8/fsl-layerscape/cpu.c            |    7 -------
>  arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S       |    9 +++++++++
>  .../include/asm/arch-fsl-layerscape/immap_lsch3.h  |    6 +++---
>  3 files changed, 12 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> index b7a2e0c..2863e18 100644
> --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> @@ -305,13 +305,6 @@ u32 fsl_qoriq_core_to_type(unsigned int core)
>  	return -1;      /* cannot identify the cluster */
>  }
>
> -uint get_svr(void)
> -{
> -	struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
> -
> -	return gur_in32(&gur->svr);
> -}
> -
>  #ifdef CONFIG_DISPLAY_CPUINFO
>  int print_cpuinfo(void)
>  {
> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
> index 5d0b7a4..ee20c27 100644
> --- a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
> +++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
> @@ -13,6 +13,9 @@
>  #ifdef CONFIG_MP
>  #include <asm/arch/mp.h>
>  #endif
> +#ifdef CONFIG_FSL_LSCH3
> +#include <asm/arch-fsl-layerscape/immap_lsch3.h>
> +#endif
>
>  ENTRY(lowlevel_init)
>  	mov	x29, lr			/* Save LR */
> @@ -199,6 +202,12 @@ ENTRY(lowlevel_init)
>  ENDPROC(lowlevel_init)
>
>  #ifdef CONFIG_FSL_LSCH3
> +	.globl get_svr
> +get_svr:
> +	ldr	x1, =FSL_LSCH3_SVR
> +	ldr	w0, [x1]
> +	ret
> +

This has an issue with non_lsch3 SoCs. You will see compiling error on 
them, for example ls1012afrdm_qspi.

York
Priyanka Jain Nov. 15, 2016, 10:39 a.m. UTC | #2
> -----Original Message-----
> From: york sun
> Sent: Monday, November 14, 2016 10:20 PM
> To: Priyanka Jain <priyanka.jain@nxp.com>; u-boot@lists.denx.de
> Subject: Re: [PATCH 1/6][v3] armv8: lsch3: Add generic get_svr() in assembly
> 
> On 11/03/2016 04:12 AM, Priyanka Jain wrote:
> > Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
> > ---
> >  arch/arm/cpu/armv8/fsl-layerscape/cpu.c            |    7 -------
> >  arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S       |    9 +++++++++
> >  .../include/asm/arch-fsl-layerscape/immap_lsch3.h  |    6 +++---
> >  3 files changed, 12 insertions(+), 10 deletions(-)
> >
> > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> > b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> > index b7a2e0c..2863e18 100644
> > --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> > +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> > @@ -305,13 +305,6 @@ u32 fsl_qoriq_core_to_type(unsigned int core)
> >  	return -1;      /* cannot identify the cluster */
> >  }
> >
> > -uint get_svr(void)
> > -{
> > -	struct ccsr_gur __iomem *gur = (void
> *)(CONFIG_SYS_FSL_GUTS_ADDR);
> > -
> > -	return gur_in32(&gur->svr);
> > -}
> > -
> >  #ifdef CONFIG_DISPLAY_CPUINFO
> >  int print_cpuinfo(void)
> >  {
> > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
> > b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
> > index 5d0b7a4..ee20c27 100644
> > --- a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
> > +++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
> > @@ -13,6 +13,9 @@
> >  #ifdef CONFIG_MP
> >  #include <asm/arch/mp.h>
> >  #endif
> > +#ifdef CONFIG_FSL_LSCH3
> > +#include <asm/arch-fsl-layerscape/immap_lsch3.h>
> > +#endif
> >
> >  ENTRY(lowlevel_init)
> >  	mov	x29, lr			/* Save LR */
> > @@ -199,6 +202,12 @@ ENTRY(lowlevel_init)
> >  ENDPROC(lowlevel_init)
> >
> >  #ifdef CONFIG_FSL_LSCH3
> > +	.globl get_svr
> > +get_svr:
> > +	ldr	x1, =FSL_LSCH3_SVR
> > +	ldr	w0, [x1]
> > +	ret
> > +
> 
> This has an issue with non_lsch3 SoCs. You will see compiling error on them,
> for example ls1012afrdm_qspi.
> 
> York

I will check this for ls1012a devices and send updated patch (if required)

Priyanka
diff mbox

Patch

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
index b7a2e0c..2863e18 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
@@ -305,13 +305,6 @@  u32 fsl_qoriq_core_to_type(unsigned int core)
 	return -1;      /* cannot identify the cluster */
 }
 
-uint get_svr(void)
-{
-	struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
-
-	return gur_in32(&gur->svr);
-}
-
 #ifdef CONFIG_DISPLAY_CPUINFO
 int print_cpuinfo(void)
 {
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
index 5d0b7a4..ee20c27 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
+++ b/arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S
@@ -13,6 +13,9 @@ 
 #ifdef CONFIG_MP
 #include <asm/arch/mp.h>
 #endif
+#ifdef CONFIG_FSL_LSCH3
+#include <asm/arch-fsl-layerscape/immap_lsch3.h>
+#endif
 
 ENTRY(lowlevel_init)
 	mov	x29, lr			/* Save LR */
@@ -199,6 +202,12 @@  ENTRY(lowlevel_init)
 ENDPROC(lowlevel_init)
 
 #ifdef CONFIG_FSL_LSCH3
+	.globl get_svr
+get_svr:
+	ldr	x1, =FSL_LSCH3_SVR
+	ldr	w0, [x1]
+	ret
+
 hnf_pstate_poll:
 	/* x0 has the desired status, return 0 for success, 1 for timeout
 	 * clobber x1, x2, x3, x4, x6, x7
diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
index 7acba27..09c1033 100644
--- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
+++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
@@ -27,6 +27,7 @@ 
 #define CONFIG_SYS_FSL_PMU_CLTBENR		(CONFIG_SYS_FSL_PMU_ADDR + \
 						 0x18A0)
 #define FSL_PMU_PCTBENR_OFFSET (CONFIG_SYS_FSL_PMU_ADDR + 0x8A0)
+#define FSL_LSCH3_SVR		(CONFIG_SYS_FSL_GUTS_ADDR + 0xA4)
 
 #define CONFIG_SYS_FSL_WRIOP1_ADDR		(CONFIG_SYS_IMMR + 0x7B80000)
 #define CONFIG_SYS_FSL_WRIOP1_MDIO1	(CONFIG_SYS_FSL_WRIOP1_ADDR + 0x16000)
@@ -153,7 +154,7 @@ 
 #define TP_CLUSTER_INIT_MASK	0x0000003f	/* initiator mask */
 #define TP_INIT_PER_CLUSTER     4
 /* This is chassis generation 3 */
-
+#ifndef __ASSEMBLY__
 struct sys_info {
 	unsigned long freq_processor[CONFIG_MAX_CPUS];
 	unsigned long freq_systembus;
@@ -317,6 +318,5 @@  struct ccsr_reset {
 	u32 ip_rev2;			/* 0xbfc */
 };
 
-uint get_svr(void);
-
+#endif /*__ASSEMBLY__*/
 #endif /* __ARCH_FSL_LSCH3_IMMAP_H_ */