cmd: mtdparts: Fix build with option ..._SHOW_NET_SIZES
authorAlexander Dahl <ada@thorsis.com>
Wed, 30 Oct 2019 15:53:55 +0000 (16:53 +0100)
committerTom Rini <trini@konsulko.com>
Thu, 7 Nov 2019 23:01:13 +0000 (18:01 -0500)
That option is currently not used by any defconfig and could not be set
anymore since it became mandatory to used Kconfig when introducing new
options with U-Boot v2016.11 or commit eed921d92348 ("Kconfig: Add a
whitelist of ad-hoc CONFIG options") and commit 371244cb19f9 ("Makefile:
Give a build error if ad-hoc CONFIG options are added").

It was also not considered when fixing build warnings in
commit 39ac34473f3c ("cmd_mtdparts: use 64 bits for flash size,
partition size & offset") and could probably not be compiled anyway
after commit dfe64e2c8973 ("mtd: resync with Linux-3.7.1"), which
renamed some members of struct mtd_info … so it was probably broken
since then, which was U-Boot v2013.07-rc1.

However it still seems to work, see example output below:

U-Boot 2019.10-00035-g06a9b259ca-dirty (Oct 30 2019 - 14:03:44 +0100)

CPU: SAMA5D27 1G bits DDR2 SDRAM
Crystal frequency:       24 MHz
CPU clock        :      492 MHz
Master clock     :      164 MHz
Model: ***
DRAM:  128 MiB
NAND:  256 MiB
Loading Environment from NAND... OK
In:    serial@f8020000
Out:   serial@f8020000
Err:   serial@f8020000
Net:   eth0: ethernet@f8008000
Hit keys 'tt' to stop autoboot (3 seconds).
U-Boot> mtdparts

device nand0 <atmel_nand>, # parts = 8
 #: name                size            net size        offset          mask_flags
 0: bootstrap           0x00040000      0x00040000      0x00000000      1
 1: uboot               0x000c0000      0x000c0000      0x00040000      1
 2: env1                0x00040000      0x00040000      0x00100000      0
 3: env2                0x00040000      0x00040000      0x00140000      0
 4: fpga_led            0x00040000      0x00040000      0x00180000      1
 5: reserved            0x00040000      0x00040000      0x001c0000      1
 6: rootfs_rec          0x03200000      0x03200000      0x00200000      1
 7: filesystem          0x0cc00000      0x0cb80000 (!)  0x03400000      0

active partition: nand0,0 - (bootstrap) 0x00040000 @ 0x00000000

defaults:
mtdids  : nand0=atmel_nand
mtdparts: mtdparts=atmel_nand:256k(bootstrap)ro,768k(uboot)ro,256k(env1),256k(env2),256k(fpga_led)ro,256k(reserved)ro,50M(rootfs_rec)ro,-(filesystem)

Signed-off-by: Alexander Dahl <ada@thorsis.com>
cmd/Kconfig
cmd/mtdparts.c

index c414c5d8e67740f6ac31a1f28ac162f4f79b27d1..0eca0f74f7ab380bb298213fecd18cb427794f3e 100644 (file)
@@ -1986,6 +1986,14 @@ config CMD_MTDPARTS_SPREAD
          at least as large as the size specified in the mtdparts variable and
          2) each partition starts on a good block.
 
+config CMD_MTDPARTS_SHOW_NET_SIZES
+       bool "Show net size (w/o bad blocks) of partitions"
+       depends on CMD_MTDPARTS
+       help
+         Adds two columns to the printed partition table showing the
+         effective usable size of a partition, if bad blocks are taken
+         into account.
+
 config CMD_REISER
        bool "reiser - Access to reiserfs filesystems"
        help
index 46155cabf66c30eaa5245c2dacd7a9f00e0fd953..b40c2afadda2b60c3be134b384b0cc68cab20645 100644 (file)
@@ -1233,11 +1233,11 @@ static uint64_t net_part_size(struct mtd_info *mtd, struct part_info *part)
 {
        uint64_t i, net_size = 0;
 
-       if (!mtd->block_isbad)
+       if (!mtd->_block_isbad)
                return part->size;
 
        for (i = 0; i < part->size; i += mtd->erasesize) {
-               if (!mtd->block_isbad(mtd, part->offset + i))
+               if (!mtd->_block_isbad(mtd, part->offset + i))
                        net_size += mtd->erasesize;
        }
 
@@ -1274,7 +1274,7 @@ static void print_partition_table(void)
                        part = list_entry(pentry, struct part_info, link);
                        net_size = net_part_size(mtd, part);
                        size_note = part->size == net_size ? " " : " (!)";
-                       printf("%2d: %-20s0x%08x\t0x%08x%s\t0x%08x\t%d\n",
+                       printf("%2d: %-20s0x%08llx\t0x%08x%s\t0x%08llx\t%d\n",
                                        part_num, part->name, part->size,
                                        net_size, size_note, part->offset,
                                        part->mask_flags);