static unsigned int write_part = 0;
static unsigned int fs_offset = 0x0;
-#ifdef CONFIG_USE_YAFFS
-static unsigned int yaffs_len = 0;
-static unsigned char yaffs_data[2112];
-#define YAFFS_PAGE 2112
-#endif
-
#define NAND_PAGE_SIZE 2048
static unsigned long down_ram_addr;
static int write_file_system(char *ramaddr, ulong len, char *offset,
char *length, int part_num, int ubi_update)
{
-#ifdef CONFIG_USE_YAFFS
- int actual_len = 0;
- int yaffs_write = 0;
-#endif
int ret = 0;
#ifdef CONFIG_CMD_UBI
nand_cmd(0, offset, length, NULL);
}
-#ifdef CONFIG_USE_YAFFS
- /* if using yaffs, wirte size must be 2112*X
- * so, must have to realloc, and writing */
- if (!strcmp("yaffs", getenv(parts[part_num]->name))) {
- yaffs_write = 1;
-
- memcpy((void *)down_ram_addr, yaffs_data, yaffs_len);
-
- actual_len = len + yaffs_len;
- yaffs_len = actual_len % YAFFS_PAGE;
- len = actual_len - yaffs_len;
-
- memset(yaffs_data, 0x00, YAFFS_PAGE);
- memcpy(yaffs_data, (char *)down_ram_addr + len, yaffs_len);
- }
-#endif
-
sprintf(offset, "0x%x", (uint)(parts[part_num]->offset + fs_offset));
sprintf(length, "0x%x", (uint)len);
-#ifdef CONFIG_USE_YAFFS
- if (yaffs_write)
- ret = nand_cmd(2, ramaddr, offset, length);
- else
- ret = nand_cmd(1, ramaddr, offset, length);
-
- if (!strcmp("yaffs", getenv(parts[part_num]->name)))
- fs_offset += len / YAFFS_PAGE * NAND_PAGE_SIZE;
- else
- fs_offset += len;
-
-#else
fs_offset += len;
ret = nand_cmd(1, ramaddr, offset, length);
-#endif
return ret;
}
case COMMAND_DOWNLOAD_IMAGE:
printf("\nCOMMAND_DOWNLOAD_IMAGE\n");
-#ifdef CONFIG_USE_YAFFS
- usbd->recv_setup((char *)down_ram_addr + yaffs_len, (int)len);
- printf("Download to 0x%08x, %d bytes\n",
- (uint)down_ram_addr + yaffs_len, (int)len);
-#else
if (arg)
down_ram_addr = usbd->ram_addr + 0x1000000;
else
usbd->recv_setup((char *)down_ram_addr, (int)len);
printf("Download to 0x%08x, %d bytes\n",
(uint)down_ram_addr, (int)len);
-#endif
+
/* response */
send_ack(usbd, STATUS_DONE);
if (flag) {
write_part = 0;
fs_offset = 0;
-#ifdef CONFIG_USE_YAFFS
- yaffs_len = 0;
-#endif
}
return 1;