[U-Boot] [PATCH 05/25] dm: pci: Add a driver-model version of pci_find_class()
Bin Meng
bmeng.cn at gmail.com
Wed Nov 18 05:27:03 CET 2015
On Tue, Nov 17, 2015 at 11:53 AM, Simon Glass <sjg at chromium.org> wrote:
> Add a function which scans the driver model device information rather
> than scanning the PCI bus again.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> drivers/pci/pci-uclass.c | 20 ++++++++++++++++++++
> include/pci.h | 10 ++++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
> index 6376e43..929d772 100644
> --- a/drivers/pci/pci-uclass.c
> +++ b/drivers/pci/pci-uclass.c
> @@ -233,6 +233,26 @@ int dm_pci_find_device(unsigned int vendor, unsigned int device, int index,
> return -ENODEV;
> }
>
> +int dm_pci_find_class(uint find_class, int index, struct udevice **devp)
> +{
> + struct udevice *dev;
> +
> + /* Scan all known buses */
> + for (pci_find_first_device(&dev);
> + dev;
> + pci_find_next_device(&dev)) {
> + struct pci_child_platdata *pplat = dev_get_parent_platdata(dev);
> +
> + if (pplat->class == find_class && !index--) {
> + *devp = dev;
> + return device_probe(*devp);
> + }
> + }
> + *devp = NULL;
> +
> + return -ENODEV;
> +}
> +
> int pci_bus_write_config(struct udevice *bus, pci_dev_t bdf, int offset,
> unsigned long value, enum pci_size_t size)
> {
> diff --git a/include/pci.h b/include/pci.h
> index f29804f..d4f6e02 100644
> --- a/include/pci.h
> +++ b/include/pci.h
> @@ -1186,6 +1186,16 @@ int dm_pci_find_device(unsigned int vendor, unsigned int device, int index,
> struct udevice **devp);
>
> /**
> + * dm_pci_find_class() - find a device by class
> + *
> + * @find_class: 3-byte (24-bit) class value to find
> + * @index: 0 to find the first match, 1 for second, etc.
> + * @devp: Returns pointer to the device, if found
> + * @return 0 if found, -ve on error
> + */
> +int dm_pci_find_class(uint find_class, int index, struct udevice **devp);
> +
> +/**
> * struct dm_pci_emul_ops - PCI device emulator operations
> */
> struct dm_pci_emul_ops {
> --
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
More information about the U-Boot
mailing list