X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fusb%2Fhost%2Fehci-generic.c;h=2190adba6777d849525efdf165ffed882cfd001a;hb=57ca63b86e5987029cd4970890aa28602ba50856;hp=e0377ca1c9eefdc496eb7d3b267eea8aee602ab9;hpb=09849f4a7779a247be8af5cfae44f7aad30e1222;p=u-boot diff --git a/drivers/usb/host/ehci-generic.c b/drivers/usb/host/ehci-generic.c index e0377ca1c9..2190adba67 100644 --- a/drivers/usb/host/ehci-generic.c +++ b/drivers/usb/host/ehci-generic.c @@ -6,6 +6,7 @@ #include #include +#include #include #include #include "ehci.h" @@ -37,6 +38,18 @@ static int ehci_usb_probe(struct udevice *dev) clk_free(&clk); } + for (i = 0; ; i++) { + struct reset_ctl reset; + int ret; + + ret = reset_get_by_index(dev, i, &reset); + if (ret < 0) + break; + if (reset_deassert(&reset)) + printf("failed to deassert reset %d\n", i); + reset_free(&reset); + } + hccr = map_physmem(dev_get_addr(dev), 0x100, MAP_NOCACHE); hcor = (struct ehci_hcor *)((uintptr_t)hccr + HC_LENGTH(ehci_readl(&hccr->cr_capbase))); @@ -44,11 +57,6 @@ static int ehci_usb_probe(struct udevice *dev) return ehci_register(dev, hccr, hcor, NULL, 0, USB_INIT_HOST); } -static int ehci_usb_remove(struct udevice *dev) -{ - return ehci_deregister(dev); -} - static const struct udevice_id ehci_usb_ids[] = { { .compatible = "generic-ehci" }, { } @@ -59,7 +67,7 @@ U_BOOT_DRIVER(ehci_generic) = { .id = UCLASS_USB, .of_match = ehci_usb_ids, .probe = ehci_usb_probe, - .remove = ehci_usb_remove, + .remove = ehci_deregister, .ops = &ehci_usb_ops, .priv_auto_alloc_size = sizeof(struct generic_ehci), .flags = DM_FLAG_ALLOC_PRIV_DMA,