diff options
| author | Ilya Yanok <yanok@emcraft.com> | 2008-11-13 19:49:32 +0300 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2008-12-09 23:38:46 +0100 | 
| commit | e0b5532579eda8b4629f1b4f6e49c3cc60f52237 (patch) | |
| tree | c5f93054dfad5f1c07be4116fdba556c9d27a741 /common/cmd_jffs2.c | |
| parent | f73846956778a7dfee83403ef9747aff77198848 (diff) | |
| download | olio-uboot-2014.01-e0b5532579eda8b4629f1b4f6e49c3cc60f52237.tar.xz olio-uboot-2014.01-e0b5532579eda8b4629f1b4f6e49c3cc60f52237.zip | |
jffs2: add sector_size field to part_info structure
This patch adds sector_size field to part_info structure (used
by new JFFS2 code).
Signed-off-by: Ilya Yanok <yanok@emcraft.com>
Diffstat (limited to 'common/cmd_jffs2.c')
| -rw-r--r-- | common/cmd_jffs2.c | 20 | 
1 files changed, 17 insertions, 3 deletions
| diff --git a/common/cmd_jffs2.c b/common/cmd_jffs2.c index c2caade84..7866c808d 100644 --- a/common/cmd_jffs2.c +++ b/common/cmd_jffs2.c @@ -339,11 +339,15 @@ static int part_validate_nor(struct mtdids *id, struct part_info *part)  	extern flash_info_t flash_info[];  	flash_info_t *flash;  	int offset_aligned; -	u32 end_offset; +	u32 end_offset, sector_size = 0;  	int i;  	flash = &flash_info[id->num]; +	/* size of last sector */ +	part->sector_size = flash->size - +		(flash->start[flash->sector_count-1] - flash->start[0]); +  	offset_aligned = 0;  	for (i = 0; i < flash->sector_count; i++) {  		if ((flash->start[i] - flash->start[0]) == part->offset) { @@ -358,12 +362,18 @@ static int part_validate_nor(struct mtdids *id, struct part_info *part)  	}  	end_offset = part->offset + part->size; +	offset_aligned = 0;  	for (i = 0; i < flash->sector_count; i++) { +		if (i) { +			sector_size = flash->start[i] - flash->start[i-1]; +			if (part->sector_size < sector_size) +				part->sector_size = sector_size; +		}  		if ((flash->start[i] - flash->start[0]) == end_offset) -			return 0; +			offset_aligned = 1;  	} -	if (flash->size == end_offset) +	if (offset_aligned || flash->size == end_offset)  		return 0;  	printf("%s%d: partition (%s) size alignment incorrect\n", @@ -389,6 +399,8 @@ static int part_validate_nand(struct mtdids *id, struct part_info *part)  	nand = &nand_info[id->num]; +	part->sector_size = nand->erasesize; +  	if ((unsigned long)(part->offset) % nand->erasesize) {  		printf("%s%d: partition (%s) start offset alignment incorrect\n",  				MTD_DEV_TYPE(id->type), id->num, part->name); @@ -424,6 +436,8 @@ static int part_validate_onenand(struct mtdids *id, struct part_info *part)  	mtd = &onenand_mtd; +	part->sector_size = mtd->erasesize; +  	if ((unsigned long)(part->offset) % mtd->erasesize) {  		printf("%s%d: partition (%s) start offset"  			"alignment incorrect\n", |