static int arg_off(const char *arg, int *idx, loff_t *off, loff_t *maxsize) { if (!str2off(arg, off)) return get_part(arg, idx, off, maxsize); if (*off >= nand_info[*idx].size) { puts("Offset exceeds device limit\n"); return -1; } *maxsize = nand_info[*idx].size - *off; return 0; }
int mtd_arg_off(const char *arg, int *idx, loff_t *off, loff_t *size, loff_t *maxsize, int devtype, uint64_t chipsize) { if (!str2off(arg, off)) return get_part(arg, idx, off, size, maxsize, devtype); if (*off >= chipsize) { puts("Offset exceeds device limit\n"); return -1; } *maxsize = chipsize - *off; *size = *maxsize; return 0; }
static int arg_off_size(int argc, char *const argv[], int *idx, loff_t *off, loff_t *size) { int ret; loff_t maxsize = 0; if (argc == 0) { *off = 0; *size = nand_info[*idx].size; goto print; } ret = arg_off(argv[0], idx, off, &maxsize); if (ret) return ret; if (argc == 1) { *size = maxsize; goto print; } if (!str2off(argv[1], size)) { printf("'%s' is not a number\n", argv[1]); return -1; } if (*size > maxsize) { puts("Size exceeds partition or device limit\n"); return -1; } print: if (getenv("nandsilent") != NULL) return 0; printf("device %d ", *idx); if (*size == nand_info[*idx].size) puts("whole chip\n"); else printf("offset 0x%llx, size 0x%llx\n", (unsigned long long)*off, (unsigned long long)*size); return 0; }
int mtd_arg_off_size(int argc, char *const argv[], int *idx, loff_t *off, loff_t *size, loff_t *maxsize, int devtype, uint64_t chipsize) { int ret; if (argc == 0) { *off = 0; *size = chipsize; *maxsize = *size; goto print; } ret = mtd_arg_off(argv[0], idx, off, size, maxsize, devtype, chipsize); if (ret) return ret; if (argc == 1) goto print; if (!str2off(argv[1], size)) { printf("'%s' is not a number\n", argv[1]); return -1; } if (*size > *maxsize) { puts("Size exceeds partition or device limit\n"); return -1; } print: printf("device %d ", *idx); if (*size == chipsize) puts("whole chip\n"); else printf("offset 0x%llx, size 0x%llx\n", (unsigned long long)*off, (unsigned long long)*size); return 0; }