aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorJosef Karthauser <joe@FreeBSD.org>2002-01-03 00:46:47 +0000
committerJosef Karthauser <joe@FreeBSD.org>2002-01-03 00:46:47 +0000
commit4b2ee62a910d02f2ca3ec03fac10fe6c546728bc (patch)
tree6a5f0925e27988d54384fcf1446c31d4db95983e /sys/dev
parentb992262bcfb52715565e3041dc9e02dd1d0b2e99 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/usb/uhci.c18
-rw-r--r--sys/dev/usb/uhcireg.h3
2 files changed, 12 insertions, 9 deletions
diff --git a/sys/dev/usb/uhci.c b/sys/dev/usb/uhci.c
index 27ae977cc745..38ff05b3a525 100644
--- a/sys/dev/usb/uhci.c
+++ b/sys/dev/usb/uhci.c
@@ -2782,27 +2782,27 @@ uhci_root_ctrl_start(usbd_xfer_handle xfer)
}
switch(value) {
case UHF_PORT_ENABLE:
- x = UREAD2(sc, port);
+ x = URWMASK(UREAD2(sc, port));
UWRITE2(sc, port, x & ~UHCI_PORTSC_PE);
break;
case UHF_PORT_SUSPEND:
- x = UREAD2(sc, port);
+ x = URWMASK(UREAD2(sc, port));
UWRITE2(sc, port, x & ~UHCI_PORTSC_SUSP);
break;
case UHF_PORT_RESET:
- x = UREAD2(sc, port);
+ x = URWMASK(UREAD2(sc, port));
UWRITE2(sc, port, x & ~UHCI_PORTSC_PR);
break;
case UHF_C_PORT_CONNECTION:
- x = UREAD2(sc, port);
+ x = URWMASK(UREAD2(sc, port));
UWRITE2(sc, port, x | UHCI_PORTSC_CSC);
break;
case UHF_C_PORT_ENABLE:
- x = UREAD2(sc, port);
+ x = URWMASK(UREAD2(sc, port));
UWRITE2(sc, port, x | UHCI_PORTSC_POEDC);
break;
case UHF_C_PORT_OVER_CURRENT:
- x = UREAD2(sc, port);
+ x = URWMASK(UREAD2(sc, port));
UWRITE2(sc, port, x | UHCI_PORTSC_OCIC);
break;
case UHF_C_PORT_RESET:
@@ -2908,15 +2908,15 @@ uhci_root_ctrl_start(usbd_xfer_handle xfer)
}
switch(value) {
case UHF_PORT_ENABLE:
- x = UREAD2(sc, port);
+ x = URWMASK(UREAD2(sc, port));
UWRITE2(sc, port, x | UHCI_PORTSC_PE);
break;
case UHF_PORT_SUSPEND:
- x = UREAD2(sc, port);
+ x = URWMASK(UREAD2(sc, port));
UWRITE2(sc, port, x | UHCI_PORTSC_SUSP);
break;
case UHF_PORT_RESET:
- x = UREAD2(sc, port);
+ x = URWMASK(UREAD2(sc, port));
UWRITE2(sc, port, x | UHCI_PORTSC_PR);
usb_delay_ms(&sc->sc_bus, USB_PORT_ROOT_RESET_DELAY);
UWRITE2(sc, port, x & ~UHCI_PORTSC_PR);
diff --git a/sys/dev/usb/uhcireg.h b/sys/dev/usb/uhcireg.h
index 8178bb12df64..57556168028e 100644
--- a/sys/dev/usb/uhcireg.h
+++ b/sys/dev/usb/uhcireg.h
@@ -106,6 +106,9 @@
#define UHCI_PORTSC_OCIC 0x0800
#define UHCI_PORTSC_SUSP 0x1000
+#define URWMASK(x) \
+ ((x) & (UHCI_PORTSC_SUSP | UHCI_PORTSC_PR | UHCI_PORTSC_RD | UHCI_PORTSC_PE))
+
#define UHCI_FRAMELIST_COUNT 1024
#define UHCI_FRAMELIST_ALIGN 4096