1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-29 06:21:15 +02:00

dm: blk: Add udevice functions

At present we have functions called blk_dread(), etc., which take a
struct blk_desc * to refer to the block device. Add some functions which
use udevice instead, since this is more in keeping with how driver model
is supposed to work.

Update one of the tests to use this.

Note that it would be nice to update the functions in disk-uclass.c to use
these new functions. However they are not quite the same. For example,
disk_blk_read() adds the partition offset to 'start' when calling the
cache read/fill functions, but does not with part_blk_read(), which does
the addition itself. So as designed the code is duplicated.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2022-10-20 18:22:54 -06:00
committed by Tom Rini
parent b55afa0c0e
commit 606b926f9d
3 changed files with 80 additions and 21 deletions

View File

@@ -43,19 +43,24 @@ DM_TEST(dm_test_usb_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
*/
static int dm_test_usb_flash(struct unit_test_state *uts)
{
struct udevice *dev;
struct blk_desc *dev_desc;
struct blk_desc *dev_desc, *chk;
struct udevice *dev, *blk;
char cmp[1024];
state_set_skip_delays(true);
ut_assertok(usb_init());
ut_assertok(uclass_get_device(UCLASS_MASS_STORAGE, 0, &dev));
ut_assertok(blk_get_device_by_str("usb", "0", &dev_desc));
chk = blk_get_by_device(dev);
ut_asserteq_ptr(chk, dev_desc);
ut_assertok(device_find_first_child_by_uclass(dev, UCLASS_BLK, &blk));
ut_asserteq_ptr(chk, blk_get_by_device(dev));
/* Read a few blocks and look for the string we expect */
ut_asserteq(512, dev_desc->blksz);
memset(cmp, '\0', sizeof(cmp));
ut_asserteq(2, blk_dread(dev_desc, 0, 2, cmp));
ut_asserteq(2, blk_read(blk, 0, 2, cmp));
ut_assertok(strcmp(cmp, "this is a test"));
ut_assertok(usb_stop());