struct boarddata can be used to pass a ARM machine number from PBL to barebox proper. Now that we have handoff data for this purpose, retire struct boarddata and use handoff data instead.
Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de> --- arch/arm/boards/beagle/lowlevel.c | 6 +-- arch/arm/boards/chumby_falconwing/lowlevel.c | 7 +-- .../boards/crystalfontz-cfa10036/lowlevel.c | 7 +-- arch/arm/boards/freescale-mx23-evk/lowlevel.c | 7 +-- arch/arm/boards/imx233-olinuxino/lowlevel.c | 7 +-- arch/arm/boards/karo-tx28/lowlevel.c | 7 +-- arch/arm/cpu/start.c | 20 +++------ arch/arm/cpu/uncompress.c | 3 -- arch/arm/include/asm/barebox-arm.h | 24 ++++------ include/boarddata.h | 45 ------------------- include/pbl/handoff-data.h | 2 +- pbl/handoff-data.c | 4 +- 12 files changed, 31 insertions(+), 108 deletions(-) delete mode 100644 include/boarddata.h diff --git a/arch/arm/boards/beagle/lowlevel.c b/arch/arm/boards/beagle/lowlevel.c index 828c8c76b3..e7f76aca4e 100644 --- a/arch/arm/boards/beagle/lowlevel.c +++ b/arch/arm/boards/beagle/lowlevel.c @@ -164,11 +164,9 @@ static void sdrc_init(void) static noinline int beagle_board_init_sdram(void) { - struct barebox_arm_boarddata *bd = (void *)OMAP3_SRAM_SCRATCH_SPACE + 0x10; + handoff_add_arm_machine(MACH_TYPE_OMAP3_BEAGLE); - boarddata_create(bd, MACH_TYPE_OMAP3_BEAGLE); - - barebox_arm_entry(0x80000000, SZ_128M, bd); + barebox_arm_entry(0x80000000, SZ_128M, NULL); } ENTRY_FUNCTION(start_omap3_beagleboard_sdram, bootinfo, r1, r2) diff --git a/arch/arm/boards/chumby_falconwing/lowlevel.c b/arch/arm/boards/chumby_falconwing/lowlevel.c index fdda6ba5f2..e823767739 100644 --- a/arch/arm/boards/chumby_falconwing/lowlevel.c +++ b/arch/arm/boards/chumby_falconwing/lowlevel.c @@ -9,12 +9,9 @@ static noinline void continue_imx_entry(size_t size) { - static struct barebox_arm_boarddata boarddata = { - .magic = BAREBOX_ARM_BOARDDATA_MAGIC, - .machine = MACH_TYPE_CHUMBY, - }; + handoff_add_arm_machine(MACH_TYPE_CHUMBY); - barebox_arm_entry(IMX_MEMORY_BASE, size, &boarddata); + barebox_arm_entry(IMX_MEMORY_BASE, size, NULL); } ENTRY_FUNCTION(start_chumby_falconwing, r0, r1, r2) diff --git a/arch/arm/boards/crystalfontz-cfa10036/lowlevel.c b/arch/arm/boards/crystalfontz-cfa10036/lowlevel.c index 447ef0dc66..2468f304e7 100644 --- a/arch/arm/boards/crystalfontz-cfa10036/lowlevel.c +++ b/arch/arm/boards/crystalfontz-cfa10036/lowlevel.c @@ -9,12 +9,9 @@ static noinline void continue_imx_entry(size_t size) { - static struct barebox_arm_boarddata boarddata = { - .magic = BAREBOX_ARM_BOARDDATA_MAGIC, - .machine = MACH_TYPE_CFA10036, - }; + handoff_add_arm_machine(MACH_TYPE_CFA10036); - barebox_arm_entry(IMX_MEMORY_BASE, size, &boarddata); + barebox_arm_entry(IMX_MEMORY_BASE, size, NULL); } ENTRY_FUNCTION(start_cfa10036, r0, r1, r2) diff --git a/arch/arm/boards/freescale-mx23-evk/lowlevel.c b/arch/arm/boards/freescale-mx23-evk/lowlevel.c index 195ade3a7f..2f31b4fd0c 100644 --- a/arch/arm/boards/freescale-mx23-evk/lowlevel.c +++ b/arch/arm/boards/freescale-mx23-evk/lowlevel.c @@ -9,12 +9,9 @@ static noinline void continue_imx_entry(size_t size) { - static struct barebox_arm_boarddata boarddata = { - .magic = BAREBOX_ARM_BOARDDATA_MAGIC, - .machine = MACH_TYPE_MX23EVK, - }; + handoff_add_arm_machine(MACH_TYPE_MX23EVK); - barebox_arm_entry(IMX_MEMORY_BASE, size, &boarddata); + barebox_arm_entry(IMX_MEMORY_BASE, size, NULL); } ENTRY_FUNCTION(start_imx23_evk, r0, r1, r2) diff --git a/arch/arm/boards/imx233-olinuxino/lowlevel.c b/arch/arm/boards/imx233-olinuxino/lowlevel.c index 91c1ba3dba..e4b6b1207f 100644 --- a/arch/arm/boards/imx233-olinuxino/lowlevel.c +++ b/arch/arm/boards/imx233-olinuxino/lowlevel.c @@ -13,12 +13,9 @@ static noinline void continue_imx_entry(size_t size) { - static struct barebox_arm_boarddata boarddata = { - .magic = BAREBOX_ARM_BOARDDATA_MAGIC, - .machine = MACH_TYPE_IMX233_OLINUXINO, - }; + handoff_add_arm_machine(MACH_TYPE_IMX233_OLINUXINO); - barebox_arm_entry(IMX_MEMORY_BASE, size, &boarddata); + barebox_arm_entry(IMX_MEMORY_BASE, size, NULL); } ENTRY_FUNCTION(start_barebox_olinuxino_imx23, r0, r1, r2) diff --git a/arch/arm/boards/karo-tx28/lowlevel.c b/arch/arm/boards/karo-tx28/lowlevel.c index 3be5f521e1..e423d5ecab 100644 --- a/arch/arm/boards/karo-tx28/lowlevel.c +++ b/arch/arm/boards/karo-tx28/lowlevel.c @@ -17,12 +17,9 @@ static noinline void continue_imx_entry(size_t size) { - static struct barebox_arm_boarddata boarddata = { - .magic = BAREBOX_ARM_BOARDDATA_MAGIC, - .machine = MACH_TYPE_TX28, - }; + handoff_add_arm_machine(MACH_TYPE_TX28); - barebox_arm_entry(IMX_MEMORY_BASE, size, &boarddata); + barebox_arm_entry(IMX_MEMORY_BASE, size, NULL); } ENTRY_FUNCTION(start_barebox_karo_tx28, r0, r1, r2) diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index 4dbbbb56fa..3b38ad09fc 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -34,20 +34,18 @@ unsigned long arm_stack_top; static unsigned long arm_barebox_size; static unsigned long arm_endmem; static unsigned long arm_membase; -static void *barebox_boarddata; -static unsigned long barebox_boarddata_size; -const struct barebox_boarddata *barebox_get_boarddata(void) +u32 barebox_arm_machine(void) { size_t size; + unsigned int *machine; - return handoff_data_get_entry(HANDOFF_DATA_BOARDDATA, &size); -} + machine = handoff_data_get_entry(HANDOFF_DATA_ARM_MACHINE, &size); -u32 barebox_arm_machine(void) -{ - const struct barebox_boarddata *bd = barebox_get_boarddata(); - return bd ? bd->machine : 0; + if (machine) + return *machine; + + return 0; } void *barebox_arm_boot_dtb(void) @@ -119,10 +117,6 @@ EXPORT_SYMBOL_GPL(arm_mem_membase_get); static int barebox_memory_areas_init(void) { - if(barebox_boarddata) - request_barebox_region("board data", (unsigned long)barebox_boarddata, - barebox_boarddata_size); - if (IS_ENABLED(CONFIG_KASAN)) request_sdram_region("kasan shadow", kasan_shadow_base, mem_malloc_start() - kasan_shadow_base); diff --git a/arch/arm/cpu/uncompress.c b/arch/arm/cpu/uncompress.c index af702d510e..daacd22866 100644 --- a/arch/arm/cpu/uncompress.c +++ b/arch/arm/cpu/uncompress.c @@ -43,9 +43,6 @@ static void add_handoff_data(void *boarddata) handoff_data_add(HANDOFF_DATA_INTERNAL_DT_Z, boarddata, bd->datalen + sizeof(*bd)); - } else if (blob_is_arm_boarddata(boarddata)) { - handoff_data_add(HANDOFF_DATA_BOARDDATA, boarddata, - sizeof(struct barebox_arm_boarddata)); } } diff --git a/arch/arm/include/asm/barebox-arm.h b/arch/arm/include/asm/barebox-arm.h index e9afd8f453..566986e515 100644 --- a/arch/arm/include/asm/barebox-arm.h +++ b/arch/arm/include/asm/barebox-arm.h @@ -24,21 +24,19 @@ #include <asm/sections.h> #include <asm/reloc.h> #include <linux/stringify.h> -#include <boarddata.h> +#include <pbl/handoff-data.h> #define ARM_EARLY_PAGETABLE_SIZE SZ_64K -void __noreturn barebox_arm_entry(unsigned long membase, unsigned long memsize, void *boarddata); - -#define barebox_arm_boarddata barebox_boarddata -#define BAREBOX_ARM_BOARDDATA_MAGIC BAREBOX_BOARDDATA_MAGIC - -static inline bool blob_is_arm_boarddata(const void *blob) -{ - const struct barebox_arm_boarddata *bd = blob; +#define handoff_add_arm_machine(machine) \ + do { \ + static unsigned int machine_number = machine; \ + \ + handoff_data_add(HANDOFF_DATA_ARM_MACHINE, \ + &machine_number, sizeof(unsigned int)); \ + } while (0); - return bd->magic == BAREBOX_ARM_BOARDDATA_MAGIC; -} +void __noreturn barebox_arm_entry(unsigned long membase, unsigned long memsize, void *boarddata); u32 barebox_arm_machine(void); @@ -46,10 +44,6 @@ unsigned long arm_mem_ramoops_get(void); unsigned long arm_mem_membase_get(void); unsigned long arm_mem_endmem_get(void); -struct barebox_arm_boarddata *barebox_arm_get_boarddata(void); - -#define barebox_arm_get_boarddata barebox_get_boarddata - #ifdef CONFIG_ARM_EXCEPTIONS void arm_fixup_vectors(void); #else diff --git a/include/boarddata.h b/include/boarddata.h deleted file mode 100644 index 6092d5f304..0000000000 --- a/include/boarddata.h +++ /dev/null @@ -1,45 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ - -#ifndef _BAREBOX_BOARDDATA_H_ -#define _BAREBOX_BOARDDATA_H_ - -#include <linux/types.h> - -struct barebox_boarddata { -#define BAREBOX_BOARDDATA_MAGIC 0xabe742c3 - u32 magic; -#define BAREBOX_MACH_TYPE_EFI 0xef1bbef1 - u32 machine; /* machine number to pass to barebox. This may or may - * not be a ARM machine number registered on arm.linux.org.uk. - * It must only be unique across barebox. Please use a number - * that do not potientially clashes with registered machines, - * i.e. use a number > 0x10000. - */ -}; - -/* - * Create a boarddata struct at given address. Suitable to be passed - * as boarddata to barebox_$ARCH_entry(). The boarddata can be retrieved - * later with barebox_get_boarddata(). - */ -static inline struct barebox_boarddata *boarddata_create(void *adr, u32 machine) -{ - struct barebox_boarddata *bd = adr; - - bd->magic = BAREBOX_BOARDDATA_MAGIC; - bd->machine = machine; - - return bd; -} - -const struct barebox_boarddata *barebox_get_boarddata(void); - -static inline bool barebox_boarddata_is_machine(const struct barebox_boarddata *bd, - u32 machine) -{ - if (!bd || bd->magic != BAREBOX_BOARDDATA_MAGIC) - return false; - return bd->machine == machine; -} - -#endif /* _BAREBOX_BOARDDATA_H_ */ diff --git a/include/pbl/handoff-data.h b/include/pbl/handoff-data.h index 044b4bb884..d475bdd694 100644 --- a/include/pbl/handoff-data.h +++ b/include/pbl/handoff-data.h @@ -11,7 +11,7 @@ struct handoff_data { #define HANDOFF_DATA_INTERNAL_DT HANDOFF_DATA_BAREBOX(0) #define HANDOFF_DATA_INTERNAL_DT_Z HANDOFF_DATA_BAREBOX(1) #define HANDOFF_DATA_EXTERNAL_DT HANDOFF_DATA_BAREBOX(2) -#define HANDOFF_DATA_BOARDDATA HANDOFF_DATA_BAREBOX(3) +#define HANDOFF_DATA_ARM_MACHINE HANDOFF_DATA_BAREBOX(3) #define HANDOFF_DATA_EFI HANDOFF_DATA_BAREBOX(4) #define HANDOFF_DATA_BOARD(n) (0x951726fb + (n)) diff --git a/pbl/handoff-data.c b/pbl/handoff-data.c index 85c3985995..7453c9c82c 100644 --- a/pbl/handoff-data.c +++ b/pbl/handoff-data.c @@ -171,8 +171,8 @@ static const char *handoff_data_entry_name(struct handoff_data_entry *hde) return "handoff FDT (internal, compressed)"; case HANDOFF_DATA_EXTERNAL_DT: return "handoff FDT (external)"; - case HANDOFF_DATA_BOARDDATA: - return "handoff boarddata"; + case HANDOFF_DATA_ARM_MACHINE: + return "ARM machine number"; default: sprintf(name, "handoff %08x", hde->cookie); return name; -- 2.39.2