Date: Sun, 5 Apr 2009 18:18:07 +0000 (UTC) From: Andrew Thompson <thompsa@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r190720 - head/sys/dev/usb/controller Message-ID: <200904051818.n35II77S027302@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: thompsa Date: Sun Apr 5 18:18:07 2009 New Revision: 190720 URL: http://svn.freebsd.org/changeset/base/190720 Log: MFp4 //depot/projects/usb@159671 Fix interrupt register setting on the atmegadci controller. Submitted by: Hans Petter Selasky Modified: head/sys/dev/usb/controller/atmegadci.c Modified: head/sys/dev/usb/controller/atmegadci.c ============================================================================== --- head/sys/dev/usb/controller/atmegadci.c Sun Apr 5 18:18:01 2009 (r190719) +++ head/sys/dev/usb/controller/atmegadci.c Sun Apr 5 18:18:07 2009 (r190720) @@ -649,7 +649,7 @@ atmegadci_interrupt(struct atmegadci_sof status = ATMEGA_READ_1(sc, ATMEGA_UDINT); /* clear all set interrupts */ - ATMEGA_WRITE_1(sc, ATMEGA_UDINT, ~status); + ATMEGA_WRITE_1(sc, ATMEGA_UDINT, (~status) & 0x7D); DPRINTFN(14, "UDINT=0x%02x\n", status); @@ -719,7 +719,7 @@ atmegadci_interrupt(struct atmegadci_sof status = ATMEGA_READ_1(sc, ATMEGA_USBINT); /* clear all set interrupts */ - ATMEGA_WRITE_1(sc, ATMEGA_USBINT, ~status); + ATMEGA_WRITE_1(sc, ATMEGA_USBINT, (~status) & 0x03); if (status & ATMEGA_USBINT_VBUSTI) { uint8_t temp; @@ -731,10 +731,7 @@ atmegadci_interrupt(struct atmegadci_sof } /* check for any endpoint interrupts */ status = ATMEGA_READ_1(sc, ATMEGA_UEINT); - - /* clear all set interrupts */ - ATMEGA_WRITE_1(sc, ATMEGA_UEINT, ~status); - + /* the hardware will clear the UEINT bits automatically */ if (status) { DPRINTFN(5, "real endpoint interrupt UEINT=0x%02x\n", status); @@ -1249,6 +1246,12 @@ atmegadci_init(struct atmegadci_softc *s ATMEGA_WRITE_1(sc, ATMEGA_UHWCON, ATMEGA_UHWCON_UVREGE | ATMEGA_UHWCON_UIMOD); #endif + /* make sure USB is enabled */ + ATMEGA_WRITE_1(sc, ATMEGA_USBCON, + ATMEGA_USBCON_USBE | + ATMEGA_USBCON_OTGPADE | + ATMEGA_USBCON_VBUSTE); + /* turn on clocks */ (sc->sc_clocks_on) (&sc->sc_bus);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200904051818.n35II77S027302>