PERFORCE change 159671 for review

Hans Petter Selasky hselasky at FreeBSD.org
Mon Mar 23 05:57:49 PDT 2009


http://perforce.freebsd.org/chv.cgi?CH=159671

Change 159671 by hselasky at hselasky_laptop001 on 2009/03/23 12:57:01

	
	USB controller (ATMEGADCI):
	- fix some chip programming

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/controller/atmegadci.c#12 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/controller/atmegadci.c#12 (text+ko) ====

@@ -649,7 +649,7 @@
 	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 @@
 	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 @@
 	}
 	/* 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 @@
 	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);
 


More information about the p4-projects mailing list