mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* Re: [PATCH 1/2] imx-bbu-nand-fcb: do not use hardcoded devicefile
  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
  1 sibling, 0 replies; 6+ messages in thread
From: Ahmad Fatoum @ 2025-02-21 17:33 UTC (permalink / raw)
  To: Stefano Manni, barebox

Hello Stefano,

On 21.02.25 19:01, Stefano Manni wrote:
> 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.

Is this this the sole motivation behind the patch or do you
intend to actually make use of the ability of varying
the devicefile?

Thanks,
Ahmad

> 
> 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;
>  }


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



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

* [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; 6+ 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] 6+ messages in thread

* [PATCH 2/2] ARM: boards: fix nand bbu_handler device paths
  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 ` Stefano Manni
  1 sibling, 0 replies; 6+ messages in thread
From: Stefano Manni @ 2025-02-21 18:01 UTC (permalink / raw)
  To: barebox; +Cc: Stefano Manni

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] 6+ messages in thread

* Re: [PATCH 1/2] imx-bbu-nand-fcb: do not use hardcoded devicefile
  2025-02-21 10:38 ` Sascha Hauer
@ 2025-02-21 17:47   ` Stefano Manni
  0 siblings, 0 replies; 6+ messages in thread
From: Stefano Manni @ 2025-02-21 17:47 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

Hi Sasha,

sorry but I changed my workstation recently and did not restore 
send-email as on the old one. I thought the mail client geary would be 
enough but it is not.
I will send a new patch series in these days.

Best,
Stefano

On ven, feb 21 2025 at 11:38:26 +01:00:00, Sascha Hauer 
<s.hauer@pengutronix.de> wrote:
> Hi Stefano,
> 
> The patch is mangled. Could you send it using git send-email? Using a
> web endpoint for b4 would be another possibility if git send-email
> doesn't work for you.
> 
> The two patches should be sent as one to avoid intermediate breakage
> between the patches.
> 
> Regards
>   Sascha
> 
> On Thu, Feb 20, 2025 at 06:39:55PM +0100, Stefano Manni wrote:
>>  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
>> 
>> 
>> 
>> 
>> 
> 
> --
> Pengutronix e.K.                           |                          
>    |
> Steuerwalder Str. 21                       | 
> http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0 
>    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   
> +49-5121-206917-5555 |





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

* Re: [PATCH 1/2] imx-bbu-nand-fcb: do not use hardcoded devicefile
  2025-02-20 17:39 [PATCH 1/2] imx-bbu-nand-fcb: do not use hardcoded devicefile Stefano Manni
@ 2025-02-21 10:38 ` Sascha Hauer
  2025-02-21 17:47   ` Stefano Manni
  0 siblings, 1 reply; 6+ messages in thread
From: Sascha Hauer @ 2025-02-21 10:38 UTC (permalink / raw)
  To: Stefano Manni; +Cc: barebox

Hi Stefano,

The patch is mangled. Could you send it using git send-email? Using a
web endpoint for b4 would be another possibility if git send-email
doesn't work for you.

The two patches should be sent as one to avoid intermediate breakage
between the patches.

Regards
  Sascha

On Thu, Feb 20, 2025 at 06:39:55PM +0100, Stefano Manni wrote:
> 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
> 
> 
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



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

* [PATCH 1/2] imx-bbu-nand-fcb: do not use hardcoded devicefile
@ 2025-02-20 17:39 Stefano Manni
  2025-02-21 10:38 ` Sascha Hauer
  0 siblings, 1 reply; 6+ messages in thread
From: Stefano Manni @ 2025-02-20 17:39 UTC (permalink / raw)
  To: barebox

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] 6+ messages in thread

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

Thread overview: 6+ 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 [PATCH 1/2] imx-bbu-nand-fcb: do not use hardcoded devicefile Stefano Manni
2025-02-21 10:38 ` Sascha Hauer
2025-02-21 17:47   ` Stefano Manni

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