Skip to content
Snippets Groups Projects
cmd_nand.c 25 KiB
Newer Older
  • Learn to ignore specific revisions
  • 			if (argc > 3)
    				goto usage;
    			if (argc == 3)
    
    				addr = simple_strtoul(argv[1], NULL, 16);
    
    				addr = CONFIG_SYS_LOAD_ADDR;
    
    			return nand_load_image(cmdtp, &nand_info[dev->id->num],
    
    					       part->offset, addr, argv[0]);
    
    	bootstage_mark(BOOTSTAGE_ID_NAND_PART);
    
    		addr = CONFIG_SYS_LOAD_ADDR;
    
    		boot_device = getenv("bootdevice");
    		break;
    	case 2:
    		addr = simple_strtoul(argv[1], NULL, 16);
    		boot_device = getenv("bootdevice");
    		break;
    	case 3:
    		addr = simple_strtoul(argv[1], NULL, 16);
    		boot_device = argv[2];
    		break;
    	case 4:
    		addr = simple_strtoul(argv[1], NULL, 16);
    		boot_device = argv[2];
    		offset = simple_strtoul(argv[3], NULL, 16);
    		break;
    	default:
    
    #if defined(CONFIG_CMD_MTDPARTS)
    
    		bootstage_error(BOOTSTAGE_ID_NAND_SUFFIX);
    
    	bootstage_mark(BOOTSTAGE_ID_NAND_SUFFIX);
    
    
    	if (!boot_device) {
    		puts("\n** No boot device **\n");
    
    		bootstage_error(BOOTSTAGE_ID_NAND_BOOT_DEVICE);
    
    	bootstage_mark(BOOTSTAGE_ID_NAND_BOOT_DEVICE);
    
    	idx = simple_strtoul(boot_device, NULL, 16);
    
    
    	if (idx < 0 || idx >= CONFIG_SYS_MAX_NAND_DEVICE || !nand_info[idx].name) {
    
    		printf("\n** Device %d not available\n", idx);
    
    		bootstage_error(BOOTSTAGE_ID_NAND_AVAILABLE);
    
    	bootstage_mark(BOOTSTAGE_ID_NAND_AVAILABLE);
    
    
    	return nand_load_image(cmdtp, &nand_info[idx], offset, addr, argv[0]);
    }
    
    U_BOOT_CMD(nboot, 4, 1, do_nandboot,
    
    Peter Tyser's avatar
    Peter Tyser committed
    	"boot from NAND device",
    
    	"[partition] | [[[loadAddr] dev] offset]"
    );