All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/2] imx8: Jump from alias to OCRAM address at SPL init
@ 2019-07-12  9:33 Ye Li
  2019-07-12  9:33 ` [U-Boot] [PATCH 2/2] imx8qm/qxp: Set SPL TEXT base to OCRAM base Ye Li
  2019-07-12 11:20 ` [U-Boot] [PATCH 1/2] imx8: Jump from alias to OCRAM address at SPL init Oleksandr Suvorov
  0 siblings, 2 replies; 5+ messages in thread
From: Ye Li @ 2019-07-12  9:33 UTC (permalink / raw)
  To: u-boot

When running SPL on iMX8, the A core starts at address 0
which is a alias to OCRAM 0x100000.
The alias only map first 96KB of OCRAM, so this require the
SPL size can't beyond 96KB. But when using SPL DM, the size increase
significantly and may exceed 96KB.
So to fix the problem, we will change SPL linker address to OCRAM
address 0x100000. And then jump to the absolute address not the PC relative
address for entering OCRAM.

Signed-off-by: Ye Li <ye.li@nxp.com>
---
 arch/arm/Kconfig                       |  1 +
 arch/arm/include/asm/arch-imx8/boot0.h | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+)
 create mode 100644 arch/arm/include/asm/arch-imx8/boot0.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 01ff57c..6ea21b7 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -755,6 +755,7 @@ config ARCH_IMX8
 	select ARM64
 	select DM
 	select OF_CONTROL
+	select ENABLE_ARM_SOC_BOOT0_HOOK
 
 config ARCH_IMX8M
 	bool "NXP i.MX8M platform"
diff --git a/arch/arm/include/asm/arch-imx8/boot0.h b/arch/arm/include/asm/arch-imx8/boot0.h
new file mode 100644
index 0000000..5ce781a
--- /dev/null
+++ b/arch/arm/include/asm/arch-imx8/boot0.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2019 NXP
+ */
+
+#if defined(CONFIG_SPL_BUILD)
+	/*
+	 * We use absolute address not PC relative address to jump.
+	 * When running SPL on iMX8, the A core starts at address 0, a alias to OCRAM 0x100000,
+	 * our linker address for SPL is from 0x100000. So using absolute address can jump to
+	 * the OCRAM address from the alias.
+	 * The alias only map first 96KB of OCRAM, so this require the SPL size can't beyond 96KB.
+	 * But when using SPL DM, the size increase significantly and may exceed 96KB.
+	 * That's why we have to jump to OCRAM.
+	 */
+
+	ldr	x0, =reset
+	br	x0
+#else
+	b	reset
+#endif
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH 2/2] imx8qm/qxp: Set SPL TEXT base to OCRAM base
  2019-07-12  9:33 [U-Boot] [PATCH 1/2] imx8: Jump from alias to OCRAM address at SPL init Ye Li
@ 2019-07-12  9:33 ` Ye Li
  2019-07-12 11:11   ` Oleksandr Suvorov
  2019-07-12 11:20 ` [U-Boot] [PATCH 1/2] imx8: Jump from alias to OCRAM address at SPL init Oleksandr Suvorov
  1 sibling, 1 reply; 5+ messages in thread
From: Ye Li @ 2019-07-12  9:33 UTC (permalink / raw)
  To: u-boot

Modify the SPL TEXT base from OCRAM alias to OCRAM base 0x100000, so
we can use full OCRAM not limit to 96KB

Signed-off-by: Ye Li <ye.li@nxp.com>
---
 configs/imx8qm_mek_defconfig  | 1 +
 configs/imx8qxp_mek_defconfig | 1 +
 include/configs/imx8qm_mek.h  | 1 -
 3 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/configs/imx8qm_mek_defconfig b/configs/imx8qm_mek_defconfig
index a4d2619..544a5d9 100644
--- a/configs/imx8qm_mek_defconfig
+++ b/configs/imx8qm_mek_defconfig
@@ -3,6 +3,7 @@ CONFIG_SPL_SYS_ICACHE_OFF=y
 CONFIG_SPL_SYS_DCACHE_OFF=y
 CONFIG_ARCH_IMX8=y
 CONFIG_SYS_TEXT_BASE=0x80020000
+CONFIG_SPL_TEXT_BASE=0x100000
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/imx8qxp_mek_defconfig b/configs/imx8qxp_mek_defconfig
index 92927e3..73d6d13 100644
--- a/configs/imx8qxp_mek_defconfig
+++ b/configs/imx8qxp_mek_defconfig
@@ -3,6 +3,7 @@ CONFIG_SPL_SYS_ICACHE_OFF=y
 CONFIG_SPL_SYS_DCACHE_OFF=y
 CONFIG_ARCH_IMX8=y
 CONFIG_SYS_TEXT_BASE=0x80020000
+CONFIG_SPL_TEXT_BASE=0x100000
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/include/configs/imx8qm_mek.h b/include/configs/imx8qm_mek.h
index d06ed61..148a4ff 100644
--- a/include/configs/imx8qm_mek.h
+++ b/include/configs/imx8qm_mek.h
@@ -10,7 +10,6 @@
 #include <asm/arch/imx-regs.h>
 
 #ifdef CONFIG_SPL_BUILD
-#define CONFIG_SPL_TEXT_BASE				0x0
 #define CONFIG_SPL_MAX_SIZE				(124 * 1024)
 #define CONFIG_SYS_MONITOR_LEN				(1024 * 1024)
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH 2/2] imx8qm/qxp: Set SPL TEXT base to OCRAM base
  2019-07-12  9:33 ` [U-Boot] [PATCH 2/2] imx8qm/qxp: Set SPL TEXT base to OCRAM base Ye Li
@ 2019-07-12 11:11   ` Oleksandr Suvorov
  0 siblings, 0 replies; 5+ messages in thread
From: Oleksandr Suvorov @ 2019-07-12 11:11 UTC (permalink / raw)
  To: u-boot

On Fri, 12 Jul 2019 at 12:34, Ye Li <ye.li@nxp.com> wrote:
>
> Modify the SPL TEXT base from OCRAM alias to OCRAM base 0x100000, so
> we can use full OCRAM not limit to 96KB
>
> Signed-off-by: Ye Li <ye.li@nxp.com>

Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>

> ---
>  configs/imx8qm_mek_defconfig  | 1 +
>  configs/imx8qxp_mek_defconfig | 1 +
>  include/configs/imx8qm_mek.h  | 1 -
>  3 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/configs/imx8qm_mek_defconfig b/configs/imx8qm_mek_defconfig
> index a4d2619..544a5d9 100644
> --- a/configs/imx8qm_mek_defconfig
> +++ b/configs/imx8qm_mek_defconfig
> @@ -3,6 +3,7 @@ CONFIG_SPL_SYS_ICACHE_OFF=y
>  CONFIG_SPL_SYS_DCACHE_OFF=y
>  CONFIG_ARCH_IMX8=y
>  CONFIG_SYS_TEXT_BASE=0x80020000
> +CONFIG_SPL_TEXT_BASE=0x100000
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/imx8qxp_mek_defconfig b/configs/imx8qxp_mek_defconfig
> index 92927e3..73d6d13 100644
> --- a/configs/imx8qxp_mek_defconfig
> +++ b/configs/imx8qxp_mek_defconfig
> @@ -3,6 +3,7 @@ CONFIG_SPL_SYS_ICACHE_OFF=y
>  CONFIG_SPL_SYS_DCACHE_OFF=y
>  CONFIG_ARCH_IMX8=y
>  CONFIG_SYS_TEXT_BASE=0x80020000
> +CONFIG_SPL_TEXT_BASE=0x100000
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/include/configs/imx8qm_mek.h b/include/configs/imx8qm_mek.h
> index d06ed61..148a4ff 100644
> --- a/include/configs/imx8qm_mek.h
> +++ b/include/configs/imx8qm_mek.h
> @@ -10,7 +10,6 @@
>  #include <asm/arch/imx-regs.h>
>
>  #ifdef CONFIG_SPL_BUILD
> -#define CONFIG_SPL_TEXT_BASE                           0x0
>  #define CONFIG_SPL_MAX_SIZE                            (124 * 1024)
>  #define CONFIG_SYS_MONITOR_LEN                         (1024 * 1024)
>  #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
> --
> 2.7.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot



-- 
Best regards

Oleksandr Suvorov
cryosay at gmail.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH 1/2] imx8: Jump from alias to OCRAM address at SPL init
  2019-07-12  9:33 [U-Boot] [PATCH 1/2] imx8: Jump from alias to OCRAM address at SPL init Ye Li
  2019-07-12  9:33 ` [U-Boot] [PATCH 2/2] imx8qm/qxp: Set SPL TEXT base to OCRAM base Ye Li
@ 2019-07-12 11:20 ` Oleksandr Suvorov
  1 sibling, 0 replies; 5+ messages in thread
From: Oleksandr Suvorov @ 2019-07-12 11:20 UTC (permalink / raw)
  To: u-boot

On Fri, 12 Jul 2019 at 12:34, Ye Li <ye.li@nxp.com> wrote:
>
> When running SPL on iMX8, the A core starts at address 0
> which is a alias to OCRAM 0x100000.
> The alias only map first 96KB of OCRAM, so this require the
> SPL size can't beyond 96KB. But when using SPL DM, the size increase
> significantly and may exceed 96KB.
> So to fix the problem, we will change SPL linker address to OCRAM
> address 0x100000. And then jump to the absolute address not the PC relative
> address for entering OCRAM.
>
> Signed-off-by: Ye Li <ye.li@nxp.com>

Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>

> ---
>  arch/arm/Kconfig                       |  1 +
>  arch/arm/include/asm/arch-imx8/boot0.h | 21 +++++++++++++++++++++
>  2 files changed, 22 insertions(+)
>  create mode 100644 arch/arm/include/asm/arch-imx8/boot0.h
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 01ff57c..6ea21b7 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -755,6 +755,7 @@ config ARCH_IMX8
>         select ARM64
>         select DM
>         select OF_CONTROL
> +       select ENABLE_ARM_SOC_BOOT0_HOOK
>
>  config ARCH_IMX8M
>         bool "NXP i.MX8M platform"
> diff --git a/arch/arm/include/asm/arch-imx8/boot0.h b/arch/arm/include/asm/arch-imx8/boot0.h
> new file mode 100644
> index 0000000..5ce781a
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-imx8/boot0.h
> @@ -0,0 +1,21 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Copyright 2019 NXP
> + */
> +
> +#if defined(CONFIG_SPL_BUILD)
> +       /*
> +        * We use absolute address not PC relative address to jump.
> +        * When running SPL on iMX8, the A core starts at address 0, a alias to OCRAM 0x100000,
> +        * our linker address for SPL is from 0x100000. So using absolute address can jump to
> +        * the OCRAM address from the alias.
> +        * The alias only map first 96KB of OCRAM, so this require the SPL size can't beyond 96KB.
> +        * But when using SPL DM, the size increase significantly and may exceed 96KB.
> +        * That's why we have to jump to OCRAM.
> +        */
> +
> +       ldr     x0, =reset
> +       br      x0
> +#else
> +       b       reset
> +#endif
> --
> 2.7.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot



-- 
Best regards
Oleksandr Suvorov

Toradex AG
Altsagenstrasse 5 | 6048 Horw/Luzern | Switzerland | T: +41 41 500
4800 (main line)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot]  [PATCH 2/2] imx8qm/qxp: Set SPL TEXT base to OCRAM base
@ 2019-10-14 12:40 sbabic at denx.de
  0 siblings, 0 replies; 5+ messages in thread
From: sbabic at denx.de @ 2019-10-14 12:40 UTC (permalink / raw)
  To: u-boot

> Modify the SPL TEXT base from OCRAM alias to OCRAM base 0x100000, so
> we can use full OCRAM not limit to 96KB
> Signed-off-by: Ye Li <ye.li@nxp.com>
> Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>

Applied to u-boot-imx, master, thanks !

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-10-14 12:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-12  9:33 [U-Boot] [PATCH 1/2] imx8: Jump from alias to OCRAM address at SPL init Ye Li
2019-07-12  9:33 ` [U-Boot] [PATCH 2/2] imx8qm/qxp: Set SPL TEXT base to OCRAM base Ye Li
2019-07-12 11:11   ` Oleksandr Suvorov
2019-07-12 11:20 ` [U-Boot] [PATCH 1/2] imx8: Jump from alias to OCRAM address at SPL init Oleksandr Suvorov
2019-10-14 12:40 [U-Boot] [PATCH 2/2] imx8qm/qxp: Set SPL TEXT base to OCRAM base sbabic at denx.de

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.