cmd_nand: add nand write.trimffs command
Add another nand write. variant, trimffs. This command will request of nand_write_skip_bad() that all trailing all-0xff pages will be dropped from eraseblocks when they are written to flash as-per the reccommended behaviour of the UBI FAQ [1]. The function that implements this timming is the drop_ffs() function by Artem Bityutskiy, ported from the mtd-utils tree. [1] http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> CC: Artem Bityutskiy <dedekind1@gmail.com> CC: Detlev Zundel <dzu@denx.de> Acked-by: Scott Wood <scottwood@freescale.com> Signed-off-by: Scott Wood <scottwood@freescale.com>
This commit is contained in:
		
							parent
							
								
									169d54d8b3
								
							
						
					
					
						commit
						c9494866df
					
				|  | @ -575,6 +575,16 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) | |||
| 			else | ||||
| 				ret = nand_write_skip_bad(nand, off, &rwsize, | ||||
| 							  (u_char *)addr, 0); | ||||
| #ifdef CONFIG_CMD_NAND_TRIMFFS | ||||
| 		} else if (!strcmp(s, ".trimffs")) { | ||||
| 			if (read) { | ||||
| 				printf("Unknown nand command suffix '%s'\n", s); | ||||
| 				return 1; | ||||
| 			} | ||||
| 			ret = nand_write_skip_bad(nand, off, &rwsize, | ||||
| 						(u_char *)addr, | ||||
| 						WITH_DROP_FFS); | ||||
| #endif | ||||
| #ifdef CONFIG_CMD_NAND_YAFFS | ||||
| 		} else if (!strcmp(s, ".yaffs")) { | ||||
| 			if (read) { | ||||
|  | @ -689,6 +699,12 @@ U_BOOT_CMD( | |||
| 	"nand write - addr off|partition size\n" | ||||
| 	"    read/write 'size' bytes starting at offset 'off'\n" | ||||
| 	"    to/from memory address 'addr', skipping bad blocks.\n" | ||||
| #ifdef CONFIG_CMD_NAND_TRIMFFS | ||||
| 	"nand write.trimffs - addr off|partition size\n" | ||||
| 	"    write 'size' bytes starting at offset 'off' from memory address\n" | ||||
| 	"    'addr', skipping bad blocks and dropping any pages at the end\n" | ||||
| 	"    of eraseblocks that contain only 0xFF\n" | ||||
| #endif | ||||
| #ifdef CONFIG_CMD_NAND_YAFFS | ||||
| 	"nand write.yaffs - addr off|partition size\n" | ||||
| 	"    write 'size' bytes starting at offset 'off' with yaffs format\n" | ||||
|  |  | |||
|  | @ -78,6 +78,16 @@ Commands: | |||
|       should work well, but loading an image copied from another flash is | ||||
|       going to be trouble if there are any bad blocks. | ||||
| 
 | ||||
|    nand write.trimffs addr ofs|partition size | ||||
|       Enabled by the CONFIG_CMD_NAND_TRIMFFS macro. This command will write to | ||||
|       the NAND flash in a manner identical to the 'nand write' command | ||||
|       described above -- with the additional check that all pages at the end | ||||
|       of eraseblocks which contain only 0xff data will not be written to the | ||||
|       NAND flash. This behaviour is required when flashing UBI images | ||||
|       containing UBIFS volumes as per the UBI FAQ[1]. | ||||
| 
 | ||||
|       [1] http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo | ||||
| 
 | ||||
|    nand write.oob addr ofs|partition size | ||||
|       Write `size' bytes from `addr' to the out-of-band data area | ||||
|       corresponding to `ofs' in NAND flash. This is limited to the 16 bytes | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue