summaryrefslogtreecommitdiff
path: root/common/cmd_mtdparts.c
Commit message (Collapse)AuthorAgeLines
* Followup fixes on the mtdparts spread patchsetScott Wood2010-10-11-2/+3
| | | | | | | | | | | | Consolidate some code in mtd_get_len_incl_bad(), and fix a condition where a valid partition could be reported as truncated if it has a good block at the end of the device (unlikely, since the BBT is usually there). Fix mid-block declarations in net_part_size(). Signed-off-by: Scott Wood <scottwood@freescale.com> Reviewed-by: Ben Gardiner <bengardiner@nanometrics.ca>
* mtdparts: new add.spread: add part skipping bad blocksBen Gardiner2010-10-11-8/+26
| | | | | | | | | | | This patch adds a new 'mtdparts add' variant: add.spread. This command variant adds a new partition to the mtdparts variable but also increases the partitions size by skipping bad blocks and aggregating any additional bad blocks found at the end of the partition. Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> CC: Wolfgang Denk <wd@denx.de> CC: Scott Wood <scottwood@freescale.com>
* mtdparts: add new sub-command "spread"Ben Gardiner2010-10-11-1/+112
| | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces the 'spread' sub-command of the mtdparts command. This command will modify the existing mtdparts variable by increasing the size of the partitions such that 1) each partition's net size is at least as large as the size specified in the mtdparts variable and 2) each partition starts on a good block. The new subcommand is implemented by iterating over the mtd device partitions and collecting a bad blocks count in each -- including any trailing bad blocks -- and then modifying that partitions's part_info structure and checking if the modification affects the next partition. This patch is based on a port of the 'dynnamic partitions' feature by Harald Welte <laforge@gnumonks.org>; ported from commit e05835df019027391f58f9d8ce5e1257d6924798 of git://git.openmoko.org/u-boot.git. Whereas Harald's feature used a compile-time array to specify partitions, the feature introduced by this patch uses the mtdparts environment variable. Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> Signed-off-by: Harald Welte <laforge@gnumonks.org> CC: Wolfgang Denk <wd@denx.de> CC: Scott Wood <scottwood@freescale.com>
* mtdparts: show net size in mtdparts listBen Gardiner2010-10-11-7/+61
| | | | | | | | | | This patch adds an additional column to the output of list_partitions. The additional column will contain the net size and a '(!)' beside it if the net size is not equal to the partition size. Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> CC: Wolfgang Denk <wd@denx.de> CC: Scott Wood <scottwood@freescale.com>
* mtdparts: regroup calls to get_mtd_device_nmBen Gardiner2010-10-11-15/+30
| | | | | | | | | | | | The get_mtd_device_nm function is called in a couple places and the string that is passed to it is not really used after the calls. This patch regroups the calls to this function into a new function, get_mtd_info. Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> Acked-by: Stefan Roese <sr@denx.de> CC: Wolfgang Denk <wd@denx.de>
* cmd_usage(): simplify return code handlingWolfgang Denk2010-07-24-2/+1
| | | | | | | | | | | | | | | | Lots of code use this construct: cmd_usage(cmdtp); return 1; Change cmd_usage() let it return 1 - then we can replace all these ocurrances by return cmd_usage(cmdtp); This fixes a few places with incorrect return code handling, too. Signed-off-by: Wolfgang Denk <wd@denx.de>
* Make sure that argv[] argument pointers are not modified.Wolfgang Denk2010-07-04-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The hush shell dynamically allocates (and re-allocates) memory for the argument strings in the "char *argv[]" argument vector passed to commands. Any code that modifies these pointers will cause serious corruption of the malloc data structures and crash U-Boot, so make sure the compiler can check that no such modifications are being done by changing the code into "char * const argv[]". This modification is the result of debugging a strange crash caused after adding a new command, which used the following argument processing code which has been working perfectly fine in all Unix systems since version 6 - but not so in U-Boot: int main (int argc, char **argv) { while (--argc > 0 && **++argv == '-') { /* ====> */ while (*++*argv) { switch (**argv) { case 'd': debug++; break; ... default: usage (); } } } ... } The line marked "====>" will corrupt the malloc data structures and usually cause U-Boot to crash when the next command gets executed by the shell. With the modification, the compiler will prevent this with an error: increment of read-only location '*argv' N.B.: The code above can be trivially rewritten like this: while (--argc > 0 && **++argv == '-') { char *arg = *argv; while (*++arg) { switch (*arg) { ... Signed-off-by: Wolfgang Denk <wd@denx.de> Acked-by: Mike Frysinger <vapier@gentoo.org>
* mtdparts: get rid of custom DEBUG macro, use debug()Wolfgang Denk2010-04-28-50/+40
| | | | Signed-off-by: Wolfgang Denk <wd@denx.de>
* mtdparts: fix write through NULL pointerWolfgang Denk2010-04-28-7/+12
| | | | | | | | | | | The "mtdparts add" command wrote through a NULL pointer - on many systems this went unnoticed (PowerPC has writable RAM there, some ARM systems have ROM where a write has no effect), but on arm1136 (i.MX31) it crashed the system. Add appropriate checks. Signed-off-by: Wolfgang Denk <wd@denx.de>
* fdt_support: add partitions fixup in mtd nodeAnatolij Gustschin2010-03-21-1/+1
| | | | | | | | | Allow overwriting defined partitions in the device tree blob using partition info defined in the 'mtdparts' environment variable. Signed-off-by: Anatolij Gustschin <agust@denx.de> Cc: Gerald Van Baren <vanbaren@cideas.com>
* cmd_mtdparts.c: prevent printbuffer overflowsAnatolij Gustschin2010-03-12-2/+8
| | | | | | | | | The length of configured MTDPARTS_DEFAULT string could be greater than console printbuffer size. Replace printf() by puts() to avoid potential buffer overflows. Signed-off-by: Anatolij Gustschin <agust@denx.de>
* cmd_mtdparts.c: fix compiler warning in debug codeWolfgang Denk2009-09-04-1/+1
| | | | | | | | | | Fix warning messages: cmd_mtdparts.c:1429: warning: format '%08lx' expects type 'long unsigned int', but argument 6 has type 'u32' cmd_mtdparts.c:1429: warning: format '%08lx' expects type 'long unsigned int', but argument 7 has type 'u32' Signed-off-by: Wolfgang Denk <wd@denx.de>
* Remove legacy NAND and disk on chip code.Scott Wood2009-07-16-10/+0
| | | | | | | | | | | | | Legacy NAND had been scheduled for removal. Any boards that use this were already not building in the previous release due to an #error. The disk on chip code in common/cmd_doc.c relies on legacy NAND, and it has also been removed. There is newer disk on chip code in drivers/mtd/nand; someone with access to hardware and sufficient time and motivation can try to get that working, but for now disk on chip is not supported. Signed-off-by: Scott Wood <scottwood@freescale.com>
* General help message cleanupWolfgang Denk2009-06-12-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many of the help messages were not really helpful; for example, many commands that take no arguments would not print a correct synopsis line, but "No additional help available." which is not exactly wrong, but not helpful either. Commit ``Make "usage" messages more helpful.'' changed this partially. But it also became clear that lots of "Usage" and "Help" messages (fields "usage" and "help" in struct cmd_tbl_s respective) were actually redundant. This patch cleans this up - for example: Before: => help dtt dtt - Digital Thermometer and Thermostat Usage: dtt - Read temperature from digital thermometer and thermostat. After: => help dtt dtt - Read temperature from Digital Thermometer and Thermostat Usage: dtt Signed-off-by: Wolfgang Denk <wd@denx.de>
* cmd_mtdparts.c: allow to omit definitions for default settingsWolfgang Denk2009-06-12-4/+4
| | | | | | | | | | | | There is actually no good reason to enforce that all board configuations must define default settings for "mtdids" and "mtdparts". Actually this may be difficult to handle, especially on boards where different sizes of flash chips can be fit, so there is no real "default" partition map for all boards. Lift this arbitrary limitation. Signed-off-by: Wolfgang Denk <wd@denx.de>
* cmd_mtdparts: Move to common handling of FLASH devices via MTD layerStefan Roese2009-06-12-160/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes all references to the direct CFI FLASH interface (via flash_info[]). Now that all FLASH types currently handled in mtdparts are available (if selected, see below) via the MTD infrastructure. This is NOR, NAND and OneNAND right now. This can be achieved by defining the following options: CONFIG_MTD_DEVICE (for all FLASH types) plus CONFIG_FLASH_CFI_MTD (for NOR FLASH) So we need to add those defines to the board config headers currently using the mtdparts commands. This is done via another patch, so we shouldn't break mtdparts compatibility. One big advantage from this solution is that the cmd_mtdparts.c is *much* cleaner now. Lot's of #ifdef's are removed and the code itself is smaller. Additionally the newly added MDT concatenation feature can new be used via the mtdparts infrastructure and therefor via UBI etc. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Ladislav Michl <ladis@linux-mips.org> Cc: Scott Wood <scottwood@freescale.com>
* jffs2/mtdparts: Fix problem with usage from JFFS2 and MTDPARTS togetherStefan Roese2009-05-28-37/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently using JFFS2 with MTDPARTS enabled doesn't work. This is because mtdparts_init() is available in both files, cmd_mtdparts.c and cmd_jffs2.c. Please note that in the original cmd_jffs2.c file (before the jffs2/mtdparts command/file split those 2 different versions already existed. So this is nothing new. The main problem is that the variables "current_dev" and "current_partnum" are declared in both files now. This doesn't work. This patch now changes the names of those variable to more specific names: "current_mtd_dev" and "current_mtd_partnum". This is because this patch also changes the declaration from static to global, so that they can be used from both files. Please note that my first tests were not successful. The MTD devices selected via mtdparts are now accessed but I'm failing to see the directory listed via the "ls" command. Nothing is displayed. Perhaps I didn't generate the JFFS2 image correctly (I never used JFFS2 in U-Boot before). Not sure. Perhaps somebody else could take a look at this as well. I'll continue looking into this on Monday. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Wolfgang Denk <wd@denx.de> Cc: Detlev Zundel <dzu@denx.de> Cc: Ilya Yanok <yanok@emcraft.com> Cc: Renaud barbier <renaud.barbier@ge.com>
* mtdpart command: align output columnsDavid Brownell2009-04-28-1/+1
| | | | | | | Make the headers in the "mtdparts" command output line up with their columns ... strike the extra TAB character. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* Separate mtdparts command from jffs2Ladislav Michl2009-04-04-6/+3
| | | | | | | | | | | | | | | | On Thu, Mar 19, 2009 at 01:30:36PM +0100, Stefan Roese wrote: > Currently the mtdparts commands are included in the jffs2 command support. > This doesn't make sense anymore since other commands (e.g. UBI) use this > infrastructure as well now. This patch separates the mtdparts commands from > the jffs2 commands making it possible to only select mtdparts when no JFFS2 > support is needed. ... and to make it useful for NAND chips as well, we should also remove now unrelated CONFIG_JFFS2_NAND. Note that struct part_info etc is in jffs2/load_kernel.h which is a bit misleading filename for that purpose, but that can be fixed later (tm). Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
* Separate mtdparts command from jffs2Stefan Roese2009-03-20-0/+1986
Currently the mtdparts commands are included in the jffs2 command support. This doesn't make sense anymore since other commands (e.g. UBI) use this infrastructure as well now. This patch separates the mtdparts commands from the jffs2 commands making it possible to only select mtdparts when no JFFS2 support is needed. Signed-off-by: Stefan Roese <sr@denx.de> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>