diff options
| -rw-r--r-- | common/cmd_jffs2.c | 44 | ||||
| -rw-r--r-- | common/cmd_mtdparts.c | 74 | 
2 files changed, 64 insertions, 54 deletions
| diff --git a/common/cmd_jffs2.c b/common/cmd_jffs2.c index 860d1d97e..3bb6c3cb1 100644 --- a/common/cmd_jffs2.c +++ b/common/cmd_jffs2.c @@ -137,8 +137,15 @@  #define MTD_WRITEABLE_CMD		1  /* current active device and partition number */ -static struct mtd_device *current_dev = NULL; -static u8 current_partnum = 0; +#ifdef CONFIG_CMD_MTDPARTS +/* Use the ones declared in cmd_mtdparts.c */ +extern struct mtd_device *current_mtd_dev; +extern u8 current_mtd_partnum; +#else +/* Use local ones */ +struct mtd_device *current_mtd_dev = NULL; +u8 current_mtd_partnum = 0; +#endif  #if defined(CONFIG_CMD_CRAMFS)  extern int cramfs_check (struct part_info *info); @@ -346,6 +353,9 @@ static inline u32 get_part_sector_size(struct mtdids *id, struct part_info *part   * Parse and initialize global mtdids mapping and create global   * device/partition list.   * + * 'Static' version of command line mtdparts_init() routine. Single partition on + * a single device configuration. + *   * @return 0 on success, 1 otherwise   */  int mtdparts_init(void) @@ -360,18 +370,18 @@ int mtdparts_init(void)  		struct part_info *part;  		initialized = 1; -		current_dev = (struct mtd_device *) +		current_mtd_dev = (struct mtd_device *)  			malloc(sizeof(struct mtd_device) +  					sizeof(struct part_info) +  					sizeof(struct mtdids)); -		if (!current_dev) { +		if (!current_mtd_dev) {  			printf("out of memory\n");  			return 1;  		} -		memset(current_dev, 0, sizeof(struct mtd_device) + -					sizeof(struct part_info) + sizeof(struct mtdids)); +		memset(current_mtd_dev, 0, sizeof(struct mtd_device) + +		       sizeof(struct part_info) + sizeof(struct mtdids)); -		id = (struct mtdids *)(current_dev + 1); +		id = (struct mtdids *)(current_mtd_dev + 1);  		part = (struct part_info *)(id + 1);  		/* id */ @@ -386,7 +396,7 @@ int mtdparts_init(void)  		if ((mtd_id_parse(dev_name, NULL, &id->type, &id->num) != 0) ||  				(mtd_device_validate(id->type, id->num, &size) != 0)) {  			printf("incorrect device: %s%d\n", MTD_DEV_TYPE(id->type), id->num); -			free(current_dev); +			free(current_mtd_dev);  			return 1;  		}  		id->size = size; @@ -413,7 +423,7 @@ int mtdparts_init(void)  		part->sector_size = get_part_sector_size(id, part); -		part->dev = current_dev; +		part->dev = current_mtd_dev;  		INIT_LIST_HEAD(&part->link);  		/* recalculate size if needed */ @@ -424,11 +434,11 @@ int mtdparts_init(void)  				part->name, part->size, part->offset);  		/* device */ -		current_dev->id = id; -		INIT_LIST_HEAD(¤t_dev->link); -		current_dev->num_parts = 1; -		INIT_LIST_HEAD(¤t_dev->parts); -		list_add(&part->link, ¤t_dev->parts); +		current_mtd_dev->id = id; +		INIT_LIST_HEAD(¤t_mtd_dev->link); +		current_mtd_dev->num_parts = 1; +		INIT_LIST_HEAD(¤t_mtd_dev->parts); +		list_add(&part->link, ¤t_mtd_dev->parts);  	}  	return 0; @@ -516,7 +526,7 @@ int do_jffs2_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	if (mtdparts_init() !=0)  		return 1; -	if ((part = jffs2_part_info(current_dev, current_partnum))){ +	if ((part = jffs2_part_info(current_mtd_dev, current_mtd_partnum))){  		/* check partition type for cramfs */  		fsname = (cramfs_check(part) ? "CRAMFS" : "JFFS2"); @@ -567,7 +577,7 @@ int do_jffs2_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	if (mtdparts_init() !=0)  		return 1; -	if ((part = jffs2_part_info(current_dev, current_partnum))){ +	if ((part = jffs2_part_info(current_mtd_dev, current_mtd_partnum))){  		/* check partition type for cramfs */  		if (cramfs_check(part)) { @@ -602,7 +612,7 @@ int do_jffs2_fsinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	if (mtdparts_init() !=0)  		return 1; -	if ((part = jffs2_part_info(current_dev, current_partnum))){ +	if ((part = jffs2_part_info(current_mtd_dev, current_mtd_partnum))){  		/* check partition type for cramfs */  		fsname = (cramfs_check(part) ? "CRAMFS" : "JFFS2"); diff --git a/common/cmd_mtdparts.c b/common/cmd_mtdparts.c index e7b6accfd..6a0849f97 100644 --- a/common/cmd_mtdparts.c +++ b/common/cmd_mtdparts.c @@ -166,8 +166,8 @@ struct list_head mtdids;  struct list_head devices;  /* current active device and partition number */ -static struct mtd_device *current_dev = NULL; -static u8 current_partnum = 0; +struct mtd_device *current_mtd_dev = NULL; +u8 current_mtd_partnum = 0;  static struct part_info* mtd_part_info(struct mtd_device *dev, unsigned int part_num); @@ -251,12 +251,12 @@ static void index_partitions(void)  	DEBUGF("--- index partitions ---\n"); -	if (current_dev) { +	if (current_mtd_dev) {  		mtddevnum = 0;  		list_for_each(dentry, &devices) {  			dev = list_entry(dentry, struct mtd_device, link); -			if (dev == current_dev) { -				mtddevnum += current_partnum; +			if (dev == current_mtd_dev) { +				mtddevnum += current_mtd_partnum;  				sprintf(buf, "%d", mtddevnum);  				setenv("mtddevnum", buf);  				break; @@ -264,7 +264,7 @@ static void index_partitions(void)  			mtddevnum += dev->num_parts;  		} -		part = mtd_part_info(current_dev, current_partnum); +		part = mtd_part_info(current_mtd_dev, current_mtd_partnum);  		setenv("mtddevname", part->name);  		DEBUGF("=> mtddevnum %d,\n=> mtddevname %s\n", mtddevnum, part->name); @@ -285,9 +285,9 @@ static void current_save(void)  	DEBUGF("--- current_save ---\n"); -	if (current_dev) { -		sprintf(buf, "%s%d,%d", MTD_DEV_TYPE(current_dev->id->type), -					current_dev->id->num, current_partnum); +	if (current_mtd_dev) { +		sprintf(buf, "%s%d,%d", MTD_DEV_TYPE(current_mtd_dev->id->type), +					current_mtd_dev->id->num, current_mtd_partnum);  		setenv("partition", buf);  		strncpy(last_partition, buf, 16); @@ -498,18 +498,18 @@ static int part_del(struct mtd_device *dev, struct part_info *part)  	/* otherwise just delete this partition */ -	if (dev == current_dev) { +	if (dev == current_mtd_dev) {  		/* we are modyfing partitions for the current device,  		 * update current */  		struct part_info *curr_pi; -		curr_pi = mtd_part_info(current_dev, current_partnum); +		curr_pi = mtd_part_info(current_mtd_dev, current_mtd_partnum);  		if (curr_pi) {  			if (curr_pi == part) {  				printf("current partition deleted, resetting current to 0\n"); -				current_partnum = 0; +				current_mtd_partnum = 0;  			} else if (part->offset <= curr_pi->offset) { -				current_partnum--; +				current_mtd_partnum--;  			}  			current_save_needed = 1;  		} @@ -579,8 +579,8 @@ static int part_sort_add(struct mtd_device *dev, struct part_info *part)  	/* get current partition info if we are updating current device */  	curr_pi = NULL; -	if (dev == current_dev) -		curr_pi = mtd_part_info(current_dev, current_partnum); +	if (dev == current_mtd_dev) +		curr_pi = mtd_part_info(current_mtd_dev, current_mtd_partnum);  	list_for_each(entry, &dev->parts) {  		struct part_info *pi; @@ -600,7 +600,7 @@ static int part_sort_add(struct mtd_device *dev, struct part_info *part)  			if (curr_pi && (pi->offset <= curr_pi->offset)) {  				/* we are modyfing partitions for the current  				 * device, update current */ -				current_partnum++; +				current_mtd_partnum++;  				current_save();  			} else {  				index_partitions(); @@ -842,15 +842,15 @@ static int device_del(struct mtd_device *dev)  	list_del(&dev->link);  	free(dev); -	if (dev == current_dev) { +	if (dev == current_mtd_dev) {  		/* we just deleted current device */  		if (list_empty(&devices)) { -			current_dev = NULL; +			current_mtd_dev = NULL;  		} else {  			/* reset first partition from first dev from the  			 * devices list as current */ -			current_dev = list_entry(devices.next, struct mtd_device, link); -			current_partnum = 0; +			current_mtd_dev = list_entry(devices.next, struct mtd_device, link); +			current_mtd_partnum = 0;  		}  		current_save();  		return 0; @@ -893,8 +893,8 @@ static void device_add(struct mtd_device *dev)  	u8 current_save_needed = 0;  	if (list_empty(&devices)) { -		current_dev = dev; -		current_partnum = 0; +		current_mtd_dev = dev; +		current_mtd_partnum = 0;  		current_save_needed = 1;  	} @@ -1050,7 +1050,7 @@ static int device_parse(const char *const mtd_dev, const char **ret, struct mtd_  static int mtd_devices_init(void)  {  	last_parts[0] = '\0'; -	current_dev = NULL; +	current_mtd_dev = NULL;  	current_save();  	return device_delall(&devices); @@ -1330,13 +1330,13 @@ static void list_partitions(void)  	if (list_empty(&devices))  		printf("no partitions defined\n"); -	/* current_dev is not NULL only when we have non empty device list */ -	if (current_dev) { -		part = mtd_part_info(current_dev, current_partnum); +	/* current_mtd_dev is not NULL only when we have non empty device list */ +	if (current_mtd_dev) { +		part = mtd_part_info(current_mtd_dev, current_mtd_partnum);  		if (part) {  			printf("\nactive partition: %s%d,%d - (%s) 0x%08x @ 0x%08x\n", -					MTD_DEV_TYPE(current_dev->id->type), -					current_dev->id->num, current_partnum, +					MTD_DEV_TYPE(current_mtd_dev->id->type), +					current_mtd_dev->id->num, current_mtd_partnum,  					part->name, part->size, part->offset);  		} else {  			printf("could not get current partition info\n\n"); @@ -1709,13 +1709,13 @@ int mtdparts_init(void)  		strncpy(last_parts, parts, MTDPARTS_MAXLEN);  		/* reset first partition from first dev from the list as current */ -		current_dev = list_entry(devices.next, struct mtd_device, link); -		current_partnum = 0; +		current_mtd_dev = list_entry(devices.next, struct mtd_device, link); +		current_mtd_partnum = 0;  		current_save(); -		DEBUGF("mtdparts_init: current_dev  = %s%d, current_partnum = %d\n", -				MTD_DEV_TYPE(current_dev->id->type), -				current_dev->id->num, current_partnum); +		DEBUGF("mtdparts_init: current_mtd_dev  = %s%d, current_mtd_partnum = %d\n", +				MTD_DEV_TYPE(current_mtd_dev->id->type), +				current_mtd_dev->id->num, current_mtd_partnum);  	}  	/* mtdparts variable was reset to NULL, delete all devices/partitions */ @@ -1735,8 +1735,8 @@ int mtdparts_init(void)  		DEBUGF("--- getting current partition: %s\n", tmp_ep);  		if (find_dev_and_part(tmp_ep, &cdev, &pnum, &p) == 0) { -			current_dev = cdev; -			current_partnum = pnum; +			current_mtd_dev = cdev; +			current_mtd_partnum = pnum;  			current_save();  		}  	} else if (getenv("partition") == NULL) { @@ -1820,8 +1820,8 @@ int do_chpart(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	if (find_dev_and_part(argv[1], &dev, &pnum, &part) != 0)  		return 1; -	current_dev = dev; -	current_partnum = pnum; +	current_mtd_dev = dev; +	current_mtd_partnum = pnum;  	current_save();  	printf("partition changed to %s%d,%d\n", |