- if (argc < 4) {
- printf("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- /* todo: get dev number for NAND... */
- ubi_dev.nr = 0;
-
- /*
- * Call ubi_exit() before re-initializing the UBI subsystem
- */
- if (ubi_initialized) {
- ubi_exit();
- del_mtd_partitions(ubi_dev.mtd_info);
- }
-
- /*
- * Check for nand|onenand selection
- */
-#if defined(CONFIG_CMD_NAND)
- if (strcmp(argv[2], "nand") == 0) {
- strcpy(ubi_dev.dev_name, "NAND");
- ubi_dev.type = DEV_TYPE_NAND;
- ubi_dev.mtd_info = &nand_info[ubi_dev.nr];
- }
-#endif
-#if defined(CONFIG_FLASH_CFI_MTD)
- if (strcmp(argv[2], "nor") == 0) {
- strcpy(ubi_dev.dev_name, "NOR");
- ubi_dev.type = DEV_TYPE_NOR;
- ubi_dev.mtd_info = get_mtd_device_nm(CFI_MTD_DEV_NAME);
- }
-#endif
-#if defined(CONFIG_CMD_ONENAND)
- if (strcmp(argv[2], "onenand") == 0) {
- strcpy(ubi_dev.dev_name, "OneNAND");
- ubi_dev.type = DEV_TYPE_ONENAND;
- ubi_dev.mtd_info = &onenand_mtd;
- }
-#endif
-
- if (ubi_dev.type == DEV_TYPE_NONE) {
- printf("Error, no UBI device/partition selected!\n");
- return 1;
- }
-
- strcpy(ubi_dev.part_name, argv[3]);
- err = ubi_dev_scan(ubi_dev.mtd_info, ubi_dev.part_name);
- if (err) {
- printf("UBI init error %d\n", err);
- ubi_dev.type = DEV_TYPE_NONE;
- return err;
- }