Index: sys/external/bsd/dwc2/dist/dwc2_core.c =================================================================== RCS file: /cvsroot/src/sys/external/bsd/dwc2/dist/dwc2_core.c,v retrieving revision 1.9 diff -u -p -r1.9 dwc2_core.c --- sys/external/bsd/dwc2/dist/dwc2_core.c 1 Sep 2015 06:24:21 -0000 1.9 +++ sys/external/bsd/dwc2/dist/dwc2_core.c 1 Sep 2015 12:45:08 -0000 @@ -686,12 +686,22 @@ static int dwc2_phy_init(struct dwc2_hso static int dwc2_gahbcfg_init(struct dwc2_hsotg *hsotg) { + struct dwc2_softc *sc = hsotg->hsotg_sc; u32 ahbcfg = DWC2_READ_4(hsotg, GAHBCFG); switch (hsotg->hw_params.arch) { case GHWCFG2_EXT_DMA_ARCH: - dev_err(hsotg->dev, "External DMA Mode not supported\n"); - return -EINVAL; + dev_dbg(hsotg->dev, "External DMA Mode\n"); + if (!sc->sc_set_dma_addr) { + dev_err(hsotg->dev, "External DMA Mode not supported\n"); + return -EINVAL; + } + if (hsotg->core_params->ahbcfg != -1) { + ahbcfg &= GAHBCFG_CTRL_MASK; + ahbcfg |= hsotg->core_params->ahbcfg & + ~GAHBCFG_CTRL_MASK; + } + break; case GHWCFG2_INT_DMA_ARCH: dev_dbg(hsotg->dev, "Internal DMA Mode\n");