mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 1/2] imx-bbu-nand-fcb: do not use hardcoded devicefile
@ 2025-02-21 18:01 Stefano Manni
  2025-02-21 17:33 ` Ahmad Fatoum
  2025-02-21 18:01 ` [PATCH 2/2] ARM: boards: fix nand bbu_handler device paths Stefano Manni
  0 siblings, 2 replies; 4+ messages in thread
From: Stefano Manni @ 2025-02-21 18:01 UTC (permalink / raw)
  To: barebox; +Cc: Stefano Manni

Device file was hardcoded to "nand0.barebox".
This patch harmonize the signature of

imx6_bbu_nand_register_handler()
imx7_bbu_nand_register_handler()
imx28_bbu_nand_register_handler()

with the other bbu register functions in order to take
the devicefile as parameter.

Signed-off-by: Stefano Manni <stefano.manni@gmail.com>
---
 common/imx-bbu-nand-fcb.c | 23 ++++++++++++++++-------
 include/bbu.h             | 18 ++++++++++++------
 2 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/common/imx-bbu-nand-fcb.c b/common/imx-bbu-nand-fcb.c
index d0261140cf..0d17a7bf6a 100644
--- a/common/imx-bbu-nand-fcb.c
+++ b/common/imx-bbu-nand-fcb.c
@@ -1219,6 +1219,7 @@ static int imx_bbu_nand_update(struct bbu_handler *handler, struct bbu_data *dat
 	int used = 0;
 	int fw_orig_len = 0;
 	int used_refresh = 0, unused_refresh = 0;
+	const char *devname = handler->devicefile;
 
 	if (data->image) {
 		filetype = file_detect_type(data->image, data->len);
@@ -1230,7 +1231,12 @@ static int imx_bbu_nand_update(struct bbu_handler *handler, struct bbu_data *dat
 			return -EINVAL;
 	}
 
-	bcb_cdev = cdev_by_name(handler->devicefile);
+	/* Support both boot /dev/nand0.barebox and boot nand0.barebox */
+	devname += str_has_prefix(devname, "/dev/");
+
+	device_detect_by_name(devname);
+
+	bcb_cdev = cdev_by_name(devname);
 	if (!bcb_cdev) {
 		pr_err("%s: No FCB device!\n", __func__);
 		return -ENODEV;
@@ -1432,7 +1438,8 @@ static void imx6_fcb_create(struct imx_nand_fcb_bbu_handler *imx_handler,
 	fcb->MetadataBytes = 10;
 }
 
-int imx6_bbu_nand_register_handler(const char *name, unsigned long flags)
+int imx6_bbu_nand_register_handler(const char *name,
+		const char *devicefile, unsigned long flags)
 {
 	struct imx_nand_fcb_bbu_handler *imx_handler;
 	struct bbu_handler *handler;
@@ -1451,7 +1458,7 @@ int imx6_bbu_nand_register_handler(const char *name, unsigned long flags)
 	}
 
 	handler = &imx_handler->handler;
-	handler->devicefile = "nand0.barebox";
+	handler->devicefile = devicefile;
 	handler->name = name;
 	handler->flags = flags | BBU_HANDLER_CAN_REFRESH;
 	handler->handler = imx_bbu_nand_update;
@@ -1526,7 +1533,8 @@ static void imx28_fcb_create(struct imx_nand_fcb_bbu_handler *imx_handler,
 	fcb->EraseThreshold = readl(bch_regs + BCH_MODE);
 }
 
-int imx28_bbu_nand_register_handler(const char *name, unsigned long flags)
+int imx28_bbu_nand_register_handler(const char *name,
+		const char *devicefile, unsigned long flags)
 {
 	struct imx_nand_fcb_bbu_handler *imx_handler;
 	struct bbu_handler *handler;
@@ -1540,7 +1548,7 @@ int imx28_bbu_nand_register_handler(const char *name, unsigned long flags)
 	imx_handler->filetype = filetype_mxs_bootstream;
 
 	handler = &imx_handler->handler;
-	handler->devicefile = "nand0.barebox";
+	handler->devicefile = devicefile;
 	handler->name = name;
 	handler->flags = flags | BBU_HANDLER_CAN_REFRESH;
 	handler->handler = imx_bbu_nand_update;
@@ -1599,7 +1607,8 @@ static int imx7_fcb_write(struct mtd_info *mtd, int block, struct fcb_block *fcb
 	return mxs_nand_write_fcb_bch62(block, fcb, sizeof(*fcb));
 }
 
-int imx7_bbu_nand_register_handler(const char *name, unsigned long flags)
+int imx7_bbu_nand_register_handler(const char *name
+	   const char *devicefile, unsigned long flags)
 {
 	struct imx_nand_fcb_bbu_handler *imx_handler;
 	struct bbu_handler *handler;
@@ -1612,7 +1621,7 @@ int imx7_bbu_nand_register_handler(const char *name, unsigned long flags)
 	imx_handler->filetype = filetype_arm_barebox;
 
 	handler = &imx_handler->handler;
-	handler->devicefile = "nand0.barebox";
+	handler->devicefile = devicefile;
 	handler->name = name;
 	handler->flags = flags | BBU_HANDLER_CAN_REFRESH;
 	handler->handler = imx_bbu_nand_update;
diff --git a/include/bbu.h b/include/bbu.h
index 5105d2ac70..087d3ee827 100644
--- a/include/bbu.h
+++ b/include/bbu.h
@@ -98,19 +98,25 @@ static inline int bbu_mmcboot_register_handler(const char *name,
 #endif
 
 #if defined(CONFIG_BAREBOX_UPDATE_IMX_NAND_FCB)
-int imx6_bbu_nand_register_handler(const char *name, unsigned long flags);
-int imx7_bbu_nand_register_handler(const char *name, unsigned long flags);
-int imx28_bbu_nand_register_handler(const char *name, unsigned long flags);
+int imx6_bbu_nand_register_handler(const char *name, const char *devicefile, unsigned long flags);
+int imx7_bbu_nand_register_handler(const char *name, const char *devicefile, unsigned long flags);
+int imx28_bbu_nand_register_handler(const char *name, const char *devicefile, unsigned long flags);
 #else
-static inline int imx6_bbu_nand_register_handler(const char *name, unsigned long flags)
+static inline int imx6_bbu_nand_register_handler(const char *name,
+					       const char *devicefile,
+					       unsigned long flags)
 {
 	return -ENOSYS;
 }
-static inline int imx7_bbu_nand_register_handler(const char *name, unsigned long flags)
+static inline int imx7_bbu_nand_register_handler(const char *name,
+					       const char *devicefile,
+					       unsigned long flags)
 {
 	return -ENOSYS;
 }
-static inline int imx28_bbu_nand_register_handler(const char *name, unsigned long flags)
+static inline int imx28_bbu_nand_register_handler(const char *name,
+					       const char *devicefile,
+					       unsigned long flags)
 {
 	return -ENOSYS;
 }
-- 
2.25.1




^ permalink raw reply	[flat|nested] 4+ messages in thread
* [PATCH 2/2] ARM: boards: fix nand bbu_handler device paths
@ 2025-02-20 17:39 Stefano Manni
  0 siblings, 0 replies; 4+ messages in thread
From: Stefano Manni @ 2025-02-20 17:39 UTC (permalink / raw)
  To: barebox

The bbu handler for nand now takes the device
path as parameter and no longer use the hardcoded
value.
Make the change accordingly to all the boards
using it.

Signed-off-by: Stefano Manni <stefano.manni@gmail.com>
---
 arch/arm/boards/digi-ccimx6ulsom/board.c | 3 ++-
 arch/arm/boards/gateworks-ventana/board.c | 4 +++-
 arch/arm/boards/karo-tx6x/board.c | 3 ++-
 arch/arm/boards/phytec-som-imx6/board.c | 4 +++-
 4 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boards/digi-ccimx6ulsom/board.c 
b/arch/arm/boards/digi-ccimx6ulsom/board.c
index ef6828c02c..9765c65839 100644
--- a/arch/arm/boards/digi-ccimx6ulsom/board.c
+++ b/arch/arm/boards/digi-ccimx6ulsom/board.c
@@ -11,7 +11,8 @@ static int digi_ccimx6ulsbcpro_device_init(void)
  if (!of_machine_is_compatible("digi,ccimx6ulsbcpro"))
   return 0;

- imx6_bbu_nand_register_handler("nand", BBU_HANDLER_FLAG_DEFAULT);
+ imx6_bbu_nand_register_handler("nand", "/dev/nand0.barebox",
+ BBU_HANDLER_FLAG_DEFAULT);

  barebox_set_hostname("ccimx6ulsbcpro");

diff --git a/arch/arm/boards/gateworks-ventana/board.c 
b/arch/arm/boards/gateworks-ventana/board.c
index aa2137a971..9c0012b359 100644
--- a/arch/arm/boards/gateworks-ventana/board.c
+++ b/arch/arm/boards/gateworks-ventana/board.c
@@ -72,7 +72,9 @@ static int gw54xx_devices_init(void)
  if (gsc_get_rev(&client) < 'E')
   of_register_fixup(gw54xx_wdog_of_fixup, NULL);

- imx6_bbu_nand_register_handler("nand", BBU_HANDLER_FLAG_DEFAULT);
+ imx6_bbu_nand_register_handler("nand",
+ "/dev/nand0.barebox",
+ BBU_HANDLER_FLAG_DEFAULT);

  barebox_set_hostname("gw54xx");

diff --git a/arch/arm/boards/karo-tx6x/board.c 
b/arch/arm/boards/karo-tx6x/board.c
index f964ddefd1..1e14a75272 100644
--- a/arch/arm/boards/karo-tx6x/board.c
+++ b/arch/arm/boards/karo-tx6x/board.c
@@ -110,7 +110,8 @@ static int tx6x_devices_init(void)
   * this board has eMMC or NAND.
   */
  if (sbmr1 & (1 << 7)) {
- imx6_bbu_nand_register_handler("nand", BBU_HANDLER_FLAG_DEFAULT);
+ imx6_bbu_nand_register_handler("nand", "/dev/nand0.barebox",
+ BBU_HANDLER_FLAG_DEFAULT);
   of_device_enable_and_register_by_name("environment-nand");
   of_device_enable_and_register_by_alias("nand");
  } else {
diff --git a/arch/arm/boards/phytec-som-imx6/board.c 
b/arch/arm/boards/phytec-som-imx6/board.c
index 2db3fa1db8..7e6f61bc36 100644
--- a/arch/arm/boards/phytec-som-imx6/board.c
+++ b/arch/arm/boards/phytec-som-imx6/board.c
@@ -259,7 +259,9 @@ static int physom_imx6_probe(struct device *dev)
   imx6_bbu_internal_mmcboot_register_handler("mmc1-boot",
       "mmc1", 0);
  } else {
- imx6_bbu_nand_register_handler("nand", BBU_HANDLER_FLAG_DEFAULT);
+ imx6_bbu_nand_register_handler("nand",
+ "/dev/nand0.barebox",
+ BBU_HANDLER_FLAG_DEFAULT);
  }

  defaultenv_append_directory(defaultenv_physom_imx6);
-- 
2.25.1






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

end of thread, other threads:[~2025-02-21 18:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-21 18:01 [PATCH 1/2] imx-bbu-nand-fcb: do not use hardcoded devicefile Stefano Manni
2025-02-21 17:33 ` Ahmad Fatoum
2025-02-21 18:01 ` [PATCH 2/2] ARM: boards: fix nand bbu_handler device paths Stefano Manni
  -- strict thread matches above, loose matches on Subject: below --
2025-02-20 17:39 Stefano Manni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox