[U-Boot] [PATCH 05/23] usb: pci: Use pci_find_class() to find the device
Bin Meng
bmeng.cn at gmail.com
Tue Jan 27 10:55:23 CET 2015
On Tue, Jan 27, 2015 at 9:23 AM, Simon Glass <sjg at chromium.org> wrote:
> Use the new utility function instead of local code.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> drivers/usb/host/ehci-pci.c | 53 +--------------------------------------------
> 1 file changed, 1 insertion(+), 52 deletions(-)
>
> diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
> index 991b199..b9eabc5 100644
> --- a/drivers/usb/host/ehci-pci.c
> +++ b/drivers/usb/host/ehci-pci.c
> @@ -34,57 +34,6 @@ static struct pci_device_id ehci_pci_ids[] = {
> {0, 0}
> };
> #else
> -static pci_dev_t ehci_find_class(int index)
> -{
> - int bus;
> - int devnum;
> - pci_dev_t bdf;
> - uint32_t class;
> -
> - for (bus = 0; bus <= pci_last_busno(); bus++) {
> - for (devnum = 0; devnum < PCI_MAX_PCI_DEVICES-1; devnum++) {
> - pci_read_config_dword(PCI_BDF(bus, devnum, 0),
> - PCI_CLASS_REVISION, &class);
> - if (class >> 16 == 0xffff)
> - continue;
> -
> - for (bdf = PCI_BDF(bus, devnum, 0);
> - bdf <= PCI_BDF(bus, devnum,
> - PCI_MAX_PCI_FUNCTIONS - 1);
> - bdf += PCI_BDF(0, 0, 1)) {
> - pci_read_config_dword(bdf, PCI_CLASS_REVISION,
> - &class);
> - class >>= 8;
> - /*
> - * Here be dragons! In case we have multiple
> - * PCI EHCI controllers, this function will
> - * be called multiple times as well. This
> - * function will scan the PCI busses, always
> - * starting from bus 0, device 0, function 0,
> - * until it finds an USB controller. The USB
> - * stack gives us an 'index' of a controller
> - * that is currently being registered, which
> - * is a number, starting from 0 and growing
> - * in ascending order as controllers are added.
> - * To avoid probing the same controller in tne
> - * subsequent runs of this function, we will
> - * skip 'index - 1' detected controllers and
> - * report the index'th controller.
> - */
> - if (class != PCI_CLASS_SERIAL_USB_EHCI)
> - continue;
> - if (index) {
> - index--;
> - continue;
> - }
> - /* Return index'th controller. */
> - return bdf;
> - }
> - }
> - }
> -
> - return -ENODEV;
> -}
> #endif
>
> /*
> @@ -102,7 +51,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,
> #ifdef CONFIG_PCI_EHCI_DEVICE
> pdev = pci_find_devices(ehci_pci_ids, CONFIG_PCI_EHCI_DEVICE);
> #else
> - pdev = ehci_find_class(index);
> + pdev = pci_find_class(PCI_CLASS_SERIAL_USB_EHCI, index);
> #endif
> if (pdev < 0) {
> printf("EHCI host controller not found\n");
> --
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
More information about the U-Boot
mailing list