diff options
author | Ahmad Fatoum <a.fatoum@pengutronix.de> | 2024-03-04 19:59:48 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2024-03-05 16:28:06 +0100 |
commit | 6debda9a26251380db7c30243ff14f80be5eb49b (patch) | |
tree | 980824909f860c88369cae1767a053f5628accfe | |
parent | b2059a82e3959301dd4f791f9d6ee465cf6b2b74 (diff) | |
download | barebox-6debda9a2625.tar.gz barebox-6debda9a2625.tar.xz |
ARM: make board data definitions accessible to other architectures
struct barebox_arm_boarddata is a way for PBL to handover a machine
number instead of a FDT. We will reuse this mechanism to hand over EFI
image handle and system table in a later commit, so prepare for that by
moving it to a central location and adjust the naming.
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Link: https://lore.barebox.org/20240304190038.3486881-64-a.fatoum@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | arch/arm/include/asm/barebox-arm.h | 30 | ||||
-rw-r--r-- | include/boarddata.h | 41 |
2 files changed, 48 insertions, 23 deletions
diff --git a/arch/arm/include/asm/barebox-arm.h b/arch/arm/include/asm/barebox-arm.h index 382fa8505a..c72fe0726f 100644 --- a/arch/arm/include/asm/barebox-arm.h +++ b/arch/arm/include/asm/barebox-arm.h @@ -23,34 +23,14 @@ #include <asm/sections.h> #include <asm/reloc.h> #include <linux/stringify.h> +#include <boarddata.h> #define ARM_EARLY_PAGETABLE_SIZE SZ_64K void __noreturn barebox_arm_entry(unsigned long membase, unsigned long memsize, void *boarddata); -struct barebox_arm_boarddata { -#define BAREBOX_ARM_BOARDDATA_MAGIC 0xabe742c3 - u32 magic; - 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_arm_entry(). The machine can be retrieved - * later with barebox_arm_machine(). - */ -static inline void boarddata_create(void *adr, u32 machine) -{ - struct barebox_arm_boarddata *bd = adr; - - bd->magic = BAREBOX_ARM_BOARDDATA_MAGIC; - bd->machine = machine; -} +#define barebox_arm_boarddata barebox_boarddata +#define BAREBOX_ARM_BOARDDATA_MAGIC BAREBOX_BOARDDATA_MAGIC u32 barebox_arm_machine(void); @@ -58,6 +38,10 @@ 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 + #if defined(CONFIG_RELOCATABLE) && defined(CONFIG_ARM_EXCEPTIONS) void arm_fixup_vectors(void); #else diff --git a/include/boarddata.h b/include/boarddata.h new file mode 100644 index 0000000000..68ad0d1464 --- /dev/null +++ b/include/boarddata.h @@ -0,0 +1,41 @@ +/* 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. + */ +#ifdef CONFIG_EFI_STUB + void *image; + void *sys_table; +#endif +}; + +/* + * 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); + +#endif /* _BAREBOX_BOARDDATA_H_ */ |