diff --git a/include/pci.h b/include/pci.h index 28d2563..455b722 100644 --- a/include/pci.h +++ b/include/pci.h @@ -217,4 +217,5 @@ extern int32_t pci_unhook_interrupt(int32_t handle); #define PCI_DEVICE_FROM_HANDLE(h) (((h) & 0xf8) >> 3) #define PCI_FUNCTION_FROM_HANDLE(h) (((h) & 0x7)) +extern void chip_errata_135(void); /* needed in ohci-hcd.c */ #endif /* _PCI_H_ */ diff --git a/sources/ohci-hcd.c b/sources/ohci-hcd.c index bf96e73..122687b 100644 --- a/sources/ohci-hcd.c +++ b/sources/ohci-hcd.c @@ -1627,8 +1627,8 @@ static int hc_reset(ohci_t *ohci) if (usb_base_addr == 0xFFFFFFFF) { uint32_t base = pci_rsc_desc->offset + pci_rsc_desc->start; - writel(readl((uint32_t) base + EHCI_USBCMD_OFF) | EHCI_USBCMD_HCRESET, base + EHCI_USBCMD_OFF); - while (readl(base + EHCI_USBCMD_OFF) & EHCI_USBCMD_HCRESET) + writel((uint32_t) readl((uint32_t *) base + EHCI_USBCMD_OFF) | EHCI_USBCMD_HCRESET, (uint32_t *) base + EHCI_USBCMD_OFF); + while (readl((uint32_t *) base + EHCI_USBCMD_OFF) & EHCI_USBCMD_HCRESET) { if (timeout-- <= 0) {