Author: hselasky
Date: Thu Nov  8 16:17:52 2012
New Revision: 242776
URL: http://svnweb.freebsd.org/changeset/base/242776

Log:
  MFC r242523:
  Allow using the embedded EHCI host controller in Freescale SoCs
  by adding the missing bits. See ehci_fsl.c for their use.

Modified:
  stable/9/sys/dev/usb/controller/ehci.c
  stable/9/sys/dev/usb/controller/ehci.h
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/usb/controller/ehci.c
==============================================================================
--- stable/9/sys/dev/usb/controller/ehci.c      Thu Nov  8 16:13:51 2012        
(r242775)
+++ stable/9/sys/dev/usb/controller/ehci.c      Thu Nov  8 16:17:52 2012        
(r242776)
@@ -332,14 +332,18 @@ ehci_init(ehci_softc_t *sc)
        sc->sc_noport = EHCI_HCS_N_PORTS(sparams);
        sc->sc_bus.usbrev = USB_REV_2_0;
 
-       /* Reset the controller */
-       DPRINTF("%s: resetting\n", device_get_nameunit(sc->sc_bus.bdev));
-
-       err = ehci_hcreset(sc);
-       if (err) {
-               device_printf(sc->sc_bus.bdev, "reset timeout\n");
-               return (err);
+       if (!(sc->sc_flags & EHCI_SCFLG_DONTRESET)) {
+               /* Reset the controller */
+               DPRINTF("%s: resetting\n",
+                   device_get_nameunit(sc->sc_bus.bdev));
+
+               err = ehci_hcreset(sc);
+               if (err) {
+                       device_printf(sc->sc_bus.bdev, "reset timeout\n");
+                       return (err);
+               }
        }
+
        /*
         * use current frame-list-size selection 0: 1024*4 bytes 1:  512*4
         * bytes 2:  256*4 bytes 3:      unknown

Modified: stable/9/sys/dev/usb/controller/ehci.h
==============================================================================
--- stable/9/sys/dev/usb/controller/ehci.h      Thu Nov  8 16:13:51 2012        
(r242775)
+++ stable/9/sys/dev/usb/controller/ehci.h      Thu Nov  8 16:17:52 2012        
(r242776)
@@ -345,6 +345,8 @@ typedef struct ehci_softc {
 #define        EHCI_SCFLG_TT           0x0020  /* transaction translator 
present */
 #define        EHCI_SCFLG_LOSTINTRBUG  0x0040  /* workaround for VIA / ATI 
chipsets */
 #define        EHCI_SCFLG_IAADBUG      0x0080  /* workaround for nVidia 
chipsets */
+#define        EHCI_SCFLG_DONTRESET    0x0100  /* don't reset ctrl. in 
ehci_init() */
+#define        EHCI_SCFLG_DONEINIT     0x1000  /* ehci_init() has been called. 
*/
 
        uint8_t sc_offs;                /* offset to operational registers */
        uint8_t sc_doorbell_disable;    /* set on doorbell failure */
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to