On 2/20/2015 7:26 PM, zhangfei wrote: > Hi, John > > On 02/21/2015 08:35 AM, John Youn wrote: >> On 2/15/2015 5:50 AM, Zhangfei Gao wrote: >>> Reuse ahbcfg if assigned from platform >>> >>> Input from John: >>> AHB_SINGLE, NOTI_ALL_DMA_WRIT, REM_MEM_SUPP, HBSTLEN, >>> and INV_DESC_ENDIANNESS only apply in DMA mode and are >>> ignored in slave mode operation. >>> >>> Signed-off-by: Zhangfei Gao <zhangfei....@linaro.org> >>> --- >>> drivers/usb/dwc2/gadget.c | 11 ++++++++--- >>> 1 file changed, 8 insertions(+), 3 deletions(-) >>> >>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c >>> index 15aa578..5726fbe 100644 >>> --- a/drivers/usb/dwc2/gadget.c >>> +++ b/drivers/usb/dwc2/gadget.c >>> @@ -2314,14 +2314,19 @@ void s3c_hsotg_core_init_disconnected(struct >>> dwc2_hsotg *hsotg, >>> GINTSTS_USBSUSP | GINTSTS_WKUPINT, >>> hsotg->regs + GINTMSK); >>> >>> + if (hsotg->core_params && hsotg->core_params->ahbcfg != -1) >>> + val = hsotg->core_params->ahbcfg & ~GAHBCFG_CTRL_MASK; >>> + else >>> + val = 0; >>> + >>> if (using_dma(hsotg)) >>> writel(GAHBCFG_GLBL_INTR_EN | GAHBCFG_DMA_EN | >>> - (GAHBCFG_HBSTLEN_INCR4 << GAHBCFG_HBSTLEN_SHIFT), >>> - hsotg->regs + GAHBCFG); >>> + (val ? val : GAHBCFG_HBSTLEN_INCR4 << >>> + GAHBCFG_HBSTLEN_SHIFT), hsotg->regs + GAHBCFG); >>> else >>> writel(((hsotg->dedicated_fifos) ? (GAHBCFG_NP_TXF_EMP_LVL | >>> GAHBCFG_P_TXF_EMP_LVL) : 0) >>> | >>> - GAHBCFG_GLBL_INTR_EN, >>> + GAHBCFG_GLBL_INTR_EN | val, >>> hsotg->regs + GAHBCFG); >>> >>> /* >>> >> >> Hi Zhangfei, >> >> It looks like currently that the hsotg->core_params structure is not >> designed to be accessed by the gadget part (or this structure was overlooked >> during the integration of these drivers). It is only initialized in the host >> mode and this should crash if host mode is not configured. >> > If dwc2_hcd_init only called in host mode, hsotg->core_params = NULL. > So add judgement if (hsotg->core_params) here to prevent crash.
Yes you're right. However core_params is documented as both a device and host accessible member but it is only ever initialized and used in host mode. I think it should be fixed to always have valid and initialized values in device mode as well. John -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html