Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/usb Data toggle accounting for endpoints on OHCI.



details:   https://anonhg.NetBSD.org/src/rev/b1342231faa7
branches:  trunk
changeset: 765463:b1342231faa7
user:      jakllsch <jakllsch%NetBSD.org@localhost>
date:      Fri May 27 20:37:13 2011 +0000

description:
Data toggle accounting for endpoints on OHCI.

diffstat:

 sys/dev/usb/ohci.c |  10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diffs (38 lines):

diff -r 00e7751d9f4c -r b1342231faa7 sys/dev/usb/ohci.c
--- a/sys/dev/usb/ohci.c        Fri May 27 19:04:24 2011 +0000
+++ b/sys/dev/usb/ohci.c        Fri May 27 20:37:13 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ohci.c,v 1.213 2011/05/27 19:04:24 tsutsui Exp $       */
+/*     $NetBSD: ohci.c,v 1.214 2011/05/27 20:37:13 jakllsch Exp $      */
 /*     $FreeBSD: src/sys/dev/usb/ohci.c,v 1.22 1999/11/17 22:33:40 n_hibma Exp $       */
 
 /*
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ohci.c,v 1.213 2011/05/27 19:04:24 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ohci.c,v 1.214 2011/05/27 20:37:13 jakllsch Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -2122,7 +2122,9 @@
                        (dev->speed == USB_SPEED_LOW ? OHCI_ED_SPEED : 0) |
                        fmt |
                        OHCI_ED_SET_MAXP(UGETW(ed->wMaxPacketSize)));
-               sed->ed.ed_headp = sed->ed.ed_tailp = HTOO32(tdphys);
+               sed->ed.ed_headp = HTOO32(tdphys |
+                   (pipe->endpoint->datatoggle ? OHCI_TOGGLECARRY : 0));
+               sed->ed.ed_tailp = HTOO32(tdphys);
                usb_syncmem(&sed->dma, sed->offs, sizeof(sed->ed),
                    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 
@@ -2209,6 +2211,8 @@
        ohci_rem_ed(sed, head);
        /* Make sure the host controller is not touching this ED */
        usb_delay_ms(&sc->sc_bus, 1);
+       pipe->endpoint->datatoggle =
+           (O32TOH(sed->ed.ed_headp) & OHCI_TOGGLECARRY) ? 1 : 0;
        splx(s);
        ohci_free_sed(sc, opipe->sed);
 }



Home | Main Index | Thread Index | Old Index