From owner-p4-projects@FreeBSD.ORG Sun Aug 1 09:57:55 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 97F251065679; Sun, 1 Aug 2010 09:57:55 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C3F91065678 for ; Sun, 1 Aug 2010 09:57:55 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 49F438FC0C for ; Sun, 1 Aug 2010 09:57:55 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.4/8.14.4) with ESMTP id o719vtfj062043 for ; Sun, 1 Aug 2010 09:57:55 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.4/8.14.4/Submit) id o719vtbX062041 for perforce@freebsd.org; Sun, 1 Aug 2010 09:57:55 GMT (envelope-from hselasky@FreeBSD.org) Date: Sun, 1 Aug 2010 09:57:55 GMT Message-Id: <201008010957.o719vtbX062041@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 181671 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Aug 2010 09:57:55 -0000 http://p4web.freebsd.org/@@181671?ac=10 Change 181671 by hselasky@hselasky_laptop001 on 2010/08/01 09:57:09 USB controller (XHCI): - add missing doorbell register write and link TRB update Affected files ... .. //depot/projects/usb/src/sys/dev/usb/controller/xhci.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/controller/xhcireg.h#9 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/controller/xhci.c#6 (text+ko) ==== @@ -673,12 +673,30 @@ usb_pc_cpu_flush(&sc->sc_hw.root_pc); + XWRITE4(sc, door, XHCI_DOORBELL(0), 0); + DPRINTFN(10, "command[%u] = %u\n", i, XHCI_TRB_3_TYPE_GET(le32toh(temp))); i++; if (i == (XHCI_MAX_COMMANDS - 1)) { + + /* update cycle bit of LINK TRB */ + + temp = phwr->hwr_events[i].dwTrb3; + + if (j) + temp |= htole32(XHCI_TRB_3_CYCLE_BIT); + else + temp &= ~htole32(XHCI_TRB_3_CYCLE_BIT); + + phwr->hwr_events[i].dwTrb3 = temp; + + usb_pc_cpu_flush(&sc->sc_hw.root_pc); + + XWRITE4(sc, door, XHCI_DOORBELL(0), 0); + i = 0; j ^= 1; } ==== //depot/projects/usb/src/sys/dev/usb/controller/xhcireg.h#9 (text+ko) ==== @@ -176,7 +176,7 @@ #define XHCI_ERSTDP_HI(n) (0x003C + (0x20 * (n))) /* XHCI event ring dequeue pointer */ /* XHCI doorbell registers. Offset given by XHCI_CAPLENGTH + XHCI_DBOFF registers */ -#define XHCI_DOORBELL 0x0000 +#define XHCI_DOORBELL(n) (0x0000 + (4 * (n))) #define XHCI_DB_TARGET_GET(x) ((x) & 0xFF) /* RW - doorbell target */ #define XHCI_DB_TARGET_SET(x) ((x) & 0xFF) /* RW - doorbell target */ #define XHCI_DB_SID_GET(x) (((x) >> 16) & 0xFFFF) /* RW - doorbell stream ID */