Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Feb 2015 15:34:11 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r278850 - head/sys/dev/usb/controller
Message-ID:  <201502161534.t1GFYBnD087991@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Mon Feb 16 15:34:10 2015
New Revision: 278850
URL: https://svnweb.freebsd.org/changeset/base/278850

Log:
  Handle VBUS error interrupts.
  
  Submitted by:	SAITOU Toshihide <toshi@ruby.ocn.ne.jp>
  PR:		190471
  MFC after:	1 week

Modified:
  head/sys/dev/usb/controller/musb_otg.c

Modified: head/sys/dev/usb/controller/musb_otg.c
==============================================================================
--- head/sys/dev/usb/controller/musb_otg.c	Mon Feb 16 13:02:00 2015	(r278849)
+++ head/sys/dev/usb/controller/musb_otg.c	Mon Feb 16 15:34:10 2015	(r278850)
@@ -2258,7 +2258,8 @@ repeat:
 
 	if (usb_status & (MUSB2_MASK_IRESET |
 	    MUSB2_MASK_IRESUME | MUSB2_MASK_ISUSP | 
-	    MUSB2_MASK_ICONN | MUSB2_MASK_IDISC)) {
+	    MUSB2_MASK_ICONN | MUSB2_MASK_IDISC |
+	    MUSB2_MASK_IVBUSERR)) {
 
 		DPRINTFN(4, "real bus interrupt 0x%08x\n", usb_status);
 
@@ -2330,6 +2331,12 @@ repeat:
 		 * always in reset state once device is connected.
 		 */
 		if (sc->sc_mode == MUSB2_HOST_MODE) {
+		    /* check for VBUS error in USB host mode */
+		    if (usb_status & MUSB2_MASK_IVBUSERR) {
+			temp = MUSB2_READ_1(sc, MUSB2_REG_DEVCTL);
+			temp |= MUSB2_MASK_SESS;
+			MUSB2_WRITE_1(sc, MUSB2_REG_DEVCTL, temp);
+		    }
 		    if (usb_status & MUSB2_MASK_ICONN)
 			sc->sc_flags.status_bus_reset = 1;
 		    if (usb_status & MUSB2_MASK_IDISC)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502161534.t1GFYBnD087991>