diff options
| -rw-r--r-- | common/cmd_ubi.c | 26 | ||||
| -rw-r--r-- | drivers/mtd/cfi_mtd.c | 4 | ||||
| -rw-r--r-- | include/flash.h | 2 | 
3 files changed, 24 insertions, 8 deletions
| diff --git a/common/cmd_ubi.c b/common/cmd_ubi.c index b99fd5863..9c17d7120 100644 --- a/common/cmd_ubi.c +++ b/common/cmd_ubi.c @@ -404,9 +404,6 @@ static int ubi_dev_scan(struct mtd_info *info, char *ubidev)  	u8 pnum;  	int err; -	if (mtdparts_init() != 0) -		return 1; -  	if (find_dev_and_part(ubidev, &dev, &pnum, &part) != 0)  		return 1; @@ -445,6 +442,11 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  		return 1;  	} +	if (mtdparts_init() != 0) { +		printf("Error initializing mtdparts!\n"); +		return 1; +	} +  	if (strcmp(argv[1], "part") == 0) {  		/* Print current partition */  		if (argc == 2) { @@ -475,7 +477,7 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  		}  		/* -		 * Check for nand|onenand selection +		 * Check for nor|nand|onenand selection  		 */  #if defined(CONFIG_CMD_NAND)  		if (strcmp(argv[2], "nand") == 0) { @@ -486,9 +488,23 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  #endif  #if defined(CONFIG_FLASH_CFI_MTD)  		if (strcmp(argv[2], "nor") == 0) { +			char mtd_dev[16]; +			struct mtd_device *dev; +			struct part_info *part; +			u8 pnum; + +			/* +			 * Search the mtd device number where this partition +			 * is located +			 */ +			if (find_dev_and_part(argv[3], &dev, &pnum, &part)) { +				printf("Partition %s not found!\n", argv[3]); +				return 1; +			} +			sprintf(mtd_dev, "nor%d", dev->id->num); +			ubi_dev.mtd_info = get_mtd_device_nm(mtd_dev);  			strcpy(ubi_dev.dev_name, "NOR");  			ubi_dev.type = DEV_TYPE_NOR; -			ubi_dev.mtd_info = get_mtd_device_nm(CFI_MTD_DEV_NAME);  		}  #endif  #if defined(CONFIG_CMD_ONENAND) diff --git a/drivers/mtd/cfi_mtd.c b/drivers/mtd/cfi_mtd.c index cf82d9278..9ac1c86cc 100644 --- a/drivers/mtd/cfi_mtd.c +++ b/drivers/mtd/cfi_mtd.c @@ -32,6 +32,7 @@  extern flash_info_t flash_info[];  static struct mtd_info cfi_mtd_info[CONFIG_SYS_MAX_FLASH_BANKS]; +static char cfi_mtd_names[CONFIG_SYS_MAX_FLASH_BANKS][16];  static int cfi_mtd_erase(struct mtd_info *mtd, struct erase_info *instr)  { @@ -180,7 +181,8 @@ int cfi_mtd_init(void)  		if (error)  			continue; -		mtd->name		= CFI_MTD_DEV_NAME; +		sprintf(cfi_mtd_names[i], "nor%d", i); +		mtd->name		= cfi_mtd_names[i];  		mtd->type		= MTD_NORFLASH;  		mtd->flags		= MTD_CAP_NORFLASH;  		mtd->size		= fi->size; diff --git a/include/flash.h b/include/flash.h index 8b8979e2f..b01616200 100644 --- a/include/flash.h +++ b/include/flash.h @@ -87,8 +87,6 @@ typedef unsigned long flash_sect_t;  /* convert between bit value and numeric value */  #define CFI_FLASH_SHIFT_WIDTH	3 -/* cfi-mtd device name */ -#define	CFI_MTD_DEV_NAME	"cfi-mtd"  /* Prototypes */  extern unsigned long flash_init (void); |