UPSTREAM: usb: dwc2: host: fix descriptor list address masking
authorMian Yousaf Kaukab <yousaf.kaukab@intel.com>
Fri, 20 Nov 2015 10:49:30 +0000 (11:49 +0100)
committerHuang, Tao <huangtao@rock-chips.com>
Tue, 3 Jan 2017 09:50:38 +0000 (17:50 +0800)
Masks for HCDMA.CTD and HCDMA.DMAAddr are incorrect. As we always
start from first descriptor, no need to mask the address anyway.

Change-Id: Iaeb063357dc4ffa905a9e1081793648ce1153d59
Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@intel.com>
Signed-off-by: Gregory Herrero <gregory.herrero@intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit e23b8a54a440a2b8ee5c9dc3eb2099ecf813ef70)

drivers/usb/dwc2/core.c
drivers/usb/dwc2/hw.h

index 2e6c59356c6432bf377cda39d31a3445f832db43..40ac99fe6ac90518d00b1196e2c3117fe507eb68 100644 (file)
@@ -1919,7 +1919,6 @@ void dwc2_hc_start_transfer_ddma(struct dwc2_hsotg *hsotg,
                                 struct dwc2_host_chan *chan)
 {
        u32 hcchar;
-       u32 hc_dma;
        u32 hctsiz = 0;
 
        if (chan->do_ping)
@@ -1951,14 +1950,11 @@ void dwc2_hc_start_transfer_ddma(struct dwc2_hsotg *hsotg,
        dma_sync_single_for_device(hsotg->dev, chan->desc_list_addr,
                                   chan->desc_list_sz, DMA_TO_DEVICE);
 
-       hc_dma = (u32)chan->desc_list_addr & HCDMA_DMA_ADDR_MASK;
+       dwc2_writel(chan->desc_list_addr, hsotg->regs + HCDMA(chan->hc_num));
 
-       /* Always start from first descriptor */
-       hc_dma &= ~HCDMA_CTD_MASK;
-       dwc2_writel(hc_dma, hsotg->regs + HCDMA(chan->hc_num));
        if (dbg_hc(chan))
-               dev_vdbg(hsotg->dev, "Wrote %08x to HCDMA(%d)\n",
-                        hc_dma, chan->hc_num);
+               dev_vdbg(hsotg->dev, "Wrote %pad to HCDMA(%d)\n",
+                        &chan->desc_list_addr, chan->hc_num);
 
        hcchar = dwc2_readl(hsotg->regs + HCCHAR(chan->hc_num));
        hcchar &= ~HCCHAR_MULTICNT_MASK;
index 553f24606c43c9ef77306bc97d1250535e878679..281b57b36ab4444fd81bd6e4ae0e0fad3e4c29c2 100644 (file)
 #define TSIZ_XFERSIZE_SHIFT            0
 
 #define HCDMA(_ch)                     HSOTG_REG(0x0514 + 0x20 * (_ch))
-#define HCDMA_DMA_ADDR_MASK            (0x1fffff << 11)
-#define HCDMA_DMA_ADDR_SHIFT           11
-#define HCDMA_CTD_MASK                 (0xff << 3)
-#define HCDMA_CTD_SHIFT                        3
 
 #define HCDMAB(_ch)                    HSOTG_REG(0x051c + 0x20 * (_ch))