int saveenv(void) { env_t env_new; block_dev_desc_t *dev_desc = NULL; disk_partition_t info; int dev, part; int err; err = env_export(&env_new); if (err) return err; part = get_device_and_partition(FAT_ENV_INTERFACE, FAT_ENV_DEVICE_AND_PART, &dev_desc, &info, 1); if (part < 0) return 1; dev = dev_desc->dev; if (fat_set_blk_dev(dev_desc, &info) != 0) { printf("\n** Unable to use %s %d:%d for saveenv **\n", FAT_ENV_INTERFACE, dev, part); return 1; } err = file_fat_write(FAT_ENV_FILE, (void *)&env_new, sizeof(env_t)); if (err == -1) { printf("\n** Unable to write \"%s\" from %s%d:%d **\n", FAT_ENV_FILE, FAT_ENV_INTERFACE, dev, part); return 1; } puts("done\n"); return 0; }
int fs_write(const char *filename, void *buffer, unsigned long maxsize) { #ifdef HTCLEO_SUPPORT_VFAT return file_fat_write(filename, buffer, maxsize); #endif return 0; }
int do_fat_fswrite (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { long size; unsigned long offset; unsigned long count; char buf[12]; block_dev_desc_t *dev_desc=NULL; int dev=0; int part=1; char *ep; if (argc < 6) { printf ("usage: fatwrite <interface> <dev[:part]> " "<addr> <filename> <bytes>\n"); return 1; } dev = (int)simple_strtoul (argv[2], &ep, 16); dev_desc=get_dev(argv[1],dev); if (dev_desc==NULL) { puts ("\n** Invalid device **\n"); return 1; } if (*ep) { if (*ep != ':') { puts ("\n** Invalid device, use `dev[:part]' **\n"); return 1; } part = (int)simple_strtoul(++ep, NULL, 16); } if (fat_register_device(dev_desc,part)!=0) { printf ("\n** Unable to use %s %d:%d for fatwrite **\n", argv[1],dev,part); return 1; } offset = simple_strtoul (argv[3], NULL, 16); count = simple_strtoul (argv[5], NULL, 16); size = file_fat_write(argv[4], (unsigned char *)offset, count); if (size <= 0) { printf("\n** Unable to write\"%s\" to %s %d:%d **\n", argv[4],argv[1],dev,part); return 1; } printf ("\n%ld bytes written\n", size); sprintf(buf, "%lX", size); setenv("filesize", buf); return 0; }
int saveenv(void) { env_t env_new; ssize_t len; char *res; block_dev_desc_t *dev_desc = NULL; int dev = FAT_ENV_DEVICE; int part = FAT_ENV_PART; res = (char *)&env_new.data; len = hexport_r(&env_htab, '\0', &res, ENV_SIZE, 0, NULL); if (len < 0) { error("Cannot export environment: errno = %d\n", errno); return 1; } #ifdef CONFIG_MMC if (strcmp (FAT_ENV_INTERFACE, "mmc") == 0) { struct mmc *mmc = find_mmc_device(dev); if (!mmc) { printf("no mmc device at slot %x\n", dev); return 1; } mmc->has_init = 0; mmc_init(mmc); } #endif /* CONFIG_MMC */ dev_desc = get_dev(FAT_ENV_INTERFACE, dev); if (dev_desc == NULL) { printf("Failed to find %s%d\n", FAT_ENV_INTERFACE, dev); return 1; } if (fat_register_device(dev_desc, part) != 0) { printf("Failed to register %s%d:%d\n", FAT_ENV_INTERFACE, dev, part); return 1; } env_new.crc = crc32(0, env_new.data, ENV_SIZE); if (file_fat_write(FAT_ENV_FILE, (void *)&env_new, sizeof(env_t)) == -1) { printf("\n** Unable to write \"%s\" from %s%d:%d **\n", FAT_ENV_FILE, FAT_ENV_INTERFACE, dev, part); return 1; } puts("done\n"); return 0; }
static int do_fat_fswrite(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { long size; unsigned long addr; unsigned long count; block_dev_desc_t *dev_desc = NULL; int dev = 0; int part = 1; char *ep; if (argc < 5) return cmd_usage(cmdtp); dev = (int)simple_strtoul(argv[2], &ep, 16); dev_desc = get_dev(argv[1], dev); if (dev_desc == NULL) { puts("\n** Invalid boot device **\n"); return 1; } if (*ep) { if (*ep != ':') { puts("\n** Invalid boot device, use `dev[:part]' **\n"); return 1; } part = (int)simple_strtoul(++ep, NULL, 16); } if (fat_register_device(dev_desc, part) != 0) { printf("\n** Unable to use %s %d:%d for fatwrite **\n", argv[1], dev, part); return 1; } addr = simple_strtoul(argv[3], NULL, 16); count = simple_strtoul(argv[5], NULL, 16); size = file_fat_write(argv[4], (void *)addr, count); if (size == -1) { printf("\n** Unable to write \"%s\" from %s %d:%d **\n", argv[4], argv[1], dev, part); return 1; } printf("%ld bytes written\n", size); return 0; }
static int env_fat_save(void) { env_t __aligned(ARCH_DMA_MINALIGN) env_new; struct blk_desc *dev_desc = NULL; disk_partition_t info; int dev, part; int err; loff_t size; err = env_export(&env_new); if (err) return err; part = blk_get_device_part_str(CONFIG_ENV_FAT_INTERFACE, CONFIG_ENV_FAT_DEVICE_AND_PART, &dev_desc, &info, 1); if (part < 0) return 1; dev = dev_desc->devnum; if (fat_set_blk_dev(dev_desc, &info) != 0) { /* * This printf is embedded in the messages from env_save that * will calling it. The missing \n is intentional. */ printf("Unable to use %s %d:%d... ", CONFIG_ENV_FAT_INTERFACE, dev, part); return 1; } err = file_fat_write(CONFIG_ENV_FAT_FILE, (void *)&env_new, 0, sizeof(env_t), &size); if (err == -1) { /* * This printf is embedded in the messages from env_save that * will calling it. The missing \n is intentional. */ printf("Unable to write \"%s\" from %s%d:%d... ", CONFIG_ENV_FAT_FILE, CONFIG_ENV_FAT_INTERFACE, dev, part); return 1; } return 0; }
static int do_fat_fswrite(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { long size; unsigned long addr; unsigned long count; block_dev_desc_t *dev_desc = NULL; disk_partition_t info; int dev = 0; int part = 1; void *buf; if (argc < 5) return cmd_usage(cmdtp); part = get_device_and_partition(argv[1], argv[2], &dev_desc, &info, 1); if (part < 0) return 1; dev = dev_desc->dev; if (fat_set_blk_dev(dev_desc, &info) != 0) { printf("\n** Unable to use %s %d:%d for fatwrite **\n", argv[1], dev, part); return 1; } addr = simple_strtoul(argv[3], NULL, 16); count = simple_strtoul(argv[5], NULL, 16); buf = map_sysmem(addr, count); size = file_fat_write(argv[4], buf, count); unmap_sysmem(buf); if (size == -1) { printf("\n** Unable to write \"%s\" from %s %d:%d **\n", argv[4], argv[1], dev, part); return 1; } printf("%ld bytes written\n", size); return 0; }