summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/ehcireg.h
diff options
context:
space:
mode:
authorle <le@FreeBSD.org>2004-06-26 00:52:37 +0000
committerle <le@FreeBSD.org>2004-06-26 00:52:37 +0000
commitcd721672a01a90040c2f1e5af0a17840d6d8c529 (patch)
tree371c27da3dbfc2cb1279a6d0de6cf5293988a52d /sys/dev/usb/ehcireg.h
parentd1f0e75537b0d494a6823fbcb82d16b517383233 (diff)
downloadFreeBSD-src-cd721672a01a90040c2f1e5af0a17840d6d8c529.zip
FreeBSD-src-cd721672a01a90040c2f1e5af0a17840d6d8c529.tar.gz
MFNetBSD ehci.c and ehcireg.h
ehci.c (1.55), ehcireg.h (1.16); author: mycroft Set the data toggle correctly, and use EHCI_QTD_DTC. This fixes problems with my ALi-based drive enclosure (it works now, rather than failing to attach). Also seems to work with a GL811-based enclosure and an ASUS enclosure with a CD-RW, on both Intel and NEC controllers. Note: The ALi enclosure is currently very SLOW, due to some issue with taking too long to notice that the QTD is complete. This requires more investigation. ehci.c (1.56); author: mycroft Failure to properly mask off UE_DIR_IN from the endpoint address was causing OHCI_ED_FORMAT_ISO and EHCI_QH_HRECL to get set spuriously, causing rather interesting lossage. Suddenly I get MUCH better performance with ehci... ehci.c (1.58); author: mycroft Fix a stupid bug in ehci_check_intr() that caused use to try to complete a transaction that was still running. Now ehci can handle multiple devices being active at once. ehci.c (1.59); author: enami As the ehci_idone() now uses the variable `epipe' unconditionally, always declare it (in other words, make this file compile w/o EHCI_DEBUG). ehci.c (1.60); author: mycroft Remove comment about the data toggle being borked. ehci.c (1.61); author: mycroft Update comment. ehci.c (1.62); author: mycroft Adjust a couple of comments to make it clear WTF is going on. ehci.c (1.63); author: mycroft Fix an error in a debug printf(). ehci.c (1.64), ehcireg.h (1.17); author: mycroft Further cleanup of toggle handling. Now that we use EHCI_QH_DTC, we don't need to fiddle with the TOGGLE bit in the overlay descriptor, so minimize how much we fuss with it. Obtained from: NetBSD
Diffstat (limited to 'sys/dev/usb/ehcireg.h')
-rw-r--r--sys/dev/usb/ehcireg.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/usb/ehcireg.h b/sys/dev/usb/ehcireg.h
index ed3fe64..ec5d893 100644
--- a/sys/dev/usb/ehcireg.h
+++ b/sys/dev/usb/ehcireg.h
@@ -1,4 +1,4 @@
-/* $NetBSD: ehcireg.h,v 1.15 2004/06/12 16:02:42 mycroft Exp $ */
+/* $NetBSD: ehcireg.h,v 1.17 2004/06/23 06:45:56 mycroft Exp $ */
/* $FreeBSD$ */
/*
@@ -233,7 +233,8 @@ typedef struct {
#define EHCI_QTD_GET_BYTES(x) (((x) >> 16) & 0x7fff)
#define EHCI_QTD_SET_BYTES(x) ((x) << 16)
#define EHCI_QTD_GET_TOGGLE(x) (((x) >> 31) & 0x1)
-#define EHCI_QTD_TOGGLE 0x80000000
+#define EHCI_QTD_SET_TOGGLE(x) ((x) << 31)
+#define EHCI_QTD_TOGGLE_MASK 0x80000000
ehci_physaddr_t qtd_buffer[EHCI_QTD_NBUFFERS];
ehci_physaddr_t qtd_buffer_hi[EHCI_QTD_NBUFFERS];
} ehci_qtd_t;
@@ -261,7 +262,7 @@ typedef struct {
#define EHCI_QH_HRECL 0x00008000
#define EHCI_QH_GET_MPL(x) (((x) >> 16) & 0x7ff) /* max packet len */
#define EHCI_QH_SET_MPL(x) ((x) << 16)
-#define EHCI_QG_MPLMASK 0x07ff0000
+#define EHCI_QH_MPLMASK 0x07ff0000
#define EHCI_QH_GET_CTL(x) (((x) >> 27) & 0x01) /* control endpoint */
#define EHCI_QH_CTL 0x08000000
#define EHCI_QH_GET_NRL(x) (((x) >> 28) & 0x0f) /* NAK reload */
OpenPOWER on IntegriCloud