[PATCH] cmd: nand: Add support to print the manufacturer, model and size
Alexander Dahl
ada at thorsis.com
Mon Mar 18 14:19:13 CET 2024
Hello Mihai,
adding the raw nand maintainers to Cc, maybe cmd/nand.c should be
added to MAINTAINERS file section raw nand? See my comments below.
Am Mon, Mar 18, 2024 at 02:26:47PM +0200 schrieb Mihai Sain:
> Add support to nand info for printing the manufacturer,model and size.
>
> U-Boot> nand info
>
> Device 0: nand0, sector size 256 KiB
> Manufacturer MACRONIX
> Model MX30LF4G28AD
> Device size 512 MiB
> Page size 4096 b
> OOB size 256 b
> Erase size 262144 b
> ecc strength 8 bits
> ecc step size 512 b
> subpagesize 4096 b
> options 0x00004200
> bbt options 0x00028000
Tested here:
Device 0: nand0, sector size 128 KiB
Manufacturer SPANSION
Model S34ML02G1
Device size 256 MiB
Page size 2048 b
OOB size 64 b
Erase size 131072 b
ecc strength 8 bits
ecc step size 512 b
subpagesize 2048 b
options 0x40004200
bbt options 0x00028000
> Signed-off-by: Mihai Sain <mihai.sain at microchip.com>
> ---
> cmd/nand.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/cmd/nand.c b/cmd/nand.c
> index fe834c4ac5..f5cfaab37c 100644
> --- a/cmd/nand.c
> +++ b/cmd/nand.c
> @@ -418,6 +418,9 @@ static void nand_print_and_set_info(int idx)
> printf("%dx ", chip->numchips);
> printf("%s, sector size %u KiB\n",
> mtd->name, mtd->erasesize >> 10);
> + printf(" Manufacturer %s \n", chip->onfi_params.manufacturer);
> + printf(" Model %s \n", chip->onfi_params.model);
This probably only works for ONFI flash and might fail otherwise. See
this code in nand_base.c:
https://elixir.bootlin.com/u-boot/v2024.01/source/drivers/mtd/nand/raw/nand_base.c#L4455
The manufacturer could always be printed from struct nand_chip
->manufacturer.desc.name here.
Don't know if the third fallback for model ("type->name") is somehow
accessible after nand_detect() but I would at least test on
chip->onfi_version or chip->jedec_version here, and maybe just drop
the model line if none is set.
> + printf(" Device size %8d MiB\n", (int)(chip->chipsize >> 20));
Fine.
Greets
Alex
> printf(" Page size %8d b\n", mtd->writesize);
> printf(" OOB size %8d b\n", mtd->oobsize);
> printf(" Erase size %8d b\n", mtd->erasesize);
> --
> 2.44.0
>
More information about the U-Boot
mailing list