diff options
author | Marco Felsch <m.felsch@pengutronix.de> | 2024-01-16 18:07:22 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2024-01-19 08:48:33 +0100 |
commit | b064b6bef70e1a3e852da797438f816ca887a97a (patch) | |
tree | 991462e5e0faf110c4a3773cc3132a20985f1003 | |
parent | 264b718bb748439cb5e3d1f4d2ec53f2d928e11b (diff) | |
download | barebox-b064b6bef70e.tar.gz barebox-b064b6bef70e.tar.xz |
ARM: i.MX8M: bundle imx-scratch code
The scatch code spread over the code base which is ok as long as we use
it for the bootrom-log only.
This commit bundles the scratch code into a own module to make it easier
to adapt later on and to make the scratch space independent of
CONFIG_ARCH_IMX_ROMAPI.
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Link: https://lore.barebox.org/20240116170738.209954-3-m.felsch@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | arch/arm/boards/tqmba9xxxca/lowlevel.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-imx/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/romapi.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-imx/scratch.c | 25 | ||||
-rw-r--r-- | arch/arm/mach-imx/xload-common.c | 8 | ||||
-rw-r--r-- | include/mach/imx/romapi.h | 2 | ||||
-rw-r--r-- | include/mach/imx/scratch.h | 17 | ||||
-rw-r--r-- | include/mach/imx/xload.h | 11 |
8 files changed, 45 insertions, 29 deletions
diff --git a/arch/arm/boards/tqmba9xxxca/lowlevel.c b/arch/arm/boards/tqmba9xxxca/lowlevel.c index 8207cd9515..0a57d02451 100644 --- a/arch/arm/boards/tqmba9xxxca/lowlevel.c +++ b/arch/arm/boards/tqmba9xxxca/lowlevel.c @@ -7,6 +7,7 @@ #include <asm/barebox-arm.h> #include <soc/imx9/ddr.h> #include <mach/imx/atf.h> +#include <mach/imx/xload.h> #include <mach/imx/romapi.h> extern char __dtb_z_imx93_tqma9352_mba93xxca_start[]; diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 3a51ae8781..9505cffa81 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -17,7 +17,7 @@ CFLAGS_imx6.o := -march=armv7-a lwl-$(CONFIG_ARCH_IMX6) += imx6-mmdc.o obj-$(CONFIG_ARCH_IMX7) += imx7.o obj-$(CONFIG_ARCH_VF610) += vf610.o -obj-pbl-$(CONFIG_ARCH_IMX8M) += imx8m.o +obj-pbl-$(CONFIG_ARCH_IMX8M) += imx8m.o scratch.o obj-$(CONFIG_ARCH_IMX9) += imx9.o lwl-$(CONFIG_ARCH_IMX_ATF) += atf.o obj-pbl-$(CONFIG_ARCH_IMX8M) += tzasc.o diff --git a/arch/arm/mach-imx/romapi.c b/arch/arm/mach-imx/romapi.c index 6d47f3c6d4..e11f382024 100644 --- a/arch/arm/mach-imx/romapi.c +++ b/arch/arm/mach-imx/romapi.c @@ -228,14 +228,6 @@ const u32 *imx8m_get_bootrom_log(void) return NULL; } -static int imx8m_reserve_scratch_area(void) -{ - return PTR_ERR_OR_ZERO(request_sdram_region("scratch area", - (ulong)arm_mem_scratch_get(), - sizeof(struct imx_scratch_space))); -} -device_initcall(imx8m_reserve_scratch_area); - void imx8m_save_bootrom_log(void *dest) { const u32 *rom_log; diff --git a/arch/arm/mach-imx/scratch.c b/arch/arm/mach-imx/scratch.c new file mode 100644 index 0000000000..0828b55ff8 --- /dev/null +++ b/arch/arm/mach-imx/scratch.c @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include <asm/barebox-arm.h> +#include <init.h> +#include <linux/err.h> +#include <mach/imx/imx8m-regs.h> +#include <mach/imx/esdctl.h> +#include <mach/imx/scratch.h> +#include <memory.h> + +struct imx_scratch_space *__imx8m_scratch_space(int ddr_buswidth) +{ + ulong endmem = MX8M_DDR_CSD1_BASE_ADDR + + imx8m_barebox_earlymem_size(ddr_buswidth); + + return (void *)arm_mem_scratch(endmem); +} + +static int imx8m_reserve_scratch_area(void) +{ + return PTR_ERR_OR_ZERO(request_sdram_region("scratch area", + (ulong)arm_mem_scratch_get(), + sizeof(struct imx_scratch_space))); +} +device_initcall(imx8m_reserve_scratch_area); diff --git a/arch/arm/mach-imx/xload-common.c b/arch/arm/mach-imx/xload-common.c index e7f8f162ee..025d87fffc 100644 --- a/arch/arm/mach-imx/xload-common.c +++ b/arch/arm/mach-imx/xload-common.c @@ -21,14 +21,6 @@ int piggydata_size(void) return input_data_end - input_data; } -struct imx_scratch_space *__imx8m_scratch_space(int ddr_buswidth) -{ - ulong endmem = MX8M_DDR_CSD1_BASE_ADDR + - imx8m_barebox_earlymem_size(ddr_buswidth); - - return (void *)arm_mem_scratch(endmem); -} - #define HDR_SIZE 512 static int diff --git a/include/mach/imx/romapi.h b/include/mach/imx/romapi.h index 05932fac88..710068a8d4 100644 --- a/include/mach/imx/romapi.h +++ b/include/mach/imx/romapi.h @@ -2,7 +2,7 @@ #ifndef __MACH_IMX_ROMAPI_H #define __MACH_IMX_ROMAPI_H -#include <mach/imx/xload.h> +#include <mach/imx/scratch.h> #include <linux/types.h> struct rom_api { diff --git a/include/mach/imx/scratch.h b/include/mach/imx/scratch.h new file mode 100644 index 0000000000..6dcf35750c --- /dev/null +++ b/include/mach/imx/scratch.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef __MACH_IMX_SCRATCH_H +#define __MACH_IMX_SCRATCH_H + +struct imx_scratch_space { + u32 bootrom_log[128]; +}; + +struct imx_scratch_space *__imx8m_scratch_space(int ddr_buswidth); + +#define imx8mq_scratch_space() __imx8m_scratch_space(32) +#define imx8mm_scratch_space() __imx8m_scratch_space(32) +#define imx8mn_scratch_space() __imx8m_scratch_space(16) +#define imx8mp_scratch_space() __imx8m_scratch_space(32) + +#endif /* __MACH_IMX_SCRATCH_H */ diff --git a/include/mach/imx/xload.h b/include/mach/imx/xload.h index 66219f9fef..99f526d38b 100644 --- a/include/mach/imx/xload.h +++ b/include/mach/imx/xload.h @@ -45,15 +45,4 @@ int piggydata_size(void); extern unsigned char input_data[]; extern unsigned char input_data_end[]; -struct imx_scratch_space { - u32 bootrom_log[128]; -}; - -struct imx_scratch_space *__imx8m_scratch_space(int ddr_buswidth); - -#define imx8mq_scratch_space() __imx8m_scratch_space(32) -#define imx8mm_scratch_space() __imx8m_scratch_space(32) -#define imx8mn_scratch_space() __imx8m_scratch_space(16) -#define imx8mp_scratch_space() __imx8m_scratch_space(32) - #endif /* __MACH_IMX_XLOAD_H */ |