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


Reply via email to