summaryrefslogtreecommitdiff
path: root/common/cmd_onenand.c
Commit message (Collapse)AuthorAgeLines
* Make sure that argv[] argument pointers are not modified.Wolfgang Denk2010-07-04-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* cmd_onenand.c: moved to standard subcommand handlingFrans Meulenbroeks2010-05-05-115/+192
| | | | | | | | | | | | | | | | | | | | | On the fly also fixed the following things: - write help talked about a parameter oob, but that one was not used, so removed it from the help message. - the test command also allowed a force subcommand but didn't use it. eliminated the code. - do_onenand made static - do_onenand contained int blocksize; ... mtd = &onenand_mtd; this = mtd->priv; blocksize = (1 << this->erase_shift); As blocksize was not used the last two statements were unneeded so removed them. The first statement (mtd = ....) assigns to a global. Not sure if it is needed, and since I could not test this, left the line for now Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
* common: delete CONFIG_SYS_64BIT_VSPRINTF and CONFIG_SYS_64BIT_STRTOULHeiko Schocher2009-12-08-4/+0
| | | | | | | | | There is more and more usage of printing 64bit values, so enable this feature generally, and delete the CONFIG_SYS_64BIT_VSPRINTF and CONFIG_SYS_64BIT_STRTOUL defines. Signed-off-by: Heiko Schocher <hs@denx.de>
* nand/onenand: Fix missing argument checking for "markbad" commandWolfgang Denk2009-07-07-12/+23
| | | | | | | | | | | | | The "nand markbad" and "onenand markbad" commands did not check if an argument was passed; if this was forgotten, no error was raised but block 0 was marked as bad. While fixing this bug, clean up the code a bit and allow to pass more than one block address, thus allowing to mark several blocks as bad in a single command invocation. Signed-off-by: Wolfgang Denk <wd@denx.de> Signed-off-by: Scott Wood <scottwood@freescale.com>
* General help message cleanupWolfgang Denk2009-06-12-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* mtd: Update MTD infrastructure to support 64bit device sizeStefan Roese2009-06-12-1/+5
| | | | | | | | | | | This patch brings the U-Boot MTD infrastructure in sync with the current Linux MTD version (2.6.30-rc3). Biggest change is the 64bit device size support and a resync of the mtdpart.c file which has seen multiple fixes meanwhile. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Scott Wood <scottwood@freescale.com> Cc: Kyungmin Park <kmpark@infradead.org>
* Command usage cleanupPeter Tyser2009-01-28-1/+1
| | | | | | | | Remove command name from all command "usage" fields and update common/command.c to display "name - usage" instead of just "usage". Also remove newlines from command usage fields. Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
* Standardize command usage messages with cmd_usage()Peter Tyser2009-01-28-1/+1
| | | | Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
* OneNAND: Bad block aware read/write command supportStefan Roese2009-01-23-110/+420
| | | | | | | | | Update OneNAND command to support bad block awareness. Also change the OneNAND command style to better match the NAND version. Signed-off-by: Stefan Roese <sr@denx.de> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
* Fix OneNAND read_oob/write_oob functions compatabilityKyungmin Park2008-08-21-16/+33
| | | | | | | Also sync with kernel OneNAND codes Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Scott Wood <scottwood@freescale.com>
* common: Move conditional compilation to MakefileJean-Christophe PLAGNIOL-VILLARD2008-08-13-4/+0
| | | | Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
* OneNAND: Fill in MTD function pointers for OneNAND.Fathi BOUDRA2008-08-12-1/+1
| | | | | | | | | | onenand_print_device_info(): - Now returns a string to be placed in mtd->name, rather than calling printf. - Remove verbose parameter as it becomes useless. Signed-off-by: Fathi Boudra <fabo@debian.org> Signed-off-by: Scott Wood <scottwood@freescale.com>
* OneNAND: Remove base address offset usagedirk.behme@googlemail.com2008-08-10-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While locally preparing some U-Boot patches for ARM based OMAP3 boards, some using OneNAND and some using NAND, we found some differences in OneNAND and NAND command address handling. As this might confuse users (it already confused us), we like to align OneNAND and NAND address handling. The issue is that cmd_onenand.c subtracts the onenand base address from the addresses you type into the u-boot command line so, unlike nand, you can't use addresses relative to the start of the onenand part e.g. this won't work: onenand read 82000000 280000 400000 you have to use: onenand read 82000000 20280000 400000 Looking at recent git, the only board currently using OneNAND is Apollon, and for this the OneNAND base address is 0 (apollon.h) #define CFG_ONENAND_BASE 0x00000000 so patch below won't break any existing boards and will align OneNAND and NAND handling on boards where OneNAND base address is != 0. Signed-off-by: Steve Sakoman <sakoman@gmail.com> Signed-off-by: Manikandan Pillai <mani.pillai@ti.com> Signed-off-by: Dirk Behme <dirk.behme@gmail.com>
* Fix some more printf() format issues.Jean-Christophe PLAGNIOL-VILLARD2008-07-13-2/+2
| | | | Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
* Fix OneNAND erase commandKyungmin Park2008-04-13-6/+20
| | | | | | | It mis-calculates the block address. Also fix DECLARE_GLOBAL_DATA_PTR in env_onenand. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
* OneNAND support (take #2)Kyungmin Park2007-09-17-0/+155
[PATCH 3/3] OneNAND support (take #2) OneNAND support at U-Boot Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>