summaryrefslogtreecommitdiff
path: root/sys/dev/usb
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2004-07-10 13:08:42 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2004-07-10 13:08:42 +0000
commitdf85339a5d0f61f8da868668f60c6c049875f9fa (patch)
tree0355082a6aff5f0f56f74a83821a18e7f981c325 /sys/dev/usb
parent2e1ef3ea40e684ddfe1531f0cc8f9fd05f2cb1ca (diff)
from loki@animata.net:
this is netbsds fix for the endian problems they had with the data toggle change. do the swap when the var is assigned to the qtd, rather than swap everything that is assigned to the var and just assign the var. instead of 4 or so htole32s we now do 1. from netbsd, ehci.c 1.67 (i made a mistake, the last patch i gave you was from 1.68) log message: Fix a byte order error.
Diffstat (limited to 'sys/dev/usb')
-rw-r--r--sys/dev/usb/ehci.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/sys/dev/usb/ehci.c b/sys/dev/usb/ehci.c
index e0a47910ce4..c3640ee0293 100644
--- a/sys/dev/usb/ehci.c
+++ b/sys/dev/usb/ehci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ehci.c,v 1.17 2004/07/10 12:25:49 deraadt Exp $ */
+/* $OpenBSD: ehci.c,v 1.18 2004/07/10 13:08:41 deraadt Exp $ */
/* $NetBSD: ehci.c,v 1.66 2004/06/30 03:11:56 mycroft Exp $ */
/*
@@ -2126,16 +2126,12 @@ ehci_alloc_sqtd_chain(struct ehci_pipe *epipe, ehci_softc_t *sc,
len = alen;
dataphys = DMAADDR(dma, 0);
dataphyslastpage = EHCI_PAGE(dataphys + len - 1);
- qtdstatus = htole32(
- EHCI_QTD_ACTIVE |
+ qtdstatus = EHCI_QTD_ACTIVE |
EHCI_QTD_SET_PID(rd ? EHCI_QTD_PID_IN : EHCI_QTD_PID_OUT) |
- EHCI_QTD_SET_CERR(3)
- /* IOC set below */
- /* BYTES set below */
- );
+ EHCI_QTD_SET_CERR(3); /* IOC set below and BYTES set below */
mps = UGETW(epipe->pipe.endpoint->edesc->wMaxPacketSize);
tog = epipe->nexttoggle;
- qtdstatus |= htole32(EHCI_QTD_SET_TOGGLE(tog));
+ qtdstatus |= EHCI_QTD_SET_TOGGLE(tog);
cur = ehci_alloc_sqtd(sc);
*sp = cur;
@@ -2203,8 +2199,8 @@ ehci_alloc_sqtd_chain(struct ehci_pipe *epipe, ehci_softc_t *sc,
}
cur->nextqtd = next;
cur->qtd.qtd_next = cur->qtd.qtd_altnext = nextphys;
- cur->qtd.qtd_status =
- qtdstatus | htole32(EHCI_QTD_SET_BYTES(curlen));
+ cur->qtd.qtd_status = htole32(qtdstatus |
+ EHCI_QTD_SET_BYTES(curlen));
cur->xfer = xfer;
cur->len = curlen;
DPRINTFN(10,("ehci_alloc_sqtd_chain: cbp=0x%08x end=0x%08x\n",
@@ -2213,7 +2209,7 @@ ehci_alloc_sqtd_chain(struct ehci_pipe *epipe, ehci_softc_t *sc,
qtd */
if (((curlen + mps - 1) / mps) & 1) {
tog ^= 1;
- qtdstatus ^= htole32(EHCI_QTD_TOGGLE_MASK);
+ qtdstatus ^= EHCI_QTD_TOGGLE_MASK;
}
if (len == 0)
break;