mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-26 12:27:12 +00:00
dm: blk: Add probe in blk_first_device/blk_next_device
The description claims that the device is probed but it isn't.
Add the device_probe() call.
Also consolidate the iteration into one function.
Fixes: 8a5cbc065d
("dm: blk: Use uclass_find_first/next_device() in blk_first/next_device()")
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
This commit is contained in:
parent
499503e157
commit
168a0e45fc
1 changed files with 22 additions and 24 deletions
|
@ -369,45 +369,43 @@ int blk_dselect_hwpart(struct blk_desc *desc, int hwpart)
|
||||||
return blk_select_hwpart(desc->bdev, hwpart);
|
return blk_select_hwpart(desc->bdev, hwpart);
|
||||||
}
|
}
|
||||||
|
|
||||||
int blk_first_device(int uclass_id, struct udevice **devp)
|
static int _blk_next_device(int uclass_id, struct udevice **devp)
|
||||||
{
|
{
|
||||||
struct blk_desc *desc;
|
struct blk_desc *desc;
|
||||||
int ret;
|
int ret = 0;
|
||||||
|
|
||||||
|
for (; *devp; uclass_find_next_device(devp)) {
|
||||||
|
desc = dev_get_uclass_plat(*devp);
|
||||||
|
if (desc->uclass_id == uclass_id) {
|
||||||
|
ret = device_probe(*devp);
|
||||||
|
if (!ret)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ret = uclass_find_first_device(UCLASS_BLK, devp);
|
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
if (!*devp)
|
|
||||||
return -ENODEV;
|
|
||||||
do {
|
|
||||||
desc = dev_get_uclass_plat(*devp);
|
|
||||||
if (desc->uclass_id == uclass_id)
|
|
||||||
return 0;
|
|
||||||
ret = uclass_find_next_device(devp);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
} while (*devp);
|
|
||||||
|
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int blk_first_device(int uclass_id, struct udevice **devp)
|
||||||
|
{
|
||||||
|
uclass_find_first_device(UCLASS_BLK, devp);
|
||||||
|
|
||||||
|
return _blk_next_device(uclass_id, devp);
|
||||||
|
}
|
||||||
|
|
||||||
int blk_next_device(struct udevice **devp)
|
int blk_next_device(struct udevice **devp)
|
||||||
{
|
{
|
||||||
struct blk_desc *desc;
|
struct blk_desc *desc;
|
||||||
int ret, uclass_id;
|
int uclass_id;
|
||||||
|
|
||||||
desc = dev_get_uclass_plat(*devp);
|
desc = dev_get_uclass_plat(*devp);
|
||||||
uclass_id = desc->uclass_id;
|
uclass_id = desc->uclass_id;
|
||||||
do {
|
uclass_find_next_device(devp);
|
||||||
ret = uclass_find_next_device(devp);
|
|
||||||
if (ret)
|
return _blk_next_device(uclass_id, devp);
|
||||||
return ret;
|
|
||||||
if (!*devp)
|
|
||||||
return -ENODEV;
|
|
||||||
desc = dev_get_uclass_plat(*devp);
|
|
||||||
if (desc->uclass_id == uclass_id)
|
|
||||||
return 0;
|
|
||||||
} while (1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int blk_find_device(int uclass_id, int devnum, struct udevice **devp)
|
int blk_find_device(int uclass_id, int devnum, struct udevice **devp)
|
||||||
|
|
Loading…
Add table
Reference in a new issue