mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 23:51:33 +00:00
scsi: Remove all children of SCSI devices before rescanning
At present this only unbinds block devices of a certain type. But SCSI device can have different types of children, including bootdevs. Unbind all children so tht everything is clean and ready for a new scan. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
ca93d28171
commit
6febc26471
1 changed files with 13 additions and 2 deletions
|
@ -644,12 +644,23 @@ int scsi_scan(bool verbose)
|
|||
if (verbose)
|
||||
printf("scanning bus for devices...\n");
|
||||
|
||||
blk_unbind_all(UCLASS_SCSI);
|
||||
|
||||
ret = uclass_get(UCLASS_SCSI, &uc);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* remove all children of the SCSI devices */
|
||||
uclass_foreach_dev(dev, uc) {
|
||||
log_debug("unbind %s\n", dev->name);
|
||||
ret = device_chld_remove(dev, NULL, DM_REMOVE_NORMAL);
|
||||
if (!ret)
|
||||
ret = device_chld_unbind(dev, NULL);
|
||||
if (ret) {
|
||||
if (verbose)
|
||||
printf("unable to unbind devices (%dE)\n", ret);
|
||||
return log_msg_ret("unb", ret);
|
||||
}
|
||||
}
|
||||
|
||||
uclass_foreach_dev(dev, uc) {
|
||||
ret = scsi_scan_dev(dev, verbose);
|
||||
if (ret)
|
||||
|
|
Loading…
Reference in a new issue