From dbd23c04de506031db8bfe19c45f14c9898766f3 Mon Sep 17 00:00:00 2001 From: joe Date: Thu, 3 Jan 2002 00:46:47 +0000 Subject: Merge from NetBSD: date: 2001/08/06 15:15:08; author: augustss; state: Exp; Don't write back status bits that are cleared when written. --- sys/dev/usb/uhci.c | 18 +++++++++--------- sys/dev/usb/uhcireg.h | 3 +++ 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'sys/dev') diff --git a/sys/dev/usb/uhci.c b/sys/dev/usb/uhci.c index 27ae977..38ff05b 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 8178bb1..5755616 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 -- cgit v1.1