aboutsummaryrefslogtreecommitdiff
path: root/payloads/libpayload/drivers/usb/uhci.c
diff options
context:
space:
mode:
Diffstat (limited to 'payloads/libpayload/drivers/usb/uhci.c')
-rw-r--r--payloads/libpayload/drivers/usb/uhci.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/payloads/libpayload/drivers/usb/uhci.c b/payloads/libpayload/drivers/usb/uhci.c
index ab4f7982d1..2eea375bcc 100644
--- a/payloads/libpayload/drivers/usb/uhci.c
+++ b/payloads/libpayload/drivers/usb/uhci.c
@@ -114,7 +114,11 @@ uhci_reset (hci_t *controller)
udelay (500);
if (timeout < 0)
usb_debug ("Warning: uhci: host controller reset timed out.\n");
+}
+static void
+uhci_reinit (hci_t *controller)
+{
uhci_reg_write32 (controller, FLBASEADD,
(u32) virt_to_phys (UHCI_INST (controller)->
framelistptr));
@@ -152,6 +156,7 @@ uhci_init (pcidev_t addr)
controller->start = uhci_start;
controller->stop = uhci_stop;
controller->reset = uhci_reset;
+ controller->init = uhci_reinit;
controller->shutdown = uhci_shutdown;
controller->bulk = uhci_bulk;
controller->control = uhci_control;
@@ -228,6 +233,7 @@ uhci_init (pcidev_t addr)
controller->devices[0]->init = uhci_rh_init;
controller->devices[0]->init (controller->devices[0]);
uhci_reset (controller);
+ uhci_reinit (controller);
return controller;
}