The following reply was made to PR usb/188683; it has been noted by GNATS.

From: dfil...@freebsd.org (dfilter service)
To: bug-follo...@freebsd.org
Cc:  
Subject: Re: usb/188683: commit references a PR
Date: Fri, 18 Apr 2014 08:32:00 +0000 (UTC)

 Author: hselasky
 Date: Fri Apr 18 08:31:55 2014
 New Revision: 264642
 URL: http://svnweb.freebsd.org/changeset/base/264642
 
 Log:
   Add support for specifying USB controller mode via FDT.
   Add FDT support to the DWC OTG kernel module.
   
   Submitted by:        John Wehle <j...@feith.com>
   PR:          usb/188683
   MFC after:   1 week
 
 Modified:
   head/sys/dev/usb/controller/dwc_otg.c
   head/sys/dev/usb/controller/dwc_otg_fdt.c
   head/sys/modules/usb/dwc_otg/Makefile
 
 Modified: head/sys/dev/usb/controller/dwc_otg.c
 ==============================================================================
 --- head/sys/dev/usb/controller/dwc_otg.c      Fri Apr 18 07:50:25 2014        
(r264641)
 +++ head/sys/dev/usb/controller/dwc_otg.c      Fri Apr 18 08:31:55 2014        
(r264642)
 @@ -2149,7 +2149,12 @@ dwc_otg_vbus_interrupt(struct dwc_otg_so
  {
        DPRINTFN(5, "vbus = %u\n", is_on);
  
 -      if (is_on) {
 +      /*
 +       * If the USB host mode is forced, then assume VBUS is always
 +       * present else rely on the input to this function:
 +       */
 +      if ((is_on != 0) || (sc->sc_mode == DWC_MODE_HOST)) {
 +
                if (!sc->sc_flags.status_vbus) {
                        sc->sc_flags.status_vbus = 1;
  
 @@ -3182,7 +3187,7 @@ dwc_otg_init(struct dwc_otg_softc *sc)
            sc->sc_host_ch_max);
  
        /* setup FIFO */
 -      if (dwc_otg_init_fifo(sc, DWC_MODE_OTG))
 +      if (dwc_otg_init_fifo(sc, sc->sc_mode))
                return (EINVAL);
  
        /* enable interrupts */
 
 Modified: head/sys/dev/usb/controller/dwc_otg_fdt.c
 ==============================================================================
 --- head/sys/dev/usb/controller/dwc_otg_fdt.c  Fri Apr 18 07:50:25 2014        
(r264641)
 +++ head/sys/dev/usb/controller/dwc_otg_fdt.c  Fri Apr 18 08:31:55 2014        
(r264642)
 @@ -91,6 +91,7 @@ static int
  dwc_otg_attach(device_t dev)
  {
        struct dwc_otg_super_softc *sc = device_get_softc(dev);
 +      char usb_mode[24];
        int err;
        int rid;
  
 @@ -99,6 +100,23 @@ dwc_otg_attach(device_t dev)
        sc->sc_otg.sc_bus.devices = sc->sc_otg.sc_devices;
        sc->sc_otg.sc_bus.devices_max = DWC_OTG_MAX_DEVICES;
  
 +      /* get USB mode, if any */
 +      if (OF_getprop(ofw_bus_get_node(dev), "dr_mode",
 +          &usb_mode, sizeof(usb_mode)) > 0) {
 +
 +              /* ensure proper zero termination */
 +              usb_mode[sizeof(usb_mode) - 1] = 0;
 +
 +              if (strcasecmp(usb_mode, "host") == 0)
 +                      sc->sc_otg.sc_mode = DWC_MODE_HOST;
 +              else if (strcasecmp(usb_mode, "peripheral") == 0)
 +                      sc->sc_otg.sc_mode = DWC_MODE_DEVICE;
 +              else if (strcasecmp(usb_mode, "otg") != 0) {
 +                      device_printf(dev, "Invalid FDT dr_mode: %s\n",
 +                          usb_mode);
 +              }
 +      }
 +
        /* get all DMA memory */
        if (usb_bus_mem_alloc_all(&sc->sc_otg.sc_bus,
            USB_GET_DMA_TAG(dev), NULL)) {
 
 Modified: head/sys/modules/usb/dwc_otg/Makefile
 ==============================================================================
 --- head/sys/modules/usb/dwc_otg/Makefile      Fri Apr 18 07:50:25 2014        
(r264641)
 +++ head/sys/modules/usb/dwc_otg/Makefile      Fri Apr 18 08:31:55 2014        
(r264642)
 @@ -31,8 +31,8 @@ S=   ${.CURDIR}/../../..
  
  KMOD= dwc_otg
  SRCS= bus_if.h device_if.h usb_if.h \
 -      opt_bus.h opt_usb.h \
 -      dwc_otg.c \
 +      opt_bus.h opt_usb.h ofw_bus_if.h \
 +      dwc_otg.c dwc_otg_fdt.c \
        pci_if.h
  
  .if defined(HAS_ATMELARM)
 _______________________________________________
 svn-src-...@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"
 
_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to