dm: core: Switch uclass_*_device_err to use uclass_*_device_check

Clarify documentation, fix a few more cases that could be broken by the
change.

Signed-off-by: Michal Suchanek <msuchanek@suse.de>
This commit is contained in:
Michal Suchanek 2022-09-25 13:08:16 +02:00 committed by Simon Glass
parent 6b08fb5cc4
commit 58ddb937e1
3 changed files with 20 additions and 9 deletions

View File

@ -1777,10 +1777,9 @@ int pci_sriov_init(struct udevice *pdev, int vf_en)
bdf = dm_pci_get_bdf(pdev); bdf = dm_pci_get_bdf(pdev);
pci_get_bus(PCI_BUS(bdf), &bus); ret = pci_get_bus(PCI_BUS(bdf), &bus);
if (ret)
if (!bus) return ret;
return -ENODEV;
bdf += PCI_BDF(0, 0, vf_offset); bdf += PCI_BDF(0, 0, vf_offset);

View File

@ -16,7 +16,15 @@ struct sysinfo_priv {
int sysinfo_get(struct udevice **devp) int sysinfo_get(struct udevice **devp)
{ {
return uclass_first_device_err(UCLASS_SYSINFO, devp); int ret = uclass_first_device_err(UCLASS_SYSINFO, devp);
/*
* There is some very dodgy error handling in gazerbeam,
* do not return a device on error.
*/
if (ret)
*devp = NULL;
return ret;
} }
int sysinfo_detect(struct udevice *dev) int sysinfo_detect(struct udevice *dev)

View File

@ -350,7 +350,8 @@ int uclass_next_device(struct udevice **devp);
/** /**
* uclass_first_device_err() - Get the first device in a uclass * uclass_first_device_err() - Get the first device in a uclass
* *
* The device returned is probed if necessary, and ready for use * The device returned is probed if necessary, and ready for use if no error is
* returned
* *
* @id: Uclass ID to look up * @id: Uclass ID to look up
* @devp: Returns pointer to the first device in that uclass, or NULL if none * @devp: Returns pointer to the first device in that uclass, or NULL if none
@ -361,7 +362,8 @@ int uclass_first_device_err(enum uclass_id id, struct udevice **devp);
/** /**
* uclass_next_device_err() - Get the next device in a uclass * uclass_next_device_err() - Get the next device in a uclass
* *
* The device returned is probed if necessary, and ready for use * The device returned is probed if necessary, and ready for use if no error is
* returned
* *
* @devp: On entry, pointer to device to lookup. On exit, returns pointer * @devp: On entry, pointer to device to lookup. On exit, returns pointer
* to the next device in the uclass if no error occurred, or NULL if * to the next device in the uclass if no error occurred, or NULL if
@ -373,7 +375,8 @@ int uclass_next_device_err(struct udevice **devp);
/** /**
* uclass_first_device_check() - Get the first device in a uclass * uclass_first_device_check() - Get the first device in a uclass
* *
* The device returned is probed if necessary, and ready for use * The device returned is probed if necessary, and ready for use if no error is
* returned
* *
* This function is useful to start iterating through a list of devices which * This function is useful to start iterating through a list of devices which
* are functioning correctly and can be probed. * are functioning correctly and can be probed.
@ -389,7 +392,8 @@ int uclass_first_device_check(enum uclass_id id, struct udevice **devp);
/** /**
* uclass_next_device_check() - Get the next device in a uclass * uclass_next_device_check() - Get the next device in a uclass
* *
* The device returned is probed if necessary, and ready for use * The device returned is probed if necessary, and ready for use if no error is
* returned
* *
* This function is useful to start iterating through a list of devices which * This function is useful to start iterating through a list of devices which
* are functioning correctly and can be probed. * are functioning correctly and can be probed.