int get_bootloader_message(struct bootloader_message *out) { unsigned char data[CFG_MISC_SIZE]; unsigned char size = CFG_MISC_SIZE; memset(data, '\0', CFG_MISC_SIZE); puts("get_bootloader_message:msc read\n"); msc_read(PTN_MISC_OFFSET, (u_char*)data, size); memcpy(out, data, sizeof(struct bootloader_message)); return 0; }
int do_msc(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) { int ret=0; ulong addr, off, size; char *cmd; int quiet = 1; const char *quiet_str = getenv("quiet"); /* at least two arguments please */ if (argc < 2) goto usage; if (quiet_str) quiet = simple_strtoul(quiet_str, NULL, 0) != 0; cmd = argv[1]; if (strncmp(cmd, "read", 4) == 0) { int read; if (argc < 4) goto usage; addr = (ulong)simple_strtoul(argv[2], NULL, 16); off = (ulong)simple_strtoul(argv[3], NULL, 16); size = (ulong)simple_strtoul(argv[4], NULL, 16); read = strncmp(cmd, "read", 4) == 0; /* 1 = read, 0 = write */ printf("\nMSC read"); ret = msc_read(off, (u_char *)addr, size); printf(" %d bytes %s: %s\n", size, ret ? "ERROR" : "OK"); return ret == 0 ? 0 : 1; } usage: printf("Usage:\n%s\n", cmdtp->usage); return 1; }