static size_t usb_read_file(const char *file_name) { loff_t act_read = 0; struct udevice *dev; int rc; usb_stop(); if (usb_init() < 0) { printf("Error: usb_init failed\n"); return 0; } /* Try to recognize storage devices immediately */ blk_first_device(IF_TYPE_USB, &dev); if (!dev) { printf("Error: USB storage device not found\n"); return 0; } /* Always load from usb 0 */ if (fs_set_blk_dev("usb", "0", FS_TYPE_ANY)) { printf("Error: USB 0 not found\n"); return 0; } /* Perfrom file read */ rc = fs_read(file_name, get_load_addr(), 0, 0, &act_read); if (rc) return 0; return act_read; }
/* Test that block devices can be created */ static int dm_test_blk_base(struct unit_test_state *uts) { struct udevice *blk1, *blk3, *dev; /* Make sure there are no block devices */ ut_asserteq(-ENODEV, uclass_get_device_by_seq(UCLASS_BLK, 0, &dev)); /* Create two, one the parent of the other */ ut_assertok(blk_create_device(gd->dm_root, "sandbox_host_blk", "test", IF_TYPE_HOST, 1, 512, 2, &blk1)); ut_assertok(blk_create_device(blk1, "sandbox_host_blk", "test", IF_TYPE_HOST, 3, 512, 2, &blk3)); /* Check we can find them */ ut_asserteq(-ENODEV, blk_get_device(IF_TYPE_HOST, 0, &dev)); ut_assertok(blk_get_device(IF_TYPE_HOST, 1, &dev)); ut_asserteq_ptr(blk1, dev); ut_assertok(blk_get_device(IF_TYPE_HOST, 3, &dev)); ut_asserteq_ptr(blk3, dev); /* Check we can iterate */ ut_assertok(blk_first_device(IF_TYPE_HOST, &dev)); ut_asserteq_ptr(blk1, dev); ut_assertok(blk_next_device(&dev)); ut_asserteq_ptr(blk3, dev); return 0; }