}
#endif
+static void show_ecc_stats(struct mtd_device *dev)
+{
+ struct mtd_info *mtd;
+
+ if (get_mtd_info(dev->id->type, dev->id->num, &mtd))
+ return;
+
+ printf("ECC stats for device %s:\n", mtd->name);
+ printf(" corrected bit flips:\t%4u\n", mtd->ecc_stats.corrected);
+ printf(" uncorrectable errors:\t%4u\n", mtd->ecc_stats.failed);
+}
+
static void print_partition_table(void)
{
struct list_head *dentry, *pentry;
#endif /* defined(CONFIG_CMD_MTDPARTS_SHOW_NET_SIZES) */
part_num++;
}
+ show_ecc_stats(dev);
}
if (list_empty(&devices))
part->name, part->size, part->offset);
if (part_del(dev, part) != 0)
- return 1;
+ return CMD_RET_FAILURE;
if (generate_mtdparts_save(last_parts, MTDPARTS_MAXLEN) != 0) {
printf("generated mtdparts too long, resetting to null\n");
- return 1;
+ return CMD_RET_FAILURE;
}
- return 0;
+ return CMD_RET_SUCCESS;
}
printf("partition %s not found\n", id);
- return 1;
+ return CMD_RET_FAILURE;
}
#if defined(CONFIG_CMD_MTDPARTS_SPREAD)
dev = list_entry(dentry, struct mtd_device, link);
if (get_mtd_info(dev->id->type, dev->id->num, &mtd))
- return 1;
+ return CMD_RET_FAILURE;
part_num = 0;
cur_offs = 0;
if (generate_mtdparts_save(last_parts, MTDPARTS_MAXLEN) != 0) {
printf("generated mtdparts too long, resetting to null\n");
- return 1;
+ return CMD_RET_FAILURE;
}
- return 0;
+ return CMD_RET_SUCCESS;
}
#endif /* CONFIG_CMD_MTDPARTS_SPREAD */
u8 pnum;
if (mtdparts_init() !=0)
- return 1;
+ return CMD_RET_FAILURE;
if (argc < 2) {
printf("no partition id specified\n");
- return 1;
+ return CMD_RET_FAILURE;
}
if (find_dev_and_part(argv[1], &dev, &pnum, &part) != 0)
- return 1;
+ return CMD_RET_FAILURE;
current_mtd_dev = dev;
current_mtd_partnum = pnum;
printf("partition changed to %s%d,%d\n",
MTD_DEV_TYPE(dev->id->type), dev->id->num, pnum);
- return 0;
+ return CMD_RET_SUCCESS;
}
/**
setenv("mtdparts", NULL);
/* mtd_devices_init() calls current_save() */
- return mtd_devices_init();
+ return mtd_devices_init() ? CMD_RET_FAILURE :
+ CMD_RET_SUCCESS;
}
}
/* make sure we are in sync with env variables */
if (mtdparts_init() != 0)
- return 1;
+ return CMD_RET_FAILURE;
if (argc == 1) {
list_partitions();
- return 0;
+ return CMD_RET_SUCCESS;
}
/* mtdparts add <mtd-dev> <size>[@<offset>] <name> [ro] */
struct part_info *p;
if (mtd_id_parse(argv[2], NULL, &type, &num) != 0)
- return 1;
+ return CMD_RET_FAILURE;
if ((id = id_find(type, num)) == NULL) {
printf("no such device %s defined in mtdids variable\n", argv[2]);
- return 1;
+ return CMD_RET_FAILURE;
}
len = strlen(id->mtd_id) + 1; /* 'mtd_id:' */
if (len >= PART_ADD_DESC_MAXLEN) {
printf("too long partition description\n");
- return 1;
+ return CMD_RET_FAILURE;
}
sprintf(tmpbuf, "%s:%s(%s)%s",
id->mtd_id, argv[3], argv[4], argv[5] ? argv[5] : "");
debug("add tmpbuf: %s\n", tmpbuf);
if ((device_parse(tmpbuf, NULL, &dev) != 0) || (!dev))
- return 1;
+ return CMD_RET_FAILURE;
debug("+ %s\t%d\t%s\n", MTD_DEV_TYPE(dev->id->type),
dev->id->num, dev->id->mtd_id);
#if defined(CONFIG_CMD_MTDPARTS_SPREAD)
if (get_mtd_info(dev->id->type, dev->id->num, &mtd))
- return 1;
+ return CMD_RET_FAILURE;
if (!strcmp(&argv[1][3], ".spread")) {
spread_partition(mtd, p, &next_offset);
} else if (part_add(dev_tmp, p) != 0) {
/* merge new partition with existing ones*/
device_del(dev);
- return 1;
+ return CMD_RET_FAILURE;
}
if (generate_mtdparts_save(last_parts, MTDPARTS_MAXLEN) != 0) {
printf("generated mtdparts too long, resetting to null\n");
- return 1;
+ return CMD_RET_FAILURE;
}
- return 0;
+ return CMD_RET_SUCCESS;
}
/* mtdparts del part-id */