diff options
| author | Josef Karthauser <joe@FreeBSD.org> | 2002-01-21 04:24:33 +0000 |
|---|---|---|
| committer | Josef Karthauser <joe@FreeBSD.org> | 2002-01-21 04:24:33 +0000 |
| commit | 851522be275cedc262690c52cf8797d67e76ada4 (patch) | |
| tree | cf8352a1ca37a9479dcc5abf20b185f1f5633674 /sys/dev | |
| parent | 3bedcae34fc1802f791fbc508f6426c3338ba2f7 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/usb/ohci.c | 11 | ||||
| -rw-r--r-- | sys/dev/usb/ohcireg.h | 5 |
2 files changed, 12 insertions, 4 deletions
diff --git a/sys/dev/usb/ohci.c b/sys/dev/usb/ohci.c index a54f21be0c527..2e4585b56fce7 100644 --- a/sys/dev/usb/ohci.c +++ b/sys/dev/usb/ohci.c @@ -1,4 +1,4 @@ -/* $NetBSD: ohci.c,v 1.65 2000/01/25 12:06:21 augustss Exp $ */ +/* $NetBSD: ohci.c,v 1.68 2000/01/31 20:17:25 augustss Exp $ */ /* $FreeBSD$ */ /* @@ -641,7 +641,7 @@ ohci_init(sc) ohci_soft_ed_t *sed, *psed; usbd_status err; int i; - u_int32_t s, ctl, ival, hcr, fm, per, rev; + u_int32_t s, ctl, ival, hcr, fm, per, rev, desca; DPRINTF(("ohci_init: start\n")); #if defined(__OpenBSD__) @@ -815,7 +815,12 @@ ohci_init(sc) per = OHCI_PERIODIC(ival); /* 90% periodic */ OWRITE4(sc, OHCI_PERIODIC_START, per); - OWRITE4(sc, OHCI_RH_STATUS, OHCI_LPSC); /* Enable port power */ + /* Fiddle the No OverCurrent Protection bit to avoid chip bug. */ + desca = OREAD4(sc, OHCI_RH_DESCRIPTOR_A); + OWRITE4(sc, OHCI_RH_DESCRIPTOR_A, desca | OHCI_NOCP); + OWRITE4(sc, OHCI_RH_STATUS, OHCI_LPSC); /* Enable port power */ + usb_delay_ms(&sc->sc_bus, 5); + OWRITE4(sc, OHCI_RH_DESCRIPTOR_A, desca); sc->sc_noport = OHCI_GET_NDP(OREAD4(sc, OHCI_RH_DESCRIPTOR_A)); diff --git a/sys/dev/usb/ohcireg.h b/sys/dev/usb/ohcireg.h index 053d7f3d3410f..a9f4f81bc3526 100644 --- a/sys/dev/usb/ohcireg.h +++ b/sys/dev/usb/ohcireg.h @@ -1,4 +1,4 @@ -/* $NetBSD: ohcireg.h,v 1.11 2000/01/16 10:35:24 augustss Exp $ */ +/* $NetBSD: ohcireg.h,v 1.13 2000/01/31 20:17:26 augustss Exp $ */ /* $FreeBSD$ */ @@ -110,6 +110,9 @@ #define OHCI_GET_NDP(s) ((s) & 0xff) #define OHCI_PSM 0x0100 /* Power Switching Mode */ #define OHCI_NPS 0x0200 /* No Power Switching */ +#define OHCI_DT 0x0400 /* Device Type */ +#define OHCI_OCPM 0x0800 /* Overcurrent Protection Mode */ +#define OHCI_NOCP 0x1000 /* No Overcurrent Protection */ #define OHCI_GET_POTPGT(s) ((s) >> 24) #define OHCI_RH_DESCRIPTOR_B 0x4c #define OHCI_RH_STATUS 0x50 |
