diff options
Diffstat (limited to 'target/linux/lantiq/patches-3.18')
-rw-r--r-- | target/linux/lantiq/patches-3.18/0042-USB-DWC2-big-endian-support.patch | 3184 |
1 files changed, 3184 insertions, 0 deletions
diff --git a/target/linux/lantiq/patches-3.18/0042-USB-DWC2-big-endian-support.patch b/target/linux/lantiq/patches-3.18/0042-USB-DWC2-big-endian-support.patch new file mode 100644 index 0000000000..38f75c8342 --- /dev/null +++ b/target/linux/lantiq/patches-3.18/0042-USB-DWC2-big-endian-support.patch @@ -0,0 +1,3184 @@ +--- a/drivers/usb/dwc2/core.c 2015-02-06 16:53:48.000000000 +0200 ++++ b/drivers/usb/dwc2/core.c 2015-02-09 19:34:42.863106075 +0200 +@@ -67,10 +67,10 @@ + u32 intmsk; + + /* Clear any pending OTG Interrupts */ +- writel(0xffffffff, hsotg->regs + GOTGINT); ++ dwc2_writel(0xffffffff, hsotg->regs + GOTGINT); + + /* Clear any pending interrupts */ +- writel(0xffffffff, hsotg->regs + GINTSTS); ++ dwc2_writel(0xffffffff, hsotg->regs + GINTSTS); + + /* Enable the interrupts in the GINTMSK */ + intmsk = GINTSTS_MODEMIS | GINTSTS_OTGINT; +@@ -81,7 +81,7 @@ + intmsk |= GINTSTS_CONIDSTSCHNG | GINTSTS_WKUPINT | GINTSTS_USBSUSP | + GINTSTS_SESSREQINT; + +- writel(intmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(intmsk, hsotg->regs + GINTMSK); + } + + /* +@@ -104,10 +104,10 @@ + } + + dev_dbg(hsotg->dev, "Initializing HCFG.FSLSPClkSel to %08x\n", val); +- hcfg = readl(hsotg->regs + HCFG); ++ hcfg = dwc2_readl(hsotg->regs + HCFG); + hcfg &= ~HCFG_FSLSPCLKSEL_MASK; + hcfg |= val << HCFG_FSLSPCLKSEL_SHIFT; +- writel(hcfg, hsotg->regs + HCFG); ++ dwc2_writel(hcfg, hsotg->regs + HCFG); + } + + /* +@@ -125,7 +125,7 @@ + /* Wait for AHB master IDLE state */ + do { + usleep_range(20000, 40000); +- greset = readl(hsotg->regs + GRSTCTL); ++ greset = dwc2_readl(hsotg->regs + GRSTCTL); + if (++count > 50) { + dev_warn(hsotg->dev, + "%s() HANG! AHB Idle GRSTCTL=%0x\n", +@@ -137,10 +137,10 @@ + /* Core Soft Reset */ + count = 0; + greset |= GRSTCTL_CSFTRST; +- writel(greset, hsotg->regs + GRSTCTL); ++ dwc2_writel(greset, hsotg->regs + GRSTCTL); + do { + usleep_range(20000, 40000); +- greset = readl(hsotg->regs + GRSTCTL); ++ greset = dwc2_readl(hsotg->regs + GRSTCTL); + if (++count > 50) { + dev_warn(hsotg->dev, + "%s() HANG! Soft Reset GRSTCTL=%0x\n", +@@ -150,20 +150,20 @@ + } while (greset & GRSTCTL_CSFTRST); + + if (hsotg->dr_mode == USB_DR_MODE_HOST) { +- gusbcfg = readl(hsotg->regs + GUSBCFG); ++ gusbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + gusbcfg &= ~GUSBCFG_FORCEDEVMODE; + gusbcfg |= GUSBCFG_FORCEHOSTMODE; +- writel(gusbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(gusbcfg, hsotg->regs + GUSBCFG); + } else if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) { +- gusbcfg = readl(hsotg->regs + GUSBCFG); ++ gusbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + gusbcfg &= ~GUSBCFG_FORCEHOSTMODE; + gusbcfg |= GUSBCFG_FORCEDEVMODE; +- writel(gusbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(gusbcfg, hsotg->regs + GUSBCFG); + } else if (hsotg->dr_mode == USB_DR_MODE_OTG) { +- gusbcfg = readl(hsotg->regs + GUSBCFG); ++ gusbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + gusbcfg &= ~GUSBCFG_FORCEHOSTMODE; + gusbcfg &= ~GUSBCFG_FORCEDEVMODE; +- writel(gusbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(gusbcfg, hsotg->regs + GUSBCFG); + } + + /* +@@ -186,9 +186,9 @@ + */ + if (select_phy) { + dev_dbg(hsotg->dev, "FS PHY selected\n"); +- usbcfg = readl(hsotg->regs + GUSBCFG); ++ usbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + usbcfg |= GUSBCFG_PHYSEL; +- writel(usbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(usbcfg, hsotg->regs + GUSBCFG); + + /* Reset after a PHY select */ + retval = dwc2_core_reset(hsotg); +@@ -211,18 +211,18 @@ + dev_dbg(hsotg->dev, "FS PHY enabling I2C\n"); + + /* Program GUSBCFG.OtgUtmiFsSel to I2C */ +- usbcfg = readl(hsotg->regs + GUSBCFG); ++ usbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + usbcfg |= GUSBCFG_OTG_UTMI_FS_SEL; +- writel(usbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(usbcfg, hsotg->regs + GUSBCFG); + + /* Program GI2CCTL.I2CEn */ +- i2cctl = readl(hsotg->regs + GI2CCTL); ++ i2cctl = dwc2_readl(hsotg->regs + GI2CCTL); + i2cctl &= ~GI2CCTL_I2CDEVADDR_MASK; + i2cctl |= 1 << GI2CCTL_I2CDEVADDR_SHIFT; + i2cctl &= ~GI2CCTL_I2CEN; +- writel(i2cctl, hsotg->regs + GI2CCTL); ++ dwc2_writel(i2cctl, hsotg->regs + GI2CCTL); + i2cctl |= GI2CCTL_I2CEN; +- writel(i2cctl, hsotg->regs + GI2CCTL); ++ dwc2_writel(i2cctl, hsotg->regs + GI2CCTL); + } + + return retval; +@@ -236,7 +236,7 @@ + if (!select_phy) + return 0; + +- usbcfg = readl(hsotg->regs + GUSBCFG); ++ usbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + + /* + * HS PHY parameters. These parameters are preserved during soft reset +@@ -264,7 +264,7 @@ + break; + } + +- writel(usbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(usbcfg, hsotg->regs + GUSBCFG); + + /* Reset after setting the PHY parameters */ + retval = dwc2_core_reset(hsotg); +@@ -299,15 +299,15 @@ + hsotg->hw_params.fs_phy_type == GHWCFG2_FS_PHY_TYPE_DEDICATED && + hsotg->core_params->ulpi_fs_ls > 0) { + dev_dbg(hsotg->dev, "Setting ULPI FSLS\n"); +- usbcfg = readl(hsotg->regs + GUSBCFG); ++ usbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + usbcfg |= GUSBCFG_ULPI_FS_LS; + usbcfg |= GUSBCFG_ULPI_CLK_SUSP_M; +- writel(usbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(usbcfg, hsotg->regs + GUSBCFG); + } else { +- usbcfg = readl(hsotg->regs + GUSBCFG); ++ usbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + usbcfg &= ~GUSBCFG_ULPI_FS_LS; + usbcfg &= ~GUSBCFG_ULPI_CLK_SUSP_M; +- writel(usbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(usbcfg, hsotg->regs + GUSBCFG); + } + + return retval; +@@ -315,7 +315,7 @@ + + static int dwc2_gahbcfg_init(struct dwc2_hsotg *hsotg) + { +- u32 ahbcfg = readl(hsotg->regs + GAHBCFG); ++ u32 ahbcfg = dwc2_readl(hsotg->regs + GAHBCFG); + + switch (hsotg->hw_params.arch) { + case GHWCFG2_EXT_DMA_ARCH: +@@ -354,7 +354,7 @@ + if (hsotg->core_params->dma_enable > 0) + ahbcfg |= GAHBCFG_DMA_EN; + +- writel(ahbcfg, hsotg->regs + GAHBCFG); ++ dwc2_writel(ahbcfg, hsotg->regs + GAHBCFG); + + return 0; + } +@@ -363,7 +363,7 @@ + { + u32 usbcfg; + +- usbcfg = readl(hsotg->regs + GUSBCFG); ++ usbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + usbcfg &= ~(GUSBCFG_HNPCAP | GUSBCFG_SRPCAP); + + switch (hsotg->hw_params.op_mode) { +@@ -391,7 +391,7 @@ + break; + } + +- writel(usbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(usbcfg, hsotg->regs + GUSBCFG); + } + + /** +@@ -409,7 +409,7 @@ + + dev_dbg(hsotg->dev, "%s(%p)\n", __func__, hsotg); + +- usbcfg = readl(hsotg->regs + GUSBCFG); ++ usbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + + /* Set ULPI External VBUS bit if needed */ + usbcfg &= ~GUSBCFG_ULPI_EXT_VBUS_DRV; +@@ -422,7 +422,7 @@ + if (hsotg->core_params->ts_dline > 0) + usbcfg |= GUSBCFG_TERMSELDLPULSE; + +- writel(usbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(usbcfg, hsotg->regs + GUSBCFG); + + /* Reset the Controller */ + retval = dwc2_core_reset(hsotg); +@@ -448,11 +448,11 @@ + dwc2_gusbcfg_init(hsotg); + + /* Program the GOTGCTL register */ +- otgctl = readl(hsotg->regs + GOTGCTL); ++ otgctl = dwc2_readl(hsotg->regs + GOTGCTL); + otgctl &= ~GOTGCTL_OTGVER; + if (hsotg->core_params->otg_ver > 0) + otgctl |= GOTGCTL_OTGVER; +- writel(otgctl, hsotg->regs + GOTGCTL); ++ dwc2_writel(otgctl, hsotg->regs + GOTGCTL); + dev_dbg(hsotg->dev, "OTG VER PARAM: %d\n", hsotg->core_params->otg_ver); + + /* Clear the SRP success bit for FS-I2c */ +@@ -498,16 +498,16 @@ + dev_dbg(hsotg->dev, "%s()\n", __func__); + + /* Disable all interrupts */ +- writel(0, hsotg->regs + GINTMSK); +- writel(0, hsotg->regs + HAINTMSK); ++ dwc2_writel(0, hsotg->regs + GINTMSK); ++ dwc2_writel(0, hsotg->regs + HAINTMSK); + + /* Enable the common interrupts */ + dwc2_enable_common_interrupts(hsotg); + + /* Enable host mode interrupts without disturbing common interrupts */ +- intmsk = readl(hsotg->regs + GINTMSK); ++ intmsk = dwc2_readl(hsotg->regs + GINTMSK); + intmsk |= GINTSTS_DISCONNINT | GINTSTS_PRTINT | GINTSTS_HCHINT; +- writel(intmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(intmsk, hsotg->regs + GINTMSK); + } + + /** +@@ -517,12 +517,12 @@ + */ + void dwc2_disable_host_interrupts(struct dwc2_hsotg *hsotg) + { +- u32 intmsk = readl(hsotg->regs + GINTMSK); ++ u32 intmsk = dwc2_readl(hsotg->regs + GINTMSK); + + /* Disable host mode interrupts without disturbing common interrupts */ + intmsk &= ~(GINTSTS_SOF | GINTSTS_PRTINT | GINTSTS_HCHINT | + GINTSTS_PTXFEMP | GINTSTS_NPTXFEMP); +- writel(intmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(intmsk, hsotg->regs + GINTMSK); + } + + /* +@@ -602,36 +602,36 @@ + dwc2_calculate_dynamic_fifo(hsotg); + + /* Rx FIFO */ +- grxfsiz = readl(hsotg->regs + GRXFSIZ); ++ grxfsiz = dwc2_readl(hsotg->regs + GRXFSIZ); + dev_dbg(hsotg->dev, "initial grxfsiz=%08x\n", grxfsiz); + grxfsiz &= ~GRXFSIZ_DEPTH_MASK; + grxfsiz |= params->host_rx_fifo_size << + GRXFSIZ_DEPTH_SHIFT & GRXFSIZ_DEPTH_MASK; +- writel(grxfsiz, hsotg->regs + GRXFSIZ); +- dev_dbg(hsotg->dev, "new grxfsiz=%08x\n", readl(hsotg->regs + GRXFSIZ)); ++ dwc2_writel(grxfsiz, hsotg->regs + GRXFSIZ); ++ dev_dbg(hsotg->dev, "new grxfsiz=%08x\n", dwc2_readl(hsotg->regs + GRXFSIZ)); + + /* Non-periodic Tx FIFO */ + dev_dbg(hsotg->dev, "initial gnptxfsiz=%08x\n", +- readl(hsotg->regs + GNPTXFSIZ)); ++ dwc2_readl(hsotg->regs + GNPTXFSIZ)); + nptxfsiz = params->host_nperio_tx_fifo_size << + FIFOSIZE_DEPTH_SHIFT & FIFOSIZE_DEPTH_MASK; + nptxfsiz |= params->host_rx_fifo_size << + FIFOSIZE_STARTADDR_SHIFT & FIFOSIZE_STARTADDR_MASK; +- writel(nptxfsiz, hsotg->regs + GNPTXFSIZ); ++ dwc2_writel(nptxfsiz, hsotg->regs + GNPTXFSIZ); + dev_dbg(hsotg->dev, "new gnptxfsiz=%08x\n", +- readl(hsotg->regs + GNPTXFSIZ)); ++ dwc2_readl(hsotg->regs + GNPTXFSIZ)); + + /* Periodic Tx FIFO */ + dev_dbg(hsotg->dev, "initial hptxfsiz=%08x\n", +- readl(hsotg->regs + HPTXFSIZ)); ++ dwc2_readl(hsotg->regs + HPTXFSIZ)); + hptxfsiz = params->host_perio_tx_fifo_size << + FIFOSIZE_DEPTH_SHIFT & FIFOSIZE_DEPTH_MASK; + hptxfsiz |= (params->host_rx_fifo_size + + params->host_nperio_tx_fifo_size) << + FIFOSIZE_STARTADDR_SHIFT & FIFOSIZE_STARTADDR_MASK; +- writel(hptxfsiz, hsotg->regs + HPTXFSIZ); ++ dwc2_writel(hptxfsiz, hsotg->regs + HPTXFSIZ); + dev_dbg(hsotg->dev, "new hptxfsiz=%08x\n", +- readl(hsotg->regs + HPTXFSIZ)); ++ dwc2_readl(hsotg->regs + HPTXFSIZ)); + + if (hsotg->core_params->en_multiple_tx_fifo > 0 && + hsotg->hw_params.snpsid <= DWC2_CORE_REV_2_94a) { +@@ -639,14 +639,14 @@ + * Global DFIFOCFG calculation for Host mode - + * include RxFIFO, NPTXFIFO and HPTXFIFO + */ +- dfifocfg = readl(hsotg->regs + GDFIFOCFG); ++ dfifocfg = dwc2_readl(hsotg->regs + GDFIFOCFG); + dfifocfg &= ~GDFIFOCFG_EPINFOBASE_MASK; + dfifocfg |= (params->host_rx_fifo_size + + params->host_nperio_tx_fifo_size + + params->host_perio_tx_fifo_size) << + GDFIFOCFG_EPINFOBASE_SHIFT & + GDFIFOCFG_EPINFOBASE_MASK; +- writel(dfifocfg, hsotg->regs + GDFIFOCFG); ++ dwc2_writel(dfifocfg, hsotg->regs + GDFIFOCFG); + } + } + +@@ -667,14 +667,14 @@ + dev_dbg(hsotg->dev, "%s(%p)\n", __func__, hsotg); + + /* Restart the Phy Clock */ +- writel(0, hsotg->regs + PCGCTL); ++ dwc2_writel(0, hsotg->regs + PCGCTL); + + /* Initialize Host Configuration Register */ + dwc2_init_fs_ls_pclk_sel(hsotg); + if (hsotg->core_params->speed == DWC2_SPEED_PARAM_FULL) { +- hcfg = readl(hsotg->regs + HCFG); ++ hcfg = dwc2_readl(hsotg->regs + HCFG); + hcfg |= HCFG_FSLSSUPP; +- writel(hcfg, hsotg->regs + HCFG); ++ dwc2_writel(hcfg, hsotg->regs + HCFG); + } + + /* +@@ -683,9 +683,9 @@ + * and its value must not be changed during runtime. + */ + if (hsotg->core_params->reload_ctl > 0) { +- hfir = readl(hsotg->regs + HFIR); ++ hfir = dwc2_readl(hsotg->regs + HFIR); + hfir |= HFIR_RLDCTRL; +- writel(hfir, hsotg->regs + HFIR); ++ dwc2_writel(hfir, hsotg->regs + HFIR); + } + + if (hsotg->core_params->dma_desc_enable > 0) { +@@ -701,9 +701,9 @@ + "falling back to buffer DMA mode.\n"); + hsotg->core_params->dma_desc_enable = 0; + } else { +- hcfg = readl(hsotg->regs + HCFG); ++ hcfg = dwc2_readl(hsotg->regs + HCFG); + hcfg |= HCFG_DESCDMA; +- writel(hcfg, hsotg->regs + HCFG); ++ dwc2_writel(hcfg, hsotg->regs + HCFG); + } + } + +@@ -712,18 +712,18 @@ + + /* TODO - check this */ + /* Clear Host Set HNP Enable in the OTG Control Register */ +- otgctl = readl(hsotg->regs + GOTGCTL); ++ otgctl = dwc2_readl(hsotg->regs + GOTGCTL); + otgctl &= ~GOTGCTL_HSTSETHNPEN; +- writel(otgctl, hsotg->regs + GOTGCTL); ++ dwc2_writel(otgctl, hsotg->regs + GOTGCTL); + + /* Make sure the FIFOs are flushed */ + dwc2_flush_tx_fifo(hsotg, 0x10 /* all TX FIFOs */); + dwc2_flush_rx_fifo(hsotg); + + /* Clear Host Set HNP Enable in the OTG Control Register */ +- otgctl = readl(hsotg->regs + GOTGCTL); ++ otgctl = dwc2_readl(hsotg->regs + GOTGCTL); + otgctl &= ~GOTGCTL_HSTSETHNPEN; +- writel(otgctl, hsotg->regs + GOTGCTL); ++ dwc2_writel(otgctl, hsotg->regs + GOTGCTL); + + if (hsotg->core_params->dma_desc_enable <= 0) { + int num_channels, i; +@@ -732,25 +732,25 @@ + /* Flush out any leftover queued requests */ + num_channels = hsotg->core_params->host_channels; + for (i = 0; i < num_channels; i++) { +- hcchar = readl(hsotg->regs + HCCHAR(i)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(i)); + hcchar &= ~HCCHAR_CHENA; + hcchar |= HCCHAR_CHDIS; + hcchar &= ~HCCHAR_EPDIR; +- writel(hcchar, hsotg->regs + HCCHAR(i)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(i)); + } + + /* Halt all channels to put them into a known state */ + for (i = 0; i < num_channels; i++) { + int count = 0; + +- hcchar = readl(hsotg->regs + HCCHAR(i)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(i)); + hcchar |= HCCHAR_CHENA | HCCHAR_CHDIS; + hcchar &= ~HCCHAR_EPDIR; +- writel(hcchar, hsotg->regs + HCCHAR(i)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(i)); + dev_dbg(hsotg->dev, "%s: Halt channel %d\n", + __func__, i); + do { +- hcchar = readl(hsotg->regs + HCCHAR(i)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(i)); + if (++count > 1000) { + dev_err(hsotg->dev, + "Unable to clear enable on channel %d\n", +@@ -771,7 +771,7 @@ + !!(hprt0 & HPRT0_PWR)); + if (!(hprt0 & HPRT0_PWR)) { + hprt0 |= HPRT0_PWR; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + } + } + +@@ -851,7 +851,7 @@ + break; + } + +- writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num)); ++ dwc2_writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num)); + if (dbg_hc(chan)) + dev_vdbg(hsotg->dev, "set HCINTMSK to %08x\n", hcintmsk); + } +@@ -888,7 +888,7 @@ + } + } + +- writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num)); ++ dwc2_writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num)); + if (dbg_hc(chan)) + dev_vdbg(hsotg->dev, "set HCINTMSK to %08x\n", hcintmsk); + } +@@ -909,16 +909,16 @@ + } + + /* Enable the top level host channel interrupt */ +- intmsk = readl(hsotg->regs + HAINTMSK); ++ intmsk = dwc2_readl(hsotg->regs + HAINTMSK); + intmsk |= 1 << chan->hc_num; +- writel(intmsk, hsotg->regs + HAINTMSK); ++ dwc2_writel(intmsk, hsotg->regs + HAINTMSK); + if (dbg_hc(chan)) + dev_vdbg(hsotg->dev, "set HAINTMSK to %08x\n", intmsk); + + /* Make sure host channel interrupts are enabled */ +- intmsk = readl(hsotg->regs + GINTMSK); ++ intmsk = dwc2_readl(hsotg->regs + GINTMSK); + intmsk |= GINTSTS_HCHINT; +- writel(intmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(intmsk, hsotg->regs + GINTMSK); + if (dbg_hc(chan)) + dev_vdbg(hsotg->dev, "set GINTMSK to %08x\n", intmsk); + } +@@ -947,7 +947,7 @@ + /* Clear old interrupt conditions for this host channel */ + hcintmsk = 0xffffffff; + hcintmsk &= ~HCINTMSK_RESERVED14_31; +- writel(hcintmsk, hsotg->regs + HCINT(hc_num)); ++ dwc2_writel(hcintmsk, hsotg->regs + HCINT(hc_num)); + + /* Enable channel interrupts required for this transfer */ + dwc2_hc_enable_ints(hsotg, chan); +@@ -964,7 +964,7 @@ + hcchar |= HCCHAR_LSPDDEV; + hcchar |= chan->ep_type << HCCHAR_EPTYPE_SHIFT & HCCHAR_EPTYPE_MASK; + hcchar |= chan->max_packet << HCCHAR_MPS_SHIFT & HCCHAR_MPS_MASK; +- writel(hcchar, hsotg->regs + HCCHAR(hc_num)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(hc_num)); + if (dbg_hc(chan)) { + dev_vdbg(hsotg->dev, "set HCCHAR(%d) to %08x\n", + hc_num, hcchar); +@@ -1018,7 +1018,7 @@ + } + } + +- writel(hcsplt, hsotg->regs + HCSPLT(hc_num)); ++ dwc2_writel(hcsplt, hsotg->regs + HCSPLT(hc_num)); + } + + /** +@@ -1070,14 +1070,14 @@ + u32 hcintmsk = HCINTMSK_CHHLTD; + + dev_vdbg(hsotg->dev, "dequeue/error\n"); +- writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num)); ++ dwc2_writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num)); + + /* + * Make sure no other interrupts besides halt are currently + * pending. Handling another interrupt could cause a crash due + * to the QTD and QH state. + */ +- writel(~hcintmsk, hsotg->regs + HCINT(chan->hc_num)); ++ dwc2_writel(~hcintmsk, hsotg->regs + HCINT(chan->hc_num)); + + /* + * Make sure the halt status is set to URB_DEQUEUE or AHB_ERR +@@ -1086,7 +1086,7 @@ + */ + chan->halt_status = halt_status; + +- hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(chan->hc_num)); + if (!(hcchar & HCCHAR_CHENA)) { + /* + * The channel is either already halted or it hasn't +@@ -1114,7 +1114,7 @@ + return; + } + +- hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(chan->hc_num)); + + /* No need to set the bit in DDMA for disabling the channel */ + /* TODO check it everywhere channel is disabled */ +@@ -1137,7 +1137,7 @@ + if (chan->ep_type == USB_ENDPOINT_XFER_CONTROL || + chan->ep_type == USB_ENDPOINT_XFER_BULK) { + dev_vdbg(hsotg->dev, "control/bulk\n"); +- nptxsts = readl(hsotg->regs + GNPTXSTS); ++ nptxsts = dwc2_readl(hsotg->regs + GNPTXSTS); + if ((nptxsts & TXSTS_QSPCAVAIL_MASK) == 0) { + dev_vdbg(hsotg->dev, "Disabling channel\n"); + hcchar &= ~HCCHAR_CHENA; +@@ -1145,7 +1145,7 @@ + } else { + if (dbg_perio()) + dev_vdbg(hsotg->dev, "isoc/intr\n"); +- hptxsts = readl(hsotg->regs + HPTXSTS); ++ hptxsts = dwc2_readl(hsotg->regs + HPTXSTS); + if ((hptxsts & TXSTS_QSPCAVAIL_MASK) == 0 || + hsotg->queuing_high_bandwidth) { + if (dbg_perio()) +@@ -1158,7 +1158,7 @@ + dev_vdbg(hsotg->dev, "DMA enabled\n"); + } + +- writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); + chan->halt_status = halt_status; + + if (hcchar & HCCHAR_CHENA) { +@@ -1205,10 +1205,10 @@ + * Clear channel interrupt enables and any unhandled channel interrupt + * conditions + */ +- writel(0, hsotg->regs + HCINTMSK(chan->hc_num)); ++ dwc2_writel(0, hsotg->regs + HCINTMSK(chan->hc_num)); + hcintmsk = 0xffffffff; + hcintmsk &= ~HCINTMSK_RESERVED14_31; +- writel(hcintmsk, hsotg->regs + HCINT(chan->hc_num)); ++ dwc2_writel(hcintmsk, hsotg->regs + HCINT(chan->hc_num)); + } + + /** +@@ -1294,13 +1294,13 @@ + if (((unsigned long)data_buf & 0x3) == 0) { + /* xfer_buf is DWORD aligned */ + for (i = 0; i < dword_count; i++, data_buf++) +- writel(*data_buf, data_fifo); ++ dwc2_writel(*data_buf, data_fifo); + } else { + /* xfer_buf is not DWORD aligned */ + for (i = 0; i < dword_count; i++, data_buf++) { + u32 data = data_buf[0] | data_buf[1] << 8 | + data_buf[2] << 16 | data_buf[3] << 24; +- writel(data, data_fifo); ++ dwc2_writel(data, data_fifo); + } + } + +@@ -1453,7 +1453,7 @@ + hctsiz |= num_packets << TSIZ_PKTCNT_SHIFT & TSIZ_PKTCNT_MASK; + hctsiz |= chan->data_pid_start << TSIZ_SC_MC_PID_SHIFT & + TSIZ_SC_MC_PID_MASK; +- writel(hctsiz, hsotg->regs + HCTSIZ(chan->hc_num)); ++ dwc2_writel(hctsiz, hsotg->regs + HCTSIZ(chan->hc_num)); + if (dbg_hc(chan)) { + dev_vdbg(hsotg->dev, "Wrote %08x to HCTSIZ(%d)\n", + hctsiz, chan->hc_num); +@@ -1481,7 +1481,7 @@ + } else { + dma_addr = chan->xfer_dma; + } +- writel((u32)dma_addr, hsotg->regs + HCDMA(chan->hc_num)); ++ dwc2_writel((u32)dma_addr, hsotg->regs + HCDMA(chan->hc_num)); + if (dbg_hc(chan)) + dev_vdbg(hsotg->dev, "Wrote %08lx to HCDMA(%d)\n", + (unsigned long)dma_addr, chan->hc_num); +@@ -1489,13 +1489,13 @@ + + /* Start the split */ + if (chan->do_split) { +- u32 hcsplt = readl(hsotg->regs + HCSPLT(chan->hc_num)); ++ u32 hcsplt = dwc2_readl(hsotg->regs + HCSPLT(chan->hc_num)); + + hcsplt |= HCSPLT_SPLTENA; +- writel(hcsplt, hsotg->regs + HCSPLT(chan->hc_num)); ++ dwc2_writel(hcsplt, hsotg->regs + HCSPLT(chan->hc_num)); + } + +- hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(chan->hc_num)); + hcchar &= ~HCCHAR_MULTICNT_MASK; + hcchar |= chan->multi_count << HCCHAR_MULTICNT_SHIFT & + HCCHAR_MULTICNT_MASK; +@@ -1515,7 +1515,7 @@ + (hcchar & HCCHAR_MULTICNT_MASK) >> + HCCHAR_MULTICNT_SHIFT); + +- writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); + if (dbg_hc(chan)) + dev_vdbg(hsotg->dev, "Wrote %08x to HCCHAR(%d)\n", hcchar, + chan->hc_num); +@@ -1574,18 +1574,18 @@ + dev_vdbg(hsotg->dev, " NTD: %d\n", chan->ntd - 1); + } + +- writel(hctsiz, hsotg->regs + HCTSIZ(chan->hc_num)); ++ dwc2_writel(hctsiz, hsotg->regs + HCTSIZ(chan->hc_num)); + + hc_dma = (u32)chan->desc_list_addr & HCDMA_DMA_ADDR_MASK; + + /* Always start from first descriptor */ + hc_dma &= ~HCDMA_CTD_MASK; +- writel(hc_dma, hsotg->regs + HCDMA(chan->hc_num)); ++ 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); + +- hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(chan->hc_num)); + hcchar &= ~HCCHAR_MULTICNT_MASK; + hcchar |= chan->multi_count << HCCHAR_MULTICNT_SHIFT & + HCCHAR_MULTICNT_MASK; +@@ -1604,7 +1604,7 @@ + (hcchar & HCCHAR_MULTICNT_MASK) >> + HCCHAR_MULTICNT_SHIFT); + +- writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); + if (dbg_hc(chan)) + dev_vdbg(hsotg->dev, "Wrote %08x to HCCHAR(%d)\n", hcchar, + chan->hc_num); +@@ -1661,7 +1661,7 @@ + * transfer completes, the extra requests for the channel will + * be flushed. + */ +- u32 hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num)); ++ u32 hcchar = dwc2_readl(hsotg->regs + HCCHAR(chan->hc_num)); + + dwc2_hc_set_even_odd_frame(hsotg, chan, &hcchar); + hcchar |= HCCHAR_CHENA; +@@ -1669,7 +1669,7 @@ + if (dbg_hc(chan)) + dev_vdbg(hsotg->dev, " IN xfer: hcchar = 0x%08x\n", + hcchar); +- writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); + chan->requests++; + return 1; + } +@@ -1679,7 +1679,7 @@ + if (chan->xfer_count < chan->xfer_len) { + if (chan->ep_type == USB_ENDPOINT_XFER_INT || + chan->ep_type == USB_ENDPOINT_XFER_ISOC) { +- u32 hcchar = readl(hsotg->regs + ++ u32 hcchar = dwc2_readl(hsotg->regs + + HCCHAR(chan->hc_num)); + + dwc2_hc_set_even_odd_frame(hsotg, chan, +@@ -1716,12 +1716,12 @@ + + hctsiz = TSIZ_DOPNG; + hctsiz |= 1 << TSIZ_PKTCNT_SHIFT; +- writel(hctsiz, hsotg->regs + HCTSIZ(chan->hc_num)); ++ dwc2_writel(hctsiz, hsotg->regs + HCTSIZ(chan->hc_num)); + +- hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(chan->hc_num)); + hcchar |= HCCHAR_CHENA; + hcchar &= ~HCCHAR_CHDIS; +- writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num)); + } + + /** +@@ -1740,8 +1740,8 @@ + u32 hprt0; + int clock = 60; /* default value */ + +- usbcfg = readl(hsotg->regs + GUSBCFG); +- hprt0 = readl(hsotg->regs + HPRT0); ++ usbcfg = dwc2_readl(hsotg->regs + GUSBCFG); ++ hprt0 = dwc2_readl(hsotg->regs + HPRT0); + + if (!(usbcfg & GUSBCFG_PHYSEL) && (usbcfg & GUSBCFG_ULPI_UTMI_SEL) && + !(usbcfg & GUSBCFG_PHYIF16)) +@@ -1797,7 +1797,7 @@ + dev_vdbg(hsotg->dev, "%s(%p,%p,%d)\n", __func__, hsotg, dest, bytes); + + for (i = 0; i < word_count; i++, data_buf++) +- *data_buf = readl(fifo); ++ *data_buf = dwc2_readl(fifo); + } + + /** +@@ -1817,56 +1817,56 @@ + dev_dbg(hsotg->dev, "Host Global Registers\n"); + addr = hsotg->regs + HCFG; + dev_dbg(hsotg->dev, "HCFG @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HFIR; + dev_dbg(hsotg->dev, "HFIR @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HFNUM; + dev_dbg(hsotg->dev, "HFNUM @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HPTXSTS; + dev_dbg(hsotg->dev, "HPTXSTS @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HAINT; + dev_dbg(hsotg->dev, "HAINT @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HAINTMSK; + dev_dbg(hsotg->dev, "HAINTMSK @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + if (hsotg->core_params->dma_desc_enable > 0) { + addr = hsotg->regs + HFLBADDR; + dev_dbg(hsotg->dev, "HFLBADDR @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + } + + addr = hsotg->regs + HPRT0; + dev_dbg(hsotg->dev, "HPRT0 @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + + for (i = 0; i < hsotg->core_params->host_channels; i++) { + dev_dbg(hsotg->dev, "Host Channel %d Specific Registers\n", i); + addr = hsotg->regs + HCCHAR(i); + dev_dbg(hsotg->dev, "HCCHAR @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HCSPLT(i); + dev_dbg(hsotg->dev, "HCSPLT @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HCINT(i); + dev_dbg(hsotg->dev, "HCINT @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HCINTMSK(i); + dev_dbg(hsotg->dev, "HCINTMSK @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HCTSIZ(i); + dev_dbg(hsotg->dev, "HCTSIZ @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HCDMA(i); + dev_dbg(hsotg->dev, "HCDMA @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + if (hsotg->core_params->dma_desc_enable > 0) { + addr = hsotg->regs + HCDMAB(i); + dev_dbg(hsotg->dev, "HCDMAB @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + } + } + #endif +@@ -1888,80 +1888,80 @@ + dev_dbg(hsotg->dev, "Core Global Registers\n"); + addr = hsotg->regs + GOTGCTL; + dev_dbg(hsotg->dev, "GOTGCTL @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GOTGINT; + dev_dbg(hsotg->dev, "GOTGINT @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GAHBCFG; + dev_dbg(hsotg->dev, "GAHBCFG @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GUSBCFG; + dev_dbg(hsotg->dev, "GUSBCFG @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GRSTCTL; + dev_dbg(hsotg->dev, "GRSTCTL @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GINTSTS; + dev_dbg(hsotg->dev, "GINTSTS @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GINTMSK; + dev_dbg(hsotg->dev, "GINTMSK @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GRXSTSR; + dev_dbg(hsotg->dev, "GRXSTSR @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GRXFSIZ; + dev_dbg(hsotg->dev, "GRXFSIZ @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GNPTXFSIZ; + dev_dbg(hsotg->dev, "GNPTXFSIZ @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GNPTXSTS; + dev_dbg(hsotg->dev, "GNPTXSTS @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GI2CCTL; + dev_dbg(hsotg->dev, "GI2CCTL @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GPVNDCTL; + dev_dbg(hsotg->dev, "GPVNDCTL @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GGPIO; + dev_dbg(hsotg->dev, "GGPIO @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GUID; + dev_dbg(hsotg->dev, "GUID @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GSNPSID; + dev_dbg(hsotg->dev, "GSNPSID @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GHWCFG1; + dev_dbg(hsotg->dev, "GHWCFG1 @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GHWCFG2; + dev_dbg(hsotg->dev, "GHWCFG2 @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GHWCFG3; + dev_dbg(hsotg->dev, "GHWCFG3 @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GHWCFG4; + dev_dbg(hsotg->dev, "GHWCFG4 @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GLPMCFG; + dev_dbg(hsotg->dev, "GLPMCFG @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GPWRDN; + dev_dbg(hsotg->dev, "GPWRDN @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + GDFIFOCFG; + dev_dbg(hsotg->dev, "GDFIFOCFG @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + addr = hsotg->regs + HPTXFSIZ; + dev_dbg(hsotg->dev, "HPTXFSIZ @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + + addr = hsotg->regs + PCGCTL; + dev_dbg(hsotg->dev, "PCGCTL @0x%08lX : 0x%08X\n", +- (unsigned long)addr, readl(addr)); ++ (unsigned long)addr, dwc2_readl(addr)); + #endif + } + +@@ -1980,15 +1980,15 @@ + + greset = GRSTCTL_TXFFLSH; + greset |= num << GRSTCTL_TXFNUM_SHIFT & GRSTCTL_TXFNUM_MASK; +- writel(greset, hsotg->regs + GRSTCTL); ++ dwc2_writel(greset, hsotg->regs + GRSTCTL); + + do { +- greset = readl(hsotg->regs + GRSTCTL); ++ greset = dwc2_readl(hsotg->regs + GRSTCTL); + if (++count > 10000) { + dev_warn(hsotg->dev, + "%s() HANG! GRSTCTL=%0x GNPTXSTS=0x%08x\n", + __func__, greset, +- readl(hsotg->regs + GNPTXSTS)); ++ dwc2_readl(hsotg->regs + GNPTXSTS)); + break; + } + udelay(1); +@@ -2011,10 +2011,10 @@ + dev_vdbg(hsotg->dev, "%s()\n", __func__); + + greset = GRSTCTL_RXFFLSH; +- writel(greset, hsotg->regs + GRSTCTL); ++ dwc2_writel(greset, hsotg->regs + GRSTCTL); + + do { +- greset = readl(hsotg->regs + GRSTCTL); ++ greset = dwc2_readl(hsotg->regs + GRSTCTL); + if (++count > 10000) { + dev_warn(hsotg->dev, "%s() HANG! GRSTCTL=%0x\n", + __func__, greset); +@@ -2676,7 +2676,7 @@ + * 0x45f42xxx or 0x45f43xxx, which corresponds to either "OT2" or "OT3", + * as in "OTG version 2.xx" or "OTG version 3.xx". + */ +- hw->snpsid = readl(hsotg->regs + GSNPSID); ++ hw->snpsid = dwc2_readl(hsotg->regs + GSNPSID); + if ((hw->snpsid & 0xfffff000) != 0x4f542000 && + (hw->snpsid & 0xfffff000) != 0x4f543000) { + dev_err(hsotg->dev, "Bad value for GSNPSID: 0x%08x\n", +@@ -2688,11 +2688,11 @@ + hw->snpsid >> 12 & 0xf, hw->snpsid >> 8 & 0xf, + hw->snpsid >> 4 & 0xf, hw->snpsid & 0xf, hw->snpsid); + +- hwcfg1 = readl(hsotg->regs + GHWCFG1); +- hwcfg2 = readl(hsotg->regs + GHWCFG2); +- hwcfg3 = readl(hsotg->regs + GHWCFG3); +- hwcfg4 = readl(hsotg->regs + GHWCFG4); +- grxfsiz = readl(hsotg->regs + GRXFSIZ); ++ hwcfg1 = dwc2_readl(hsotg->regs + GHWCFG1); ++ hwcfg2 = dwc2_readl(hsotg->regs + GHWCFG2); ++ hwcfg3 = dwc2_readl(hsotg->regs + GHWCFG3); ++ hwcfg4 = dwc2_readl(hsotg->regs + GHWCFG4); ++ grxfsiz = dwc2_readl(hsotg->regs + GRXFSIZ); + + dev_dbg(hsotg->dev, "hwcfg1=%08x\n", hwcfg1); + dev_dbg(hsotg->dev, "hwcfg2=%08x\n", hwcfg2); +@@ -2701,18 +2701,18 @@ + dev_dbg(hsotg->dev, "grxfsiz=%08x\n", grxfsiz); + + /* Force host mode to get HPTXFSIZ / GNPTXFSIZ exact power on value */ +- gusbcfg = readl(hsotg->regs + GUSBCFG); ++ gusbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + gusbcfg |= GUSBCFG_FORCEHOSTMODE; +- writel(gusbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(gusbcfg, hsotg->regs + GUSBCFG); + usleep_range(100000, 150000); + +- gnptxfsiz = readl(hsotg->regs + GNPTXFSIZ); +- hptxfsiz = readl(hsotg->regs + HPTXFSIZ); ++ gnptxfsiz = dwc2_readl(hsotg->regs + GNPTXFSIZ); ++ hptxfsiz = dwc2_readl(hsotg->regs + HPTXFSIZ); + dev_dbg(hsotg->dev, "gnptxfsiz=%08x\n", gnptxfsiz); + dev_dbg(hsotg->dev, "hptxfsiz=%08x\n", hptxfsiz); +- gusbcfg = readl(hsotg->regs + GUSBCFG); ++ gusbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + gusbcfg &= ~GUSBCFG_FORCEHOSTMODE; +- writel(gusbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(gusbcfg, hsotg->regs + GUSBCFG); + usleep_range(100000, 150000); + + /* hwcfg2 */ +@@ -2831,7 +2831,7 @@ + + bool dwc2_is_controller_alive(struct dwc2_hsotg *hsotg) + { +- if (readl(hsotg->regs + GSNPSID) == 0xffffffff) ++ if (dwc2_readl(hsotg->regs + GSNPSID) == 0xffffffff) + return false; + else + return true; +@@ -2845,10 +2845,10 @@ + */ + void dwc2_enable_global_interrupts(struct dwc2_hsotg *hsotg) + { +- u32 ahbcfg = readl(hsotg->regs + GAHBCFG); ++ u32 ahbcfg = dwc2_readl(hsotg->regs + GAHBCFG); + + ahbcfg |= GAHBCFG_GLBL_INTR_EN; +- writel(ahbcfg, hsotg->regs + GAHBCFG); ++ dwc2_writel(ahbcfg, hsotg->regs + GAHBCFG); + } + + /** +@@ -2859,10 +2859,10 @@ + */ + void dwc2_disable_global_interrupts(struct dwc2_hsotg *hsotg) + { +- u32 ahbcfg = readl(hsotg->regs + GAHBCFG); ++ u32 ahbcfg = dwc2_readl(hsotg->regs + GAHBCFG); + + ahbcfg &= ~GAHBCFG_GLBL_INTR_EN; +- writel(ahbcfg, hsotg->regs + GAHBCFG); ++ dwc2_writel(ahbcfg, hsotg->regs + GAHBCFG); + } + + MODULE_DESCRIPTION("DESIGNWARE HS OTG Core"); +--- a/drivers/usb/dwc2/core.h 2015-02-06 16:53:48.000000000 +0200 ++++ b/drivers/usb/dwc2/core.h 2015-02-09 19:34:09.985105325 +0200 +@@ -44,16 +44,28 @@ + #include <linux/usb/phy.h> + #include "hw.h" + +-#ifdef DWC2_LOG_WRITES +-static inline void do_write(u32 value, void *addr) ++static inline u32 dwc2_readl(const void __iomem *addr) + { +- writel(value, addr); +- pr_info("INFO:: wrote %08x to %p\n", value, addr); ++ u32 value = __raw_readl(addr); ++ ++ /* In order to preserve endianness __raw_* operation is used. Therefore ++ a barrier is needed to ensure IO access is not re-ordered across ++ reads or writes */ ++ mb(); ++ return value; + } + +-#undef writel +-#define writel(v, a) do_write(v, a) ++static inline void dwc2_writel(u32 value, void __iomem *addr) ++{ ++ __raw_writel(value, addr); ++ /* In order to preserve endianness __raw_* operation is used. Therefore ++ a barrier is needed to ensure IO access is not re-ordered across ++ reads or writes */ ++ mb(); ++#ifdef DWC2_LOG_WRITES ++ pr_info("INFO:: wrote %08x to %p\n", value, addr); + #endif ++} + + /* Maximum number of Endpoints/HostChannels */ + #define MAX_EPS_CHANNELS 16 +--- a/drivers/usb/dwc2/core_intr.c 2015-02-06 16:53:48.000000000 +0200 ++++ b/drivers/usb/dwc2/core_intr.c 2015-02-09 19:34:42.865106075 +0200 +@@ -80,15 +80,15 @@ + */ + static void dwc2_handle_usb_port_intr(struct dwc2_hsotg *hsotg) + { +- u32 hprt0 = readl(hsotg->regs + HPRT0); ++ u32 hprt0 = dwc2_readl(hsotg->regs + HPRT0); + + if (hprt0 & HPRT0_ENACHG) { + hprt0 &= ~HPRT0_ENA; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + } + + /* Clear interrupt */ +- writel(GINTSTS_PRTINT, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_PRTINT, hsotg->regs + GINTSTS); + } + + /** +@@ -102,7 +102,7 @@ + dwc2_is_host_mode(hsotg) ? "Host" : "Device"); + + /* Clear interrupt */ +- writel(GINTSTS_MODEMIS, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_MODEMIS, hsotg->regs + GINTSTS); + } + + /** +@@ -117,8 +117,8 @@ + u32 gotgctl; + u32 gintmsk; + +- gotgint = readl(hsotg->regs + GOTGINT); +- gotgctl = readl(hsotg->regs + GOTGCTL); ++ gotgint = dwc2_readl(hsotg->regs + GOTGINT); ++ gotgctl = dwc2_readl(hsotg->regs + GOTGCTL); + dev_dbg(hsotg->dev, "++OTG Interrupt gotgint=%0x [%s]\n", gotgint, + dwc2_op_state_str(hsotg)); + +@@ -126,7 +126,7 @@ + dev_dbg(hsotg->dev, + " ++OTG Interrupt: Session End Detected++ (%s)\n", + dwc2_op_state_str(hsotg)); +- gotgctl = readl(hsotg->regs + GOTGCTL); ++ gotgctl = dwc2_readl(hsotg->regs + GOTGCTL); + + if (hsotg->op_state == OTG_STATE_B_HOST) { + hsotg->op_state = OTG_STATE_B_PERIPHERAL; +@@ -149,15 +149,15 @@ + hsotg->lx_state = DWC2_L0; + } + +- gotgctl = readl(hsotg->regs + GOTGCTL); ++ gotgctl = dwc2_readl(hsotg->regs + GOTGCTL); + gotgctl &= ~GOTGCTL_DEVHNPEN; +- writel(gotgctl, hsotg->regs + GOTGCTL); ++ dwc2_writel(gotgctl, hsotg->regs + GOTGCTL); + } + + if (gotgint & GOTGINT_SES_REQ_SUC_STS_CHNG) { + dev_dbg(hsotg->dev, + " ++OTG Interrupt: Session Request Success Status Change++\n"); +- gotgctl = readl(hsotg->regs + GOTGCTL); ++ gotgctl = dwc2_readl(hsotg->regs + GOTGCTL); + if (gotgctl & GOTGCTL_SESREQSCS) { + if (hsotg->core_params->phy_type == + DWC2_PHY_TYPE_PARAM_FS +@@ -165,9 +165,9 @@ + hsotg->srp_success = 1; + } else { + /* Clear Session Request */ +- gotgctl = readl(hsotg->regs + GOTGCTL); ++ gotgctl = dwc2_readl(hsotg->regs + GOTGCTL); + gotgctl &= ~GOTGCTL_SESREQ; +- writel(gotgctl, hsotg->regs + GOTGCTL); ++ dwc2_writel(gotgctl, hsotg->regs + GOTGCTL); + } + } + } +@@ -177,7 +177,7 @@ + * Print statements during the HNP interrupt handling + * can cause it to fail + */ +- gotgctl = readl(hsotg->regs + GOTGCTL); ++ gotgctl = dwc2_readl(hsotg->regs + GOTGCTL); + /* + * WA for 3.00a- HW is not setting cur_mode, even sometimes + * this does not help +@@ -197,9 +197,9 @@ + * interrupt does not get handled and Linux + * complains loudly. + */ +- gintmsk = readl(hsotg->regs + GINTMSK); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + gintmsk &= ~GINTSTS_SOF; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + + /* + * Call callback function with spin lock +@@ -213,9 +213,9 @@ + hsotg->op_state = OTG_STATE_B_HOST; + } + } else { +- gotgctl = readl(hsotg->regs + GOTGCTL); ++ gotgctl = dwc2_readl(hsotg->regs + GOTGCTL); + gotgctl &= ~(GOTGCTL_HNPREQ | GOTGCTL_DEVHNPEN); +- writel(gotgctl, hsotg->regs + GOTGCTL); ++ dwc2_writel(gotgctl, hsotg->regs + GOTGCTL); + dev_dbg(hsotg->dev, "HNP Failed\n"); + dev_err(hsotg->dev, + "Device Not Connected/Responding\n"); +@@ -241,9 +241,9 @@ + hsotg->op_state = OTG_STATE_A_PERIPHERAL; + } else { + /* Need to disable SOF interrupt immediately */ +- gintmsk = readl(hsotg->regs + GINTMSK); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + gintmsk &= ~GINTSTS_SOF; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + spin_unlock(&hsotg->lock); + dwc2_hcd_start(hsotg); + spin_lock(&hsotg->lock); +@@ -258,7 +258,7 @@ + dev_dbg(hsotg->dev, " ++OTG Interrupt: Debounce Done++\n"); + + /* Clear GOTGINT */ +- writel(gotgint, hsotg->regs + GOTGINT); ++ dwc2_writel(gotgint, hsotg->regs + GOTGINT); + } + + /** +@@ -273,11 +273,11 @@ + */ + static void dwc2_handle_conn_id_status_change_intr(struct dwc2_hsotg *hsotg) + { +- u32 gintmsk = readl(hsotg->regs + GINTMSK); ++ u32 gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + + /* Need to disable SOF interrupt immediately */ + gintmsk &= ~GINTSTS_SOF; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + + dev_dbg(hsotg->dev, " ++Connector ID Status Change Interrupt++ (%s)\n", + dwc2_is_host_mode(hsotg) ? "Host" : "Device"); +@@ -292,7 +292,7 @@ + spin_lock(&hsotg->lock); + + /* Clear interrupt */ +- writel(GINTSTS_CONIDSTSCHNG, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_CONIDSTSCHNG, hsotg->regs + GINTSTS); + } + + /** +@@ -311,7 +311,7 @@ + dev_dbg(hsotg->dev, "++Session Request Interrupt++\n"); + + /* Clear interrupt */ +- writel(GINTSTS_SESSREQINT, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_SESSREQINT, hsotg->regs + GINTSTS); + } + + /* +@@ -327,23 +327,23 @@ + dev_dbg(hsotg->dev, "%s lxstate = %d\n", __func__, hsotg->lx_state); + + if (dwc2_is_device_mode(hsotg)) { +- dev_dbg(hsotg->dev, "DSTS=0x%0x\n", readl(hsotg->regs + DSTS)); ++ dev_dbg(hsotg->dev, "DSTS=0x%0x\n", dwc2_readl(hsotg->regs + DSTS)); + if (hsotg->lx_state == DWC2_L2) { +- u32 dctl = readl(hsotg->regs + DCTL); ++ u32 dctl = dwc2_readl(hsotg->regs + DCTL); + + /* Clear Remote Wakeup Signaling */ + dctl &= ~DCTL_RMTWKUPSIG; +- writel(dctl, hsotg->regs + DCTL); ++ dwc2_writel(dctl, hsotg->regs + DCTL); + } + /* Change to L0 state */ + hsotg->lx_state = DWC2_L0; + } else { + if (hsotg->lx_state != DWC2_L1) { +- u32 pcgcctl = readl(hsotg->regs + PCGCTL); ++ u32 pcgcctl = dwc2_readl(hsotg->regs + PCGCTL); + + /* Restart the Phy Clock */ + pcgcctl &= ~PCGCTL_STOPPCLK; +- writel(pcgcctl, hsotg->regs + PCGCTL); ++ dwc2_writel(pcgcctl, hsotg->regs + PCGCTL); + mod_timer(&hsotg->wkp_timer, + jiffies + msecs_to_jiffies(71)); + } else { +@@ -353,7 +353,7 @@ + } + + /* Clear interrupt */ +- writel(GINTSTS_WKUPINT, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_WKUPINT, hsotg->regs + GINTSTS); + } + + /* +@@ -369,7 +369,7 @@ + /* Change to L3 (OFF) state */ + hsotg->lx_state = DWC2_L3; + +- writel(GINTSTS_DISCONNINT, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_DISCONNINT, hsotg->regs + GINTSTS); + } + + /* +@@ -391,7 +391,7 @@ + * Check the Device status register to determine if the Suspend + * state is active + */ +- dsts = readl(hsotg->regs + DSTS); ++ dsts = dwc2_readl(hsotg->regs + DSTS); + dev_dbg(hsotg->dev, "DSTS=0x%0x\n", dsts); + dev_dbg(hsotg->dev, + "DSTS.Suspend Status=%d HWCFG4.Power Optimize=%d\n", +@@ -413,7 +413,7 @@ + hsotg->lx_state = DWC2_L2; + + /* Clear interrupt */ +- writel(GINTSTS_USBSUSP, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_USBSUSP, hsotg->regs + GINTSTS); + } + + #define GINTMSK_COMMON (GINTSTS_WKUPINT | GINTSTS_SESSREQINT | \ +@@ -431,9 +431,9 @@ + u32 gahbcfg; + u32 gintmsk_common = GINTMSK_COMMON; + +- gintsts = readl(hsotg->regs + GINTSTS); +- gintmsk = readl(hsotg->regs + GINTMSK); +- gahbcfg = readl(hsotg->regs + GAHBCFG); ++ gintsts = dwc2_readl(hsotg->regs + GINTSTS); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); ++ gahbcfg = dwc2_readl(hsotg->regs + GAHBCFG); + + /* If any common interrupts set */ + if (gintsts & gintmsk_common) +--- a/drivers/usb/dwc2/gadget.c 2015-02-06 16:53:48.000000000 +0200 ++++ b/drivers/usb/dwc2/gadget.c 2015-02-09 19:34:42.891106076 +0200 +@@ -55,12 +55,12 @@ + + static inline void __orr32(void __iomem *ptr, u32 val) + { +- writel(readl(ptr) | val, ptr); ++ dwc2_writel(dwc2_readl(ptr) | val, ptr); + } + + static inline void __bic32(void __iomem *ptr, u32 val) + { +- writel(readl(ptr) & ~val, ptr); ++ dwc2_writel(dwc2_readl(ptr) & ~val, ptr); + } + + /* forward decleration of functions */ +@@ -97,14 +97,14 @@ + */ + static void s3c_hsotg_en_gsint(struct s3c_hsotg *hsotg, u32 ints) + { +- u32 gsintmsk = readl(hsotg->regs + GINTMSK); ++ u32 gsintmsk = dwc2_readl(hsotg->regs + GINTMSK); + u32 new_gsintmsk; + + new_gsintmsk = gsintmsk | ints; + + if (new_gsintmsk != gsintmsk) { + dev_dbg(hsotg->dev, "gsintmsk now 0x%08x\n", new_gsintmsk); +- writel(new_gsintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(new_gsintmsk, hsotg->regs + GINTMSK); + } + } + +@@ -115,13 +115,13 @@ + */ + static void s3c_hsotg_disable_gsint(struct s3c_hsotg *hsotg, u32 ints) + { +- u32 gsintmsk = readl(hsotg->regs + GINTMSK); ++ u32 gsintmsk = dwc2_readl(hsotg->regs + GINTMSK); + u32 new_gsintmsk; + + new_gsintmsk = gsintmsk & ~ints; + + if (new_gsintmsk != gsintmsk) +- writel(new_gsintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(new_gsintmsk, hsotg->regs + GINTMSK); + } + + /** +@@ -146,12 +146,12 @@ + bit <<= 16; + + local_irq_save(flags); +- daint = readl(hsotg->regs + DAINTMSK); ++ daint = dwc2_readl(hsotg->regs + DAINTMSK); + if (en) + daint |= bit; + else + daint &= ~bit; +- writel(daint, hsotg->regs + DAINTMSK); ++ dwc2_writel(daint, hsotg->regs + DAINTMSK); + local_irq_restore(flags); + } + +@@ -169,8 +169,8 @@ + + /* set FIFO sizes to 2048/1024 */ + +- writel(2048, hsotg->regs + GRXFSIZ); +- writel((2048 << FIFOSIZE_STARTADDR_SHIFT) | ++ dwc2_writel(2048, hsotg->regs + GRXFSIZ); ++ dwc2_writel((2048 << FIFOSIZE_STARTADDR_SHIFT) | + (1024 << FIFOSIZE_DEPTH_SHIFT), hsotg->regs + GNPTXFSIZ); + + /* +@@ -200,7 +200,7 @@ + "insufficient fifo memory"); + addr += size; + +- writel(val, hsotg->regs + DPTXFSIZN(ep)); ++ dwc2_writel(val, hsotg->regs + DPTXFSIZN(ep)); + } + /* 768*4=3072 bytes FIFO length */ + size = 768; +@@ -211,7 +211,7 @@ + "insufficient fifo memory"); + addr += size; + +- writel(val, hsotg->regs + DPTXFSIZN(ep)); ++ dwc2_writel(val, hsotg->regs + DPTXFSIZN(ep)); + } + + /* +@@ -219,13 +219,13 @@ + * all fifos are flushed before continuing + */ + +- writel(GRSTCTL_TXFNUM(0x10) | GRSTCTL_TXFFLSH | ++ dwc2_writel(GRSTCTL_TXFNUM(0x10) | GRSTCTL_TXFFLSH | + GRSTCTL_RXFFLSH, hsotg->regs + GRSTCTL); + + /* wait until the fifos are both flushed */ + timeout = 100; + while (1) { +- val = readl(hsotg->regs + GRSTCTL); ++ val = dwc2_readl(hsotg->regs + GRSTCTL); + + if ((val & (GRSTCTL_TXFFLSH | GRSTCTL_RXFFLSH)) == 0) + break; +@@ -317,7 +317,7 @@ + struct s3c_hsotg_req *hs_req) + { + bool periodic = is_ep_periodic(hs_ep); +- u32 gnptxsts = readl(hsotg->regs + GNPTXSTS); ++ u32 gnptxsts = dwc2_readl(hsotg->regs + GNPTXSTS); + int buf_pos = hs_req->req.actual; + int to_write = hs_ep->size_loaded; + void *data; +@@ -332,7 +332,7 @@ + return 0; + + if (periodic && !hsotg->dedicated_fifos) { +- u32 epsize = readl(hsotg->regs + DIEPTSIZ(hs_ep->index)); ++ u32 epsize = dwc2_readl(hsotg->regs + DIEPTSIZ(hs_ep->index)); + int size_left; + int size_done; + +@@ -373,7 +373,7 @@ + return -ENOSPC; + } + } else if (hsotg->dedicated_fifos && hs_ep->index != 0) { +- can_write = readl(hsotg->regs + DTXFSTS(hs_ep->index)); ++ can_write = dwc2_readl(hsotg->regs + DTXFSTS(hs_ep->index)); + + can_write &= 0xffff; + can_write *= 4; +@@ -550,11 +550,11 @@ + epsize_reg = dir_in ? DIEPTSIZ(index) : DOEPTSIZ(index); + + dev_dbg(hsotg->dev, "%s: DxEPCTL=0x%08x, ep %d, dir %s\n", +- __func__, readl(hsotg->regs + epctrl_reg), index, ++ __func__, dwc2_readl(hsotg->regs + epctrl_reg), index, + hs_ep->dir_in ? "in" : "out"); + + /* If endpoint is stalled, we will restart request later */ +- ctrl = readl(hsotg->regs + epctrl_reg); ++ ctrl = dwc2_readl(hsotg->regs + epctrl_reg); + + if (ctrl & DXEPCTL_STALL) { + dev_warn(hsotg->dev, "%s: ep%d is stalled\n", __func__, index); +@@ -622,7 +622,7 @@ + hs_ep->req = hs_req; + + /* write size / packets */ +- writel(epsize, hsotg->regs + epsize_reg); ++ dwc2_writel(epsize, hsotg->regs + epsize_reg); + + if (using_dma(hsotg) && !continuing) { + unsigned int dma_reg; +@@ -633,7 +633,7 @@ + */ + + dma_reg = dir_in ? DIEPDMA(index) : DOEPDMA(index); +- writel(ureq->dma, hsotg->regs + dma_reg); ++ dwc2_writel(ureq->dma, hsotg->regs + dma_reg); + + dev_dbg(hsotg->dev, "%s: %pad => 0x%08x\n", + __func__, &ureq->dma, dma_reg); +@@ -652,7 +652,7 @@ + + + dev_dbg(hsotg->dev, "%s: DxEPCTL=0x%08x\n", __func__, ctrl); +- writel(ctrl, hsotg->regs + epctrl_reg); ++ dwc2_writel(ctrl, hsotg->regs + epctrl_reg); + + /* + * set these, it seems that DMA support increments past the end +@@ -674,7 +674,7 @@ + * to debugging to see what is going on. + */ + if (dir_in) +- writel(DIEPMSK_INTKNTXFEMPMSK, ++ dwc2_writel(DIEPMSK_INTKNTXFEMPMSK, + hsotg->regs + DIEPINT(index)); + + /* +@@ -683,13 +683,13 @@ + */ + + /* check ep is enabled */ +- if (!(readl(hsotg->regs + epctrl_reg) & DXEPCTL_EPENA)) ++ if (!(dwc2_readl(hsotg->regs + epctrl_reg) & DXEPCTL_EPENA)) + dev_warn(hsotg->dev, + "ep%d: failed to become enabled (DXEPCTL=0x%08x)?\n", +- index, readl(hsotg->regs + epctrl_reg)); ++ index, dwc2_readl(hsotg->regs + epctrl_reg)); + + dev_dbg(hsotg->dev, "%s: DXEPCTL=0x%08x\n", +- __func__, readl(hsotg->regs + epctrl_reg)); ++ __func__, dwc2_readl(hsotg->regs + epctrl_reg)); + + /* enable ep interrupts */ + s3c_hsotg_ctrl_epint(hsotg, hs_ep->index, hs_ep->dir_in, 1); +@@ -1051,14 +1051,14 @@ + * taken effect, so no need to clear later. + */ + +- ctrl = readl(hsotg->regs + reg); ++ ctrl = dwc2_readl(hsotg->regs + reg); + ctrl |= DXEPCTL_STALL; + ctrl |= DXEPCTL_CNAK; +- writel(ctrl, hsotg->regs + reg); ++ dwc2_writel(ctrl, hsotg->regs + reg); + + dev_dbg(hsotg->dev, + "written DXEPCTL=0x%08x to %08x (DXEPCTL=0x%08x)\n", +- ctrl, reg, readl(hsotg->regs + reg)); ++ ctrl, reg, dwc2_readl(hsotg->regs + reg)); + + /* + * complete won't be called, so we enqueue +@@ -1108,11 +1108,11 @@ + switch (ctrl->bRequest) { + case USB_REQ_SET_ADDRESS: + s3c_hsotg_disconnect(hsotg); +- dcfg = readl(hsotg->regs + DCFG); ++ dcfg = dwc2_readl(hsotg->regs + DCFG); + dcfg &= ~DCFG_DEVADDR_MASK; + dcfg |= (le16_to_cpu(ctrl->wValue) << + DCFG_DEVADDR_SHIFT) & DCFG_DEVADDR_MASK; +- writel(dcfg, hsotg->regs + DCFG); ++ dwc2_writel(dcfg, hsotg->regs + DCFG); + + dev_info(hsotg->dev, "new address %d\n", ctrl->wValue); + +@@ -1302,7 +1302,7 @@ + + + if (!hs_req) { +- u32 epctl = readl(hsotg->regs + DOEPCTL(ep_idx)); ++ u32 epctl = dwc2_readl(hsotg->regs + DOEPCTL(ep_idx)); + int ptr; + + dev_warn(hsotg->dev, +@@ -1311,7 +1311,7 @@ + + /* dump the data from the FIFO, we've nothing we can do */ + for (ptr = 0; ptr < size; ptr += 4) +- (void)readl(fifo); ++ (void)dwc2_readl(fifo); + + return; + } +@@ -1378,14 +1378,14 @@ + dev_dbg(hsotg->dev, "sending zero-length packet\n"); + + /* issue a zero-sized packet to terminate this */ +- writel(DXEPTSIZ_MC(1) | DXEPTSIZ_PKTCNT(1) | ++ dwc2_writel(DXEPTSIZ_MC(1) | DXEPTSIZ_PKTCNT(1) | + DXEPTSIZ_XFERSIZE(0), hsotg->regs + DIEPTSIZ(0)); + +- ctrl = readl(hsotg->regs + DIEPCTL0); ++ ctrl = dwc2_readl(hsotg->regs + DIEPCTL0); + ctrl |= DXEPCTL_CNAK; /* clear NAK set by core */ + ctrl |= DXEPCTL_EPENA; /* ensure ep enabled */ + ctrl |= DXEPCTL_USBACTEP; +- writel(ctrl, hsotg->regs + DIEPCTL0); ++ dwc2_writel(ctrl, hsotg->regs + DIEPCTL0); + } + + /** +@@ -1401,7 +1401,7 @@ + static void s3c_hsotg_handle_outdone(struct s3c_hsotg *hsotg, + int epnum, bool was_setup) + { +- u32 epsize = readl(hsotg->regs + DOEPTSIZ(epnum)); ++ u32 epsize = dwc2_readl(hsotg->regs + DOEPTSIZ(epnum)); + struct s3c_hsotg_ep *hs_ep = &hsotg->eps[epnum]; + struct s3c_hsotg_req *hs_req = hs_ep->req; + struct usb_request *req = &hs_req->req; +@@ -1475,7 +1475,7 @@ + { + u32 dsts; + +- dsts = readl(hsotg->regs + DSTS); ++ dsts = dwc2_readl(hsotg->regs + DSTS); + dsts &= DSTS_SOFFN_MASK; + dsts >>= DSTS_SOFFN_SHIFT; + +@@ -1500,7 +1500,7 @@ + */ + static void s3c_hsotg_handle_rx(struct s3c_hsotg *hsotg) + { +- u32 grxstsr = readl(hsotg->regs + GRXSTSP); ++ u32 grxstsr = dwc2_readl(hsotg->regs + GRXSTSP); + u32 epnum, status, size; + + WARN_ON(using_dma(hsotg)); +@@ -1532,7 +1532,7 @@ + dev_dbg(hsotg->dev, + "SetupDone (Frame=0x%08x, DOPEPCTL=0x%08x)\n", + s3c_hsotg_read_frameno(hsotg), +- readl(hsotg->regs + DOEPCTL(0))); ++ dwc2_readl(hsotg->regs + DOEPCTL(0))); + + s3c_hsotg_handle_outdone(hsotg, epnum, true); + break; +@@ -1545,7 +1545,7 @@ + dev_dbg(hsotg->dev, + "SetupRX (Frame=0x%08x, DOPEPCTL=0x%08x)\n", + s3c_hsotg_read_frameno(hsotg), +- readl(hsotg->regs + DOEPCTL(0))); ++ dwc2_readl(hsotg->regs + DOEPCTL(0))); + + s3c_hsotg_rx_data(hsotg, epnum, size); + break; +@@ -1622,16 +1622,16 @@ + * if one of the directions may not be in use. + */ + +- reg = readl(regs + DIEPCTL(ep)); ++ reg = dwc2_readl(regs + DIEPCTL(ep)); + reg &= ~DXEPCTL_MPS_MASK; + reg |= mpsval; +- writel(reg, regs + DIEPCTL(ep)); ++ dwc2_writel(reg, regs + DIEPCTL(ep)); + + if (ep) { +- reg = readl(regs + DOEPCTL(ep)); ++ reg = dwc2_readl(regs + DOEPCTL(ep)); + reg &= ~DXEPCTL_MPS_MASK; + reg |= mpsval; +- writel(reg, regs + DOEPCTL(ep)); ++ dwc2_writel(reg, regs + DOEPCTL(ep)); + } + + return; +@@ -1650,14 +1650,14 @@ + int timeout; + int val; + +- writel(GRSTCTL_TXFNUM(idx) | GRSTCTL_TXFFLSH, ++ dwc2_writel(GRSTCTL_TXFNUM(idx) | GRSTCTL_TXFFLSH, + hsotg->regs + GRSTCTL); + + /* wait until the fifo is flushed */ + timeout = 100; + + while (1) { +- val = readl(hsotg->regs + GRSTCTL); ++ val = dwc2_readl(hsotg->regs + GRSTCTL); + + if ((val & (GRSTCTL_TXFFLSH)) == 0) + break; +@@ -1718,7 +1718,7 @@ + struct s3c_hsotg_ep *hs_ep) + { + struct s3c_hsotg_req *hs_req = hs_ep->req; +- u32 epsize = readl(hsotg->regs + DIEPTSIZ(hs_ep->index)); ++ u32 epsize = dwc2_readl(hsotg->regs + DIEPTSIZ(hs_ep->index)); + int size_left, size_done; + + if (!hs_req) { +@@ -1801,11 +1801,11 @@ + u32 ints; + u32 ctrl; + +- ints = readl(hsotg->regs + epint_reg); +- ctrl = readl(hsotg->regs + epctl_reg); ++ ints = dwc2_readl(hsotg->regs + epint_reg); ++ ctrl = dwc2_readl(hsotg->regs + epctl_reg); + + /* Clear endpoint interrupts */ +- writel(ints, hsotg->regs + epint_reg); ++ dwc2_writel(ints, hsotg->regs + epint_reg); + + dev_dbg(hsotg->dev, "%s: ep%d(%s) DxEPINT=0x%08x\n", + __func__, idx, dir_in ? "in" : "out", ints); +@@ -1816,13 +1816,13 @@ + ctrl |= DXEPCTL_SETEVENFR; + else + ctrl |= DXEPCTL_SETODDFR; +- writel(ctrl, hsotg->regs + epctl_reg); ++ dwc2_writel(ctrl, hsotg->regs + epctl_reg); + } + + dev_dbg(hsotg->dev, + "%s: XferCompl: DxEPCTL=0x%08x, DXEPTSIZ=%08x\n", +- __func__, readl(hsotg->regs + epctl_reg), +- readl(hsotg->regs + epsiz_reg)); ++ __func__, dwc2_readl(hsotg->regs + epctl_reg), ++ dwc2_readl(hsotg->regs + epsiz_reg)); + + /* + * we get OutDone from the FIFO, so we only need to look +@@ -1847,16 +1847,16 @@ + dev_dbg(hsotg->dev, "%s: EPDisbld\n", __func__); + + if (dir_in) { +- int epctl = readl(hsotg->regs + epctl_reg); ++ int epctl = dwc2_readl(hsotg->regs + epctl_reg); + + s3c_hsotg_txfifo_flush(hsotg, hs_ep->fifo_index); + + if ((epctl & DXEPCTL_STALL) && + (epctl & DXEPCTL_EPTYPE_BULK)) { +- int dctl = readl(hsotg->regs + DCTL); ++ int dctl = dwc2_readl(hsotg->regs + DCTL); + + dctl |= DCTL_CGNPINNAK; +- writel(dctl, hsotg->regs + DCTL); ++ dwc2_writel(dctl, hsotg->regs + DCTL); + } + } + } +@@ -1918,7 +1918,7 @@ + */ + static void s3c_hsotg_irq_enumdone(struct s3c_hsotg *hsotg) + { +- u32 dsts = readl(hsotg->regs + DSTS); ++ u32 dsts = dwc2_readl(hsotg->regs + DSTS); + int ep0_mps = 0, ep_mps = 8; + + /* +@@ -1979,8 +1979,8 @@ + s3c_hsotg_enqueue_setup(hsotg); + + dev_dbg(hsotg->dev, "EP0: DIEPCTL0=0x%08x, DOEPCTL0=0x%08x\n", +- readl(hsotg->regs + DIEPCTL0), +- readl(hsotg->regs + DOEPCTL0)); ++ dwc2_readl(hsotg->regs + DIEPCTL0), ++ dwc2_readl(hsotg->regs + DOEPCTL0)); + } + + /** +@@ -2014,7 +2014,7 @@ + } + if (!hsotg->dedicated_fifos) + return; +- size = (readl(hsotg->regs + DTXFSTS(ep->index)) & 0xffff) * 4; ++ size = (dwc2_readl(hsotg->regs + DTXFSTS(ep->index)) & 0xffff) * 4; + if (size < ep->fifo_size) + s3c_hsotg_txfifo_flush(hsotg, ep->fifo_index); + } +@@ -2084,11 +2084,11 @@ + dev_dbg(hsotg->dev, "resetting core\n"); + + /* issue soft reset */ +- writel(GRSTCTL_CSFTRST, hsotg->regs + GRSTCTL); ++ dwc2_writel(GRSTCTL_CSFTRST, hsotg->regs + GRSTCTL); + + timeout = 10000; + do { +- grstctl = readl(hsotg->regs + GRSTCTL); ++ grstctl = dwc2_readl(hsotg->regs + GRSTCTL); + } while ((grstctl & GRSTCTL_CSFTRST) && timeout-- > 0); + + if (grstctl & GRSTCTL_CSFTRST) { +@@ -2099,7 +2099,7 @@ + timeout = 10000; + + while (1) { +- u32 grstctl = readl(hsotg->regs + GRSTCTL); ++ u32 grstctl = dwc2_readl(hsotg->regs + GRSTCTL); + + if (timeout-- < 0) { + dev_info(hsotg->dev, +@@ -2134,22 +2134,22 @@ + */ + + /* set the PLL on, remove the HNP/SRP and set the PHY */ +- writel(hsotg->phyif | GUSBCFG_TOUTCAL(7) | ++ dwc2_writel(hsotg->phyif | GUSBCFG_TOUTCAL(7) | + (0x5 << 10), hsotg->regs + GUSBCFG); + + s3c_hsotg_init_fifo(hsotg); + + __orr32(hsotg->regs + DCTL, DCTL_SFTDISCON); + +- writel(1 << 18 | DCFG_DEVSPD_HS, hsotg->regs + DCFG); ++ dwc2_writel(1 << 18 | DCFG_DEVSPD_HS, hsotg->regs + DCFG); + + /* Clear any pending OTG interrupts */ +- writel(0xffffffff, hsotg->regs + GOTGINT); ++ dwc2_writel(0xffffffff, hsotg->regs + GOTGINT); + + /* Clear any pending interrupts */ +- writel(0xffffffff, hsotg->regs + GINTSTS); ++ dwc2_writel(0xffffffff, hsotg->regs + GINTSTS); + +- writel(GINTSTS_ERLYSUSP | GINTSTS_SESSREQINT | ++ dwc2_writel(GINTSTS_ERLYSUSP | GINTSTS_SESSREQINT | + GINTSTS_GOUTNAKEFF | GINTSTS_GINNAKEFF | + GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST | + GINTSTS_ENUMDONE | GINTSTS_OTGINT | +@@ -2157,11 +2157,11 @@ + hsotg->regs + GINTMSK); + + if (using_dma(hsotg)) +- writel(GAHBCFG_GLBL_INTR_EN | GAHBCFG_DMA_EN | ++ dwc2_writel(GAHBCFG_GLBL_INTR_EN | GAHBCFG_DMA_EN | + GAHBCFG_HBSTLEN_INCR4, + hsotg->regs + GAHBCFG); + else +- writel(((hsotg->dedicated_fifos) ? (GAHBCFG_NP_TXF_EMP_LVL | ++ dwc2_writel(((hsotg->dedicated_fifos) ? (GAHBCFG_NP_TXF_EMP_LVL | + GAHBCFG_P_TXF_EMP_LVL) : 0) | + GAHBCFG_GLBL_INTR_EN, + hsotg->regs + GAHBCFG); +@@ -2172,7 +2172,7 @@ + * interrupts. + */ + +- writel(((hsotg->dedicated_fifos) ? DIEPMSK_TXFIFOEMPTY | ++ dwc2_writel(((hsotg->dedicated_fifos) ? DIEPMSK_TXFIFOEMPTY | + DIEPMSK_INTKNTXFEMPMSK : 0) | + DIEPMSK_EPDISBLDMSK | DIEPMSK_XFERCOMPLMSK | + DIEPMSK_TIMEOUTMSK | DIEPMSK_AHBERRMSK | +@@ -2183,17 +2183,17 @@ + * don't need XferCompl, we get that from RXFIFO in slave mode. In + * DMA mode we may need this. + */ +- writel((using_dma(hsotg) ? (DIEPMSK_XFERCOMPLMSK | ++ dwc2_writel((using_dma(hsotg) ? (DIEPMSK_XFERCOMPLMSK | + DIEPMSK_TIMEOUTMSK) : 0) | + DOEPMSK_EPDISBLDMSK | DOEPMSK_AHBERRMSK | + DOEPMSK_SETUPMSK, + hsotg->regs + DOEPMSK); + +- writel(0, hsotg->regs + DAINTMSK); ++ dwc2_writel(0, hsotg->regs + DAINTMSK); + + dev_dbg(hsotg->dev, "EP0: DIEPCTL0=0x%08x, DOEPCTL0=0x%08x\n", +- readl(hsotg->regs + DIEPCTL0), +- readl(hsotg->regs + DOEPCTL0)); ++ dwc2_readl(hsotg->regs + DIEPCTL0), ++ dwc2_readl(hsotg->regs + DOEPCTL0)); + + /* enable in and out endpoint interrupts */ + s3c_hsotg_en_gsint(hsotg, GINTSTS_OEPINT | GINTSTS_IEPINT); +@@ -2214,7 +2214,7 @@ + udelay(10); /* see openiboot */ + __bic32(hsotg->regs + DCTL, DCTL_PWRONPRGDONE); + +- dev_dbg(hsotg->dev, "DCTL=0x%08x\n", readl(hsotg->regs + DCTL)); ++ dev_dbg(hsotg->dev, "DCTL=0x%08x\n", dwc2_readl(hsotg->regs + DCTL)); + + /* + * DxEPCTL_USBActEp says RO in manual, but seems to be set by +@@ -2222,26 +2222,26 @@ + */ + + /* set to read 1 8byte packet */ +- writel(DXEPTSIZ_MC(1) | DXEPTSIZ_PKTCNT(1) | ++ dwc2_writel(DXEPTSIZ_MC(1) | DXEPTSIZ_PKTCNT(1) | + DXEPTSIZ_XFERSIZE(8), hsotg->regs + DOEPTSIZ0); + +- writel(s3c_hsotg_ep0_mps(hsotg->eps[0].ep.maxpacket) | ++ dwc2_writel(s3c_hsotg_ep0_mps(hsotg->eps[0].ep.maxpacket) | + DXEPCTL_CNAK | DXEPCTL_EPENA | + DXEPCTL_USBACTEP, + hsotg->regs + DOEPCTL0); + + /* enable, but don't activate EP0in */ +- writel(s3c_hsotg_ep0_mps(hsotg->eps[0].ep.maxpacket) | ++ dwc2_writel(s3c_hsotg_ep0_mps(hsotg->eps[0].ep.maxpacket) | + DXEPCTL_USBACTEP, hsotg->regs + DIEPCTL0); + + s3c_hsotg_enqueue_setup(hsotg); + + dev_dbg(hsotg->dev, "EP0: DIEPCTL0=0x%08x, DOEPCTL0=0x%08x\n", +- readl(hsotg->regs + DIEPCTL0), +- readl(hsotg->regs + DOEPCTL0)); ++ dwc2_readl(hsotg->regs + DIEPCTL0), ++ dwc2_readl(hsotg->regs + DOEPCTL0)); + + /* clear global NAKs */ +- writel(DCTL_CGOUTNAK | DCTL_CGNPINNAK, ++ dwc2_writel(DCTL_CGOUTNAK | DCTL_CGNPINNAK, + hsotg->regs + DCTL); + + /* must be at-least 3ms to allow bus to see disconnect */ +@@ -2265,8 +2265,8 @@ + + spin_lock(&hsotg->lock); + irq_retry: +- gintsts = readl(hsotg->regs + GINTSTS); +- gintmsk = readl(hsotg->regs + GINTMSK); ++ gintsts = dwc2_readl(hsotg->regs + GINTSTS); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + + dev_dbg(hsotg->dev, "%s: %08x %08x (%08x) retry %d\n", + __func__, gintsts, gintsts & gintmsk, gintmsk, retry_count); +@@ -2274,35 +2274,35 @@ + gintsts &= gintmsk; + + if (gintsts & GINTSTS_OTGINT) { +- u32 otgint = readl(hsotg->regs + GOTGINT); ++ u32 otgint = dwc2_readl(hsotg->regs + GOTGINT); + + dev_info(hsotg->dev, "OTGInt: %08x\n", otgint); + +- writel(otgint, hsotg->regs + GOTGINT); ++ dwc2_writel(otgint, hsotg->regs + GOTGINT); + } + + if (gintsts & GINTSTS_SESSREQINT) { + dev_dbg(hsotg->dev, "%s: SessReqInt\n", __func__); +- writel(GINTSTS_SESSREQINT, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_SESSREQINT, hsotg->regs + GINTSTS); + } + + if (gintsts & GINTSTS_ENUMDONE) { +- writel(GINTSTS_ENUMDONE, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_ENUMDONE, hsotg->regs + GINTSTS); + + s3c_hsotg_irq_enumdone(hsotg); + } + + if (gintsts & GINTSTS_CONIDSTSCHNG) { + dev_dbg(hsotg->dev, "ConIDStsChg (DSTS=0x%08x, GOTCTL=%08x)\n", +- readl(hsotg->regs + DSTS), +- readl(hsotg->regs + GOTGCTL)); ++ dwc2_readl(hsotg->regs + DSTS), ++ dwc2_readl(hsotg->regs + GOTGCTL)); + +- writel(GINTSTS_CONIDSTSCHNG, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_CONIDSTSCHNG, hsotg->regs + GINTSTS); + } + + if (gintsts & (GINTSTS_OEPINT | GINTSTS_IEPINT)) { +- u32 daint = readl(hsotg->regs + DAINT); +- u32 daintmsk = readl(hsotg->regs + DAINTMSK); ++ u32 daint = dwc2_readl(hsotg->regs + DAINT); ++ u32 daintmsk = dwc2_readl(hsotg->regs + DAINTMSK); + u32 daint_out, daint_in; + int ep; + +@@ -2325,13 +2325,13 @@ + + if (gintsts & GINTSTS_USBRST) { + +- u32 usb_status = readl(hsotg->regs + GOTGCTL); ++ u32 usb_status = dwc2_readl(hsotg->regs + GOTGCTL); + + dev_dbg(hsotg->dev, "%s: USBRst\n", __func__); + dev_dbg(hsotg->dev, "GNPTXSTS=%08x\n", +- readl(hsotg->regs + GNPTXSTS)); ++ dwc2_readl(hsotg->regs + GNPTXSTS)); + +- writel(GINTSTS_USBRST, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_USBRST, hsotg->regs + GINTSTS); + + if (usb_status & GOTGCTL_BSESVLD) { + if (time_after(jiffies, hsotg->last_rst + +@@ -2382,26 +2382,26 @@ + + if (gintsts & GINTSTS_MODEMIS) { + dev_warn(hsotg->dev, "warning, mode mismatch triggered\n"); +- writel(GINTSTS_MODEMIS, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_MODEMIS, hsotg->regs + GINTSTS); + } + + if (gintsts & GINTSTS_USBSUSP) { + dev_info(hsotg->dev, "GINTSTS_USBSusp\n"); +- writel(GINTSTS_USBSUSP, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_USBSUSP, hsotg->regs + GINTSTS); + + call_gadget(hsotg, suspend); + } + + if (gintsts & GINTSTS_WKUPINT) { + dev_info(hsotg->dev, "GINTSTS_WkUpIn\n"); +- writel(GINTSTS_WKUPINT, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_WKUPINT, hsotg->regs + GINTSTS); + + call_gadget(hsotg, resume); + } + + if (gintsts & GINTSTS_ERLYSUSP) { + dev_dbg(hsotg->dev, "GINTSTS_ErlySusp\n"); +- writel(GINTSTS_ERLYSUSP, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_ERLYSUSP, hsotg->regs + GINTSTS); + } + + /* +@@ -2413,7 +2413,7 @@ + if (gintsts & GINTSTS_GOUTNAKEFF) { + dev_info(hsotg->dev, "GOUTNakEff triggered\n"); + +- writel(DCTL_CGOUTNAK, hsotg->regs + DCTL); ++ dwc2_writel(DCTL_CGOUTNAK, hsotg->regs + DCTL); + + s3c_hsotg_dump(hsotg); + } +@@ -2421,7 +2421,7 @@ + if (gintsts & GINTSTS_GINNAKEFF) { + dev_info(hsotg->dev, "GINNakEff triggered\n"); + +- writel(DCTL_CGNPINNAK, hsotg->regs + DCTL); ++ dwc2_writel(DCTL_CGNPINNAK, hsotg->regs + DCTL); + + s3c_hsotg_dump(hsotg); + } +@@ -2479,7 +2479,7 @@ + /* note, we handle this here instead of s3c_hsotg_set_ep_maxpacket */ + + epctrl_reg = dir_in ? DIEPCTL(index) : DOEPCTL(index); +- epctrl = readl(hsotg->regs + epctrl_reg); ++ epctrl = dwc2_readl(hsotg->regs + epctrl_reg); + + dev_dbg(hsotg->dev, "%s: read DxEPCTL=0x%08x from 0x%08x\n", + __func__, epctrl, epctrl_reg); +@@ -2550,7 +2550,7 @@ + for (i = 1; i <= 8; ++i) { + if (hsotg->fifo_map & (1<<i)) + continue; +- val = readl(hsotg->regs + DPTXFSIZN(i)); ++ val = dwc2_readl(hsotg->regs + DPTXFSIZN(i)); + val = (val >> FIFOSIZE_DEPTH_SHIFT)*4; + if (val < size) + continue; +@@ -2574,9 +2574,9 @@ + dev_dbg(hsotg->dev, "%s: write DxEPCTL=0x%08x\n", + __func__, epctrl); + +- writel(epctrl, hsotg->regs + epctrl_reg); ++ dwc2_writel(epctrl, hsotg->regs + epctrl_reg); + dev_dbg(hsotg->dev, "%s: read DxEPCTL=0x%08x\n", +- __func__, readl(hsotg->regs + epctrl_reg)); ++ __func__, dwc2_readl(hsotg->regs + epctrl_reg)); + + /* enable the endpoint interrupt */ + s3c_hsotg_ctrl_epint(hsotg, index, dir_in, 1); +@@ -2617,13 +2617,13 @@ + hs_ep->fifo_index = 0; + hs_ep->fifo_size = 0; + +- ctrl = readl(hsotg->regs + epctrl_reg); ++ ctrl = dwc2_readl(hsotg->regs + epctrl_reg); + ctrl &= ~DXEPCTL_EPENA; + ctrl &= ~DXEPCTL_USBACTEP; + ctrl |= DXEPCTL_SNAK; + + dev_dbg(hsotg->dev, "%s: DxEPCTL=0x%08x\n", __func__, ctrl); +- writel(ctrl, hsotg->regs + epctrl_reg); ++ dwc2_writel(ctrl, hsotg->regs + epctrl_reg); + + /* disable endpoint interrupts */ + s3c_hsotg_ctrl_epint(hsotg, hs_ep->index, hs_ep->dir_in, 0); +@@ -2704,7 +2704,7 @@ + /* write both IN and OUT control registers */ + + epreg = DIEPCTL(index); +- epctl = readl(hs->regs + epreg); ++ epctl = dwc2_readl(hs->regs + epreg); + + if (value) { + epctl |= DXEPCTL_STALL + DXEPCTL_SNAK; +@@ -2718,10 +2718,10 @@ + epctl |= DXEPCTL_SETD0PID; + } + +- writel(epctl, hs->regs + epreg); ++ dwc2_writel(epctl, hs->regs + epreg); + + epreg = DOEPCTL(index); +- epctl = readl(hs->regs + epreg); ++ epctl = dwc2_readl(hs->regs + epreg); + + if (value) + epctl |= DXEPCTL_STALL; +@@ -2733,7 +2733,7 @@ + epctl |= DXEPCTL_SETD0PID; + } + +- writel(epctl, hs->regs + epreg); ++ dwc2_writel(epctl, hs->regs + epreg); + + hs_ep->halted = value; + +@@ -2822,38 +2822,38 @@ + { + /* unmask subset of endpoint interrupts */ + +- writel(DIEPMSK_TIMEOUTMSK | DIEPMSK_AHBERRMSK | ++ dwc2_writel(DIEPMSK_TIMEOUTMSK | DIEPMSK_AHBERRMSK | + DIEPMSK_EPDISBLDMSK | DIEPMSK_XFERCOMPLMSK, + hsotg->regs + DIEPMSK); + +- writel(DOEPMSK_SETUPMSK | DOEPMSK_AHBERRMSK | ++ dwc2_writel(DOEPMSK_SETUPMSK | DOEPMSK_AHBERRMSK | + DOEPMSK_EPDISBLDMSK | DOEPMSK_XFERCOMPLMSK, + hsotg->regs + DOEPMSK); + +- writel(0, hsotg->regs + DAINTMSK); ++ dwc2_writel(0, hsotg->regs + DAINTMSK); + + /* Be in disconnected state until gadget is registered */ + __orr32(hsotg->regs + DCTL, DCTL_SFTDISCON); + + if (0) { + /* post global nak until we're ready */ +- writel(DCTL_SGNPINNAK | DCTL_SGOUTNAK, ++ dwc2_writel(DCTL_SGNPINNAK | DCTL_SGOUTNAK, + hsotg->regs + DCTL); + } + + /* setup fifos */ + + dev_dbg(hsotg->dev, "GRXFSIZ=0x%08x, GNPTXFSIZ=0x%08x\n", +- readl(hsotg->regs + GRXFSIZ), +- readl(hsotg->regs + GNPTXFSIZ)); ++ dwc2_readl(hsotg->regs + GRXFSIZ), ++ dwc2_readl(hsotg->regs + GNPTXFSIZ)); + + s3c_hsotg_init_fifo(hsotg); + + /* set the PLL on, remove the HNP/SRP and set the PHY */ +- writel(GUSBCFG_PHYIF16 | GUSBCFG_TOUTCAL(7) | (0x5 << 10), ++ dwc2_writel(GUSBCFG_PHYIF16 | GUSBCFG_TOUTCAL(7) | (0x5 << 10), + hsotg->regs + GUSBCFG); + +- writel(using_dma(hsotg) ? GAHBCFG_DMA_EN : 0x0, ++ dwc2_writel(using_dma(hsotg) ? GAHBCFG_DMA_EN : 0x0, + hsotg->regs + GAHBCFG); + } + +@@ -3045,8 +3045,8 @@ + + if (using_dma(hsotg)) { + u32 next = DXEPCTL_NEXTEP((epnum + 1) % 15); +- writel(next, hsotg->regs + DIEPCTL(epnum)); +- writel(next, hsotg->regs + DOEPCTL(epnum)); ++ dwc2_writel(next, hsotg->regs + DIEPCTL(epnum)); ++ dwc2_writel(next, hsotg->regs + DOEPCTL(epnum)); + } + } + +@@ -3061,13 +3061,13 @@ + u32 cfg2, cfg3, cfg4; + /* check hardware configuration */ + +- cfg2 = readl(hsotg->regs + 0x48); ++ cfg2 = dwc2_readl(hsotg->regs + 0x48); + hsotg->num_of_eps = (cfg2 >> 10) & 0xF; + +- cfg3 = readl(hsotg->regs + 0x4C); ++ cfg3 = dwc2_readl(hsotg->regs + 0x4C); + hsotg->fifo_mem = (cfg3 >> 16); + +- cfg4 = readl(hsotg->regs + 0x50); ++ cfg4 = dwc2_readl(hsotg->regs + 0x50); + hsotg->dedicated_fifos = (cfg4 >> 25) & 1; + + dev_info(hsotg->dev, "EPs: %d, %s fifos, %d entries in SPRAM\n", +@@ -3089,19 +3089,19 @@ + int idx; + + dev_info(dev, "DCFG=0x%08x, DCTL=0x%08x, DIEPMSK=%08x\n", +- readl(regs + DCFG), readl(regs + DCTL), +- readl(regs + DIEPMSK)); ++ dwc2_readl(regs + DCFG), dwc2_readl(regs + DCTL), ++ dwc2_readl(regs + DIEPMSK)); + + dev_info(dev, "GAHBCFG=0x%08x, 0x44=0x%08x\n", +- readl(regs + GAHBCFG), readl(regs + 0x44)); ++ dwc2_readl(regs + GAHBCFG), dwc2_readl(regs + 0x44)); + + dev_info(dev, "GRXFSIZ=0x%08x, GNPTXFSIZ=0x%08x\n", +- readl(regs + GRXFSIZ), readl(regs + GNPTXFSIZ)); ++ dwc2_readl(regs + GRXFSIZ), dwc2_readl(regs + GNPTXFSIZ)); + + /* show periodic fifo settings */ + + for (idx = 1; idx <= 15; idx++) { +- val = readl(regs + DPTXFSIZN(idx)); ++ val = dwc2_readl(regs + DPTXFSIZN(idx)); + dev_info(dev, "DPTx[%d] FSize=%d, StAddr=0x%08x\n", idx, + val >> FIFOSIZE_DEPTH_SHIFT, + val & FIFOSIZE_STARTADDR_MASK); +@@ -3110,21 +3110,21 @@ + for (idx = 0; idx < 15; idx++) { + dev_info(dev, + "ep%d-in: EPCTL=0x%08x, SIZ=0x%08x, DMA=0x%08x\n", idx, +- readl(regs + DIEPCTL(idx)), +- readl(regs + DIEPTSIZ(idx)), +- readl(regs + DIEPDMA(idx))); ++ dwc2_readl(regs + DIEPCTL(idx)), ++ dwc2_readl(regs + DIEPTSIZ(idx)), ++ dwc2_readl(regs + DIEPDMA(idx))); + +- val = readl(regs + DOEPCTL(idx)); ++ val = dwc2_readl(regs + DOEPCTL(idx)); + dev_info(dev, + "ep%d-out: EPCTL=0x%08x, SIZ=0x%08x, DMA=0x%08x\n", +- idx, readl(regs + DOEPCTL(idx)), +- readl(regs + DOEPTSIZ(idx)), +- readl(regs + DOEPDMA(idx))); ++ idx, dwc2_readl(regs + DOEPCTL(idx)), ++ dwc2_readl(regs + DOEPTSIZ(idx)), ++ dwc2_readl(regs + DOEPDMA(idx))); + + } + + dev_info(dev, "DVBUSDIS=0x%08x, DVBUSPULSE=%08x\n", +- readl(regs + DVBUSDIS), readl(regs + DVBUSPULSE)); ++ dwc2_readl(regs + DVBUSDIS), dwc2_readl(regs + DVBUSPULSE)); + #endif + } + +@@ -3144,38 +3144,38 @@ + int idx; + + seq_printf(seq, "DCFG=0x%08x, DCTL=0x%08x, DSTS=0x%08x\n", +- readl(regs + DCFG), +- readl(regs + DCTL), +- readl(regs + DSTS)); ++ dwc2_readl(regs + DCFG), ++ dwc2_readl(regs + DCTL), ++ dwc2_readl(regs + DSTS)); + + seq_printf(seq, "DIEPMSK=0x%08x, DOEPMASK=0x%08x\n", +- readl(regs + DIEPMSK), readl(regs + DOEPMSK)); ++ dwc2_readl(regs + DIEPMSK), dwc2_readl(regs + DOEPMSK)); + + seq_printf(seq, "GINTMSK=0x%08x, GINTSTS=0x%08x\n", +- readl(regs + GINTMSK), +- readl(regs + GINTSTS)); ++ dwc2_readl(regs + GINTMSK), ++ dwc2_readl(regs + GINTSTS)); + + seq_printf(seq, "DAINTMSK=0x%08x, DAINT=0x%08x\n", +- readl(regs + DAINTMSK), +- readl(regs + DAINT)); ++ dwc2_readl(regs + DAINTMSK), ++ dwc2_readl(regs + DAINT)); + + seq_printf(seq, "GNPTXSTS=0x%08x, GRXSTSR=%08x\n", +- readl(regs + GNPTXSTS), +- readl(regs + GRXSTSR)); ++ dwc2_readl(regs + GNPTXSTS), ++ dwc2_readl(regs + GRXSTSR)); + + seq_puts(seq, "\nEndpoint status:\n"); + + for (idx = 0; idx < 15; idx++) { + u32 in, out; + +- in = readl(regs + DIEPCTL(idx)); +- out = readl(regs + DOEPCTL(idx)); ++ in = dwc2_readl(regs + DIEPCTL(idx)); ++ out = dwc2_readl(regs + DOEPCTL(idx)); + + seq_printf(seq, "ep%d: DIEPCTL=0x%08x, DOEPCTL=0x%08x", + idx, in, out); + +- in = readl(regs + DIEPTSIZ(idx)); +- out = readl(regs + DOEPTSIZ(idx)); ++ in = dwc2_readl(regs + DIEPTSIZ(idx)); ++ out = dwc2_readl(regs + DOEPTSIZ(idx)); + + seq_printf(seq, ", DIEPTSIZ=0x%08x, DOEPTSIZ=0x%08x", + in, out); +@@ -3215,9 +3215,9 @@ + int idx; + + seq_puts(seq, "Non-periodic FIFOs:\n"); +- seq_printf(seq, "RXFIFO: Size %d\n", readl(regs + GRXFSIZ)); ++ seq_printf(seq, "RXFIFO: Size %d\n", dwc2_readl(regs + GRXFSIZ)); + +- val = readl(regs + GNPTXFSIZ); ++ val = dwc2_readl(regs + GNPTXFSIZ); + seq_printf(seq, "NPTXFIFO: Size %d, Start 0x%08x\n", + val >> FIFOSIZE_DEPTH_SHIFT, + val & FIFOSIZE_DEPTH_MASK); +@@ -3225,7 +3225,7 @@ + seq_puts(seq, "\nPeriodic TXFIFOs:\n"); + + for (idx = 1; idx <= 15; idx++) { +- val = readl(regs + DPTXFSIZN(idx)); ++ val = dwc2_readl(regs + DPTXFSIZN(idx)); + + seq_printf(seq, "\tDPTXFIFO%2d: Size %d, Start 0x%08x\n", idx, + val >> FIFOSIZE_DEPTH_SHIFT, +@@ -3278,20 +3278,20 @@ + /* first show the register state */ + + seq_printf(seq, "\tDIEPCTL=0x%08x, DOEPCTL=0x%08x\n", +- readl(regs + DIEPCTL(index)), +- readl(regs + DOEPCTL(index))); ++ dwc2_readl(regs + DIEPCTL(index)), ++ dwc2_readl(regs + DOEPCTL(index))); + + seq_printf(seq, "\tDIEPDMA=0x%08x, DOEPDMA=0x%08x\n", +- readl(regs + DIEPDMA(index)), +- readl(regs + DOEPDMA(index))); ++ dwc2_readl(regs + DIEPDMA(index)), ++ dwc2_readl(regs + DOEPDMA(index))); + + seq_printf(seq, "\tDIEPINT=0x%08x, DOEPINT=0x%08x\n", +- readl(regs + DIEPINT(index)), +- readl(regs + DOEPINT(index))); ++ dwc2_readl(regs + DIEPINT(index)), ++ dwc2_readl(regs + DOEPINT(index))); + + seq_printf(seq, "\tDIEPTSIZ=0x%08x, DOEPTSIZ=0x%08x\n", +- readl(regs + DIEPTSIZ(index)), +- readl(regs + DOEPTSIZ(index))); ++ dwc2_readl(regs + DIEPTSIZ(index)), ++ dwc2_readl(regs + DOEPTSIZ(index))); + + seq_puts(seq, "\n"); + seq_printf(seq, "mps %d\n", ep->ep.maxpacket); +--- a/drivers/usb/dwc2/hcd.c 2015-02-06 16:53:48.000000000 +0200 ++++ b/drivers/usb/dwc2/hcd.c 2015-02-09 19:34:42.911106076 +0200 +@@ -80,10 +80,10 @@ + if (chan == NULL) + return; + +- hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num)); +- hcsplt = readl(hsotg->regs + HCSPLT(chan->hc_num)); +- hctsiz = readl(hsotg->regs + HCTSIZ(chan->hc_num)); +- hc_dma = readl(hsotg->regs + HCDMA(chan->hc_num)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(chan->hc_num)); ++ hcsplt = dwc2_readl(hsotg->regs + HCSPLT(chan->hc_num)); ++ hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(chan->hc_num)); ++ hc_dma = dwc2_readl(hsotg->regs + HCDMA(chan->hc_num)); + + dev_dbg(hsotg->dev, " Assigned to channel %p:\n", chan); + dev_dbg(hsotg->dev, " hcchar 0x%08x, hcsplt 0x%08x\n", +@@ -207,7 +207,7 @@ + */ + hprt0 = dwc2_read_hprt0(hsotg); + hprt0 |= HPRT0_RST; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + } + + queue_delayed_work(hsotg->wq_otg, &hsotg->start_work, +@@ -228,11 +228,11 @@ + channel = hsotg->hc_ptr_array[i]; + if (!list_empty(&channel->hc_list_entry)) + continue; +- hcchar = readl(hsotg->regs + HCCHAR(i)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(i)); + if (hcchar & HCCHAR_CHENA) { + hcchar &= ~(HCCHAR_CHENA | HCCHAR_EPDIR); + hcchar |= HCCHAR_CHDIS; +- writel(hcchar, hsotg->regs + HCCHAR(i)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(i)); + } + } + } +@@ -241,11 +241,11 @@ + channel = hsotg->hc_ptr_array[i]; + if (!list_empty(&channel->hc_list_entry)) + continue; +- hcchar = readl(hsotg->regs + HCCHAR(i)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(i)); + if (hcchar & HCCHAR_CHENA) { + /* Halt the channel */ + hcchar |= HCCHAR_CHDIS; +- writel(hcchar, hsotg->regs + HCCHAR(i)); ++ dwc2_writel(hcchar, hsotg->regs + HCCHAR(i)); + } + + dwc2_hc_cleanup(hsotg, channel); +@@ -279,11 +279,11 @@ + * interrupt mask and status bits and disabling subsequent host + * channel interrupts. + */ +- intr = readl(hsotg->regs + GINTMSK); ++ intr = dwc2_readl(hsotg->regs + GINTMSK); + intr &= ~(GINTSTS_NPTXFEMP | GINTSTS_PTXFEMP | GINTSTS_HCHINT); +- writel(intr, hsotg->regs + GINTMSK); ++ dwc2_writel(intr, hsotg->regs + GINTMSK); + intr = GINTSTS_NPTXFEMP | GINTSTS_PTXFEMP | GINTSTS_HCHINT; +- writel(intr, hsotg->regs + GINTSTS); ++ dwc2_writel(intr, hsotg->regs + GINTSTS); + + /* + * Turn off the vbus power only if the core has transitioned to device +@@ -293,7 +293,7 @@ + if (dwc2_is_device_mode(hsotg)) { + if (hsotg->op_state != OTG_STATE_A_SUSPEND) { + dev_dbg(hsotg->dev, "Disconnect: PortPower off\n"); +- writel(0, hsotg->regs + HPRT0); ++ dwc2_writel(0, hsotg->regs + HPRT0); + } + + dwc2_disable_host_interrupts(hsotg); +@@ -344,7 +344,7 @@ + + /* Turn off the vbus power */ + dev_dbg(hsotg->dev, "PortPower off\n"); +- writel(0, hsotg->regs + HPRT0); ++ dwc2_writel(0, hsotg->regs + HPRT0); + } + + static int dwc2_hcd_urb_enqueue(struct dwc2_hsotg *hsotg, +@@ -369,7 +369,7 @@ + if ((dev_speed == USB_SPEED_LOW) && + (hsotg->hw_params.fs_phy_type == GHWCFG2_FS_PHY_TYPE_DEDICATED) && + (hsotg->hw_params.hs_phy_type == GHWCFG2_HS_PHY_TYPE_UTMI)) { +- u32 hprt0 = readl(hsotg->regs + HPRT0); ++ u32 hprt0 = dwc2_readl(hsotg->regs + HPRT0); + u32 prtspd = (hprt0 & HPRT0_SPD_MASK) >> HPRT0_SPD_SHIFT; + + if (prtspd == HPRT0_SPD_FULL_SPEED) +@@ -391,7 +391,7 @@ + return retval; + } + +- intr_mask = readl(hsotg->regs + GINTMSK); ++ intr_mask = dwc2_readl(hsotg->regs + GINTMSK); + if (!(intr_mask & GINTSTS_SOF)) { + enum dwc2_transaction_type tr_type; + +@@ -1059,7 +1059,7 @@ + if (dbg_perio()) + dev_vdbg(hsotg->dev, "Queue periodic transactions\n"); + +- tx_status = readl(hsotg->regs + HPTXSTS); ++ tx_status = dwc2_readl(hsotg->regs + HPTXSTS); + qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >> + TXSTS_QSPCAVAIL_SHIFT; + fspcavail = (tx_status & TXSTS_FSPCAVAIL_MASK) >> +@@ -1074,7 +1074,7 @@ + + qh_ptr = hsotg->periodic_sched_assigned.next; + while (qh_ptr != &hsotg->periodic_sched_assigned) { +- tx_status = readl(hsotg->regs + HPTXSTS); ++ tx_status = dwc2_readl(hsotg->regs + HPTXSTS); + qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >> + TXSTS_QSPCAVAIL_SHIFT; + if (qspcavail == 0) { +@@ -1134,7 +1134,7 @@ + } + + if (hsotg->core_params->dma_enable <= 0) { +- tx_status = readl(hsotg->regs + HPTXSTS); ++ tx_status = dwc2_readl(hsotg->regs + HPTXSTS); + qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >> + TXSTS_QSPCAVAIL_SHIFT; + fspcavail = (tx_status & TXSTS_FSPCAVAIL_MASK) >> +@@ -1157,9 +1157,9 @@ + * level to ensure that new requests are loaded as + * soon as possible.) + */ +- gintmsk = readl(hsotg->regs + GINTMSK); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + gintmsk |= GINTSTS_PTXFEMP; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + } else { + /* + * Disable the Tx FIFO empty interrupt since there are +@@ -1168,9 +1168,9 @@ + * handlers to queue more transactions as transfer + * states change. + */ +- gintmsk = readl(hsotg->regs + GINTMSK); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + gintmsk &= ~GINTSTS_PTXFEMP; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + } + } + } +@@ -1199,7 +1199,7 @@ + + dev_vdbg(hsotg->dev, "Queue non-periodic transactions\n"); + +- tx_status = readl(hsotg->regs + GNPTXSTS); ++ tx_status = dwc2_readl(hsotg->regs + GNPTXSTS); + qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >> + TXSTS_QSPCAVAIL_SHIFT; + fspcavail = (tx_status & TXSTS_FSPCAVAIL_MASK) >> +@@ -1222,7 +1222,7 @@ + * available in the request queue or the Tx FIFO + */ + do { +- tx_status = readl(hsotg->regs + GNPTXSTS); ++ tx_status = dwc2_readl(hsotg->regs + GNPTXSTS); + qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >> + TXSTS_QSPCAVAIL_SHIFT; + if (hsotg->core_params->dma_enable <= 0 && qspcavail == 0) { +@@ -1259,7 +1259,7 @@ + } while (hsotg->non_periodic_qh_ptr != orig_qh_ptr); + + if (hsotg->core_params->dma_enable <= 0) { +- tx_status = readl(hsotg->regs + GNPTXSTS); ++ tx_status = dwc2_readl(hsotg->regs + GNPTXSTS); + qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >> + TXSTS_QSPCAVAIL_SHIFT; + fspcavail = (tx_status & TXSTS_FSPCAVAIL_MASK) >> +@@ -1279,9 +1279,9 @@ + * level to ensure that new requests are loaded as + * soon as possible.) + */ +- gintmsk = readl(hsotg->regs + GINTMSK); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + gintmsk |= GINTSTS_NPTXFEMP; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + } else { + /* + * Disable the Tx FIFO empty interrupt since there are +@@ -1290,9 +1290,9 @@ + * handlers to queue more transactions as transfer + * states change. + */ +- gintmsk = readl(hsotg->regs + GINTMSK); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + gintmsk &= ~GINTSTS_NPTXFEMP; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + } + } + } +@@ -1330,10 +1330,10 @@ + * Ensure NP Tx FIFO empty interrupt is disabled when + * there are no non-periodic transfers to process + */ +- u32 gintmsk = readl(hsotg->regs + GINTMSK); ++ u32 gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + + gintmsk &= ~GINTSTS_NPTXFEMP; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + } + } + } +@@ -1347,7 +1347,7 @@ + + dev_dbg(hsotg->dev, "%s()\n", __func__); + +- gotgctl = readl(hsotg->regs + GOTGCTL); ++ gotgctl = dwc2_readl(hsotg->regs + GOTGCTL); + dev_dbg(hsotg->dev, "gotgctl=%0x\n", gotgctl); + dev_dbg(hsotg->dev, "gotgctl.b.conidsts=%d\n", + !!(gotgctl & GOTGCTL_CONID_B)); +@@ -1408,9 +1408,9 @@ + hprt0 = dwc2_read_hprt0(hsotg); + dev_dbg(hsotg->dev, "Resume: HPRT0=%0x\n", hprt0); + hprt0 &= ~HPRT0_RES; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + dev_dbg(hsotg->dev, "Clear Resume: HPRT0=%0x\n", +- readl(hsotg->regs + HPRT0)); ++ dwc2_readl(hsotg->regs + HPRT0)); + + dwc2_hcd_rem_wakeup(hsotg); + +@@ -1438,30 +1438,30 @@ + spin_lock_irqsave(&hsotg->lock, flags); + + if (windex == hsotg->otg_port && dwc2_host_is_b_hnp_enabled(hsotg)) { +- gotgctl = readl(hsotg->regs + GOTGCTL); ++ gotgctl = dwc2_readl(hsotg->regs + GOTGCTL); + gotgctl |= GOTGCTL_HSTSETHNPEN; +- writel(gotgctl, hsotg->regs + GOTGCTL); ++ dwc2_writel(gotgctl, hsotg->regs + GOTGCTL); + hsotg->op_state = OTG_STATE_A_SUSPEND; + } + + hprt0 = dwc2_read_hprt0(hsotg); + hprt0 |= HPRT0_SUSP; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + + /* Update lx_state */ + hsotg->lx_state = DWC2_L2; + + /* Suspend the Phy Clock */ +- pcgctl = readl(hsotg->regs + PCGCTL); ++ pcgctl = dwc2_readl(hsotg->regs + PCGCTL); + pcgctl |= PCGCTL_STOPPCLK; +- writel(pcgctl, hsotg->regs + PCGCTL); ++ dwc2_writel(pcgctl, hsotg->regs + PCGCTL); + udelay(10); + + /* For HNP the bus must be suspended for at least 200ms */ + if (dwc2_host_is_b_hnp_enabled(hsotg)) { +- pcgctl = readl(hsotg->regs + PCGCTL); ++ pcgctl = dwc2_readl(hsotg->regs + PCGCTL); + pcgctl &= ~PCGCTL_STOPPCLK; +- writel(pcgctl, hsotg->regs + PCGCTL); ++ dwc2_writel(pcgctl, hsotg->regs + PCGCTL); + + spin_unlock_irqrestore(&hsotg->lock, flags); + +@@ -1510,23 +1510,23 @@ + "ClearPortFeature USB_PORT_FEAT_ENABLE\n"); + hprt0 = dwc2_read_hprt0(hsotg); + hprt0 |= HPRT0_ENA; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + break; + + case USB_PORT_FEAT_SUSPEND: + dev_dbg(hsotg->dev, + "ClearPortFeature USB_PORT_FEAT_SUSPEND\n"); +- writel(0, hsotg->regs + PCGCTL); ++ dwc2_writel(0, hsotg->regs + PCGCTL); + usleep_range(20000, 40000); + + hprt0 = dwc2_read_hprt0(hsotg); + hprt0 |= HPRT0_RES; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + hprt0 &= ~HPRT0_SUSP; + usleep_range(100000, 150000); + + hprt0 &= ~HPRT0_RES; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + break; + + case USB_PORT_FEAT_POWER: +@@ -1534,7 +1534,7 @@ + "ClearPortFeature USB_PORT_FEAT_POWER\n"); + hprt0 = dwc2_read_hprt0(hsotg); + hprt0 &= ~HPRT0_PWR; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + break; + + case USB_PORT_FEAT_INDICATOR: +@@ -1653,7 +1653,7 @@ + break; + } + +- hprt0 = readl(hsotg->regs + HPRT0); ++ hprt0 = dwc2_readl(hsotg->regs + HPRT0); + dev_vdbg(hsotg->dev, " HPRT0: 0x%08x\n", hprt0); + + if (hprt0 & HPRT0_CONNSTS) +@@ -1718,18 +1718,18 @@ + "SetPortFeature - USB_PORT_FEAT_POWER\n"); + hprt0 = dwc2_read_hprt0(hsotg); + hprt0 |= HPRT0_PWR; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + break; + + case USB_PORT_FEAT_RESET: + hprt0 = dwc2_read_hprt0(hsotg); + dev_dbg(hsotg->dev, + "SetPortFeature - USB_PORT_FEAT_RESET\n"); +- pcgctl = readl(hsotg->regs + PCGCTL); ++ pcgctl = dwc2_readl(hsotg->regs + PCGCTL); + pcgctl &= ~(PCGCTL_ENBL_SLEEP_GATING | PCGCTL_STOPPCLK); +- writel(pcgctl, hsotg->regs + PCGCTL); ++ dwc2_writel(pcgctl, hsotg->regs + PCGCTL); + /* ??? Original driver does this */ +- writel(0, hsotg->regs + PCGCTL); ++ dwc2_writel(0, hsotg->regs + PCGCTL); + + hprt0 = dwc2_read_hprt0(hsotg); + /* Clear suspend bit if resetting from suspend state */ +@@ -1744,13 +1744,13 @@ + hprt0 |= HPRT0_PWR | HPRT0_RST; + dev_dbg(hsotg->dev, + "In host mode, hprt0=%08x\n", hprt0); +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + } + + /* Clear reset bit in 10ms (FS/LS) or 50ms (HS) */ + usleep_range(50000, 70000); + hprt0 &= ~HPRT0_RST; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + hsotg->lx_state = DWC2_L0; /* Now back to On state */ + break; + +@@ -1814,7 +1814,7 @@ + + int dwc2_hcd_get_frame_number(struct dwc2_hsotg *hsotg) + { +- u32 hfnum = readl(hsotg->regs + HFNUM); ++ u32 hfnum = dwc2_readl(hsotg->regs + HFNUM); + + #ifdef DWC2_DEBUG_SOF + dev_vdbg(hsotg->dev, "DWC OTG HCD GET FRAME NUMBER %d\n", +@@ -1917,11 +1917,11 @@ + if (chan->xfer_started) { + u32 hfnum, hcchar, hctsiz, hcint, hcintmsk; + +- hfnum = readl(hsotg->regs + HFNUM); +- hcchar = readl(hsotg->regs + HCCHAR(i)); +- hctsiz = readl(hsotg->regs + HCTSIZ(i)); +- hcint = readl(hsotg->regs + HCINT(i)); +- hcintmsk = readl(hsotg->regs + HCINTMSK(i)); ++ hfnum = dwc2_readl(hsotg->regs + HFNUM); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(i)); ++ hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(i)); ++ hcint = dwc2_readl(hsotg->regs + HCINT(i)); ++ hcintmsk = dwc2_readl(hsotg->regs + HCINTMSK(i)); + dev_dbg(hsotg->dev, " hfnum: 0x%08x\n", hfnum); + dev_dbg(hsotg->dev, " hcchar: 0x%08x\n", hcchar); + dev_dbg(hsotg->dev, " hctsiz: 0x%08x\n", hctsiz); +@@ -1969,12 +1969,12 @@ + dev_dbg(hsotg->dev, " periodic_channels: %d\n", + hsotg->periodic_channels); + dev_dbg(hsotg->dev, " periodic_usecs: %d\n", hsotg->periodic_usecs); +- np_tx_status = readl(hsotg->regs + GNPTXSTS); ++ np_tx_status = dwc2_readl(hsotg->regs + GNPTXSTS); + dev_dbg(hsotg->dev, " NP Tx Req Queue Space Avail: %d\n", + (np_tx_status & TXSTS_QSPCAVAIL_MASK) >> TXSTS_QSPCAVAIL_SHIFT); + dev_dbg(hsotg->dev, " NP Tx FIFO Space Avail: %d\n", + (np_tx_status & TXSTS_FSPCAVAIL_MASK) >> TXSTS_FSPCAVAIL_SHIFT); +- p_tx_status = readl(hsotg->regs + HPTXSTS); ++ p_tx_status = dwc2_readl(hsotg->regs + HPTXSTS); + dev_dbg(hsotg->dev, " P Tx Req Queue Space Avail: %d\n", + (p_tx_status & TXSTS_QSPCAVAIL_MASK) >> TXSTS_QSPCAVAIL_SHIFT); + dev_dbg(hsotg->dev, " P Tx FIFO Space Avail: %d\n", +@@ -2238,7 +2238,7 @@ + dev_dbg(hsotg->dev, "USB RESET function called\n"); + hprt0 = dwc2_read_hprt0(hsotg); + hprt0 &= ~HPRT0_RST; +- writel(hprt0, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0, hsotg->regs + HPRT0); + hsotg->flags.b.port_reset_change = 1; + } + +@@ -2715,17 +2715,17 @@ + hsotg->status_buf = NULL; + } + +- ahbcfg = readl(hsotg->regs + GAHBCFG); ++ ahbcfg = dwc2_readl(hsotg->regs + GAHBCFG); + + /* Disable all interrupts */ + ahbcfg &= ~GAHBCFG_GLBL_INTR_EN; +- writel(ahbcfg, hsotg->regs + GAHBCFG); +- writel(0, hsotg->regs + GINTMSK); ++ dwc2_writel(ahbcfg, hsotg->regs + GAHBCFG); ++ dwc2_writel(0, hsotg->regs + GINTMSK); + + if (hsotg->hw_params.snpsid >= DWC2_CORE_REV_3_00a) { +- dctl = readl(hsotg->regs + DCTL); ++ dctl = dwc2_readl(hsotg->regs + DCTL); + dctl |= DCTL_SFTDISCON; +- writel(dctl, hsotg->regs + DCTL); ++ dwc2_writel(dctl, hsotg->regs + DCTL); + } + + if (hsotg->wq_otg) { +@@ -2788,7 +2788,7 @@ + + retval = -ENOMEM; + +- hcfg = readl(hsotg->regs + HCFG); ++ hcfg = dwc2_readl(hsotg->regs + HCFG); + dev_dbg(hsotg->dev, "hcfg=%08x\n", hcfg); + + #ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS +--- a/drivers/usb/dwc2/hcd_ddma.c 2015-02-06 16:53:48.000000000 +0200 ++++ b/drivers/usb/dwc2/hcd_ddma.c 2015-02-09 19:34:42.921106076 +0200 +@@ -169,19 +169,19 @@ + + spin_lock_irqsave(&hsotg->lock, flags); + +- hcfg = readl(hsotg->regs + HCFG); ++ hcfg = dwc2_readl(hsotg->regs + HCFG); + if (hcfg & HCFG_PERSCHEDENA) { + /* already enabled */ + spin_unlock_irqrestore(&hsotg->lock, flags); + return; + } + +- writel(hsotg->frame_list_dma, hsotg->regs + HFLBADDR); ++ dwc2_writel(hsotg->frame_list_dma, hsotg->regs + HFLBADDR); + + hcfg &= ~HCFG_FRLISTEN_MASK; + hcfg |= fr_list_en | HCFG_PERSCHEDENA; + dev_vdbg(hsotg->dev, "Enabling Periodic schedule\n"); +- writel(hcfg, hsotg->regs + HCFG); ++ dwc2_writel(hcfg, hsotg->regs + HCFG); + + spin_unlock_irqrestore(&hsotg->lock, flags); + } +@@ -193,7 +193,7 @@ + + spin_lock_irqsave(&hsotg->lock, flags); + +- hcfg = readl(hsotg->regs + HCFG); ++ hcfg = dwc2_readl(hsotg->regs + HCFG); + if (!(hcfg & HCFG_PERSCHEDENA)) { + /* already disabled */ + spin_unlock_irqrestore(&hsotg->lock, flags); +@@ -202,7 +202,7 @@ + + hcfg &= ~HCFG_PERSCHEDENA; + dev_vdbg(hsotg->dev, "Disabling Periodic schedule\n"); +- writel(hcfg, hsotg->regs + HCFG); ++ dwc2_writel(hcfg, hsotg->regs + HCFG); + + spin_unlock_irqrestore(&hsotg->lock, flags); + } +--- a/drivers/usb/dwc2/hcd.h 2015-02-06 16:53:48.000000000 +0200 ++++ b/drivers/usb/dwc2/hcd.h 2015-02-09 19:34:42.949106077 +0200 +@@ -371,10 +371,10 @@ + */ + static inline void disable_hc_int(struct dwc2_hsotg *hsotg, int chnum, u32 intr) + { +- u32 mask = readl(hsotg->regs + HCINTMSK(chnum)); ++ u32 mask = dwc2_readl(hsotg->regs + HCINTMSK(chnum)); + + mask &= ~intr; +- writel(mask, hsotg->regs + HCINTMSK(chnum)); ++ dwc2_writel(mask, hsotg->regs + HCINTMSK(chnum)); + } + + /* +@@ -382,11 +382,11 @@ + */ + static inline int dwc2_is_host_mode(struct dwc2_hsotg *hsotg) + { +- return (readl(hsotg->regs + GINTSTS) & GINTSTS_CURMODE_HOST) != 0; ++ return (dwc2_readl(hsotg->regs + GINTSTS) & GINTSTS_CURMODE_HOST) != 0; + } + static inline int dwc2_is_device_mode(struct dwc2_hsotg *hsotg) + { +- return (readl(hsotg->regs + GINTSTS) & GINTSTS_CURMODE_HOST) == 0; ++ return (dwc2_readl(hsotg->regs + GINTSTS) & GINTSTS_CURMODE_HOST) == 0; + } + + /* +@@ -395,7 +395,7 @@ + */ + static inline u32 dwc2_read_hprt0(struct dwc2_hsotg *hsotg) + { +- u32 hprt0 = readl(hsotg->regs + HPRT0); ++ u32 hprt0 = dwc2_readl(hsotg->regs + HPRT0); + + hprt0 &= ~(HPRT0_ENA | HPRT0_CONNDET | HPRT0_ENACHG | HPRT0_OVRCURRCHG); + return hprt0; +@@ -582,7 +582,7 @@ + */ + static inline u32 dwc2_read_core_intr(struct dwc2_hsotg *hsotg) + { +- return readl(hsotg->regs + GINTSTS) & readl(hsotg->regs + GINTMSK); ++ return dwc2_readl(hsotg->regs + GINTSTS) & dwc2_readl(hsotg->regs + GINTMSK); + } + + static inline u32 dwc2_hcd_urb_get_status(struct dwc2_hcd_urb *dwc2_urb) +@@ -744,7 +744,7 @@ + qtd_list_entry); \ + if (usb_pipeint(_qtd_->urb->pipe) && \ + (_qh_)->start_split_frame != 0 && !_qtd_->complete_split) { \ +- _hfnum_.d32 = readl((_hcd_)->regs + HFNUM); \ ++ _hfnum_.d32 = dwc2_readl((_hcd_)->regs + HFNUM); \ + switch (_hfnum_.b.frnum & 0x7) { \ + case 7: \ + (_hcd_)->hfnum_7_samples_##_letter_++; \ +--- a/drivers/usb/dwc2/hcd_intr.c 2015-02-06 16:53:48.000000000 +0200 ++++ b/drivers/usb/dwc2/hcd_intr.c 2015-02-09 19:34:42.935106077 +0200 +@@ -148,7 +148,7 @@ + dwc2_hcd_queue_transactions(hsotg, tr_type); + + /* Clear interrupt */ +- writel(GINTSTS_SOF, hsotg->regs + GINTSTS); ++ dwc2_writel(GINTSTS_SOF, hsotg->regs + GINTSTS); + } + + /* +@@ -164,7 +164,7 @@ + if (dbg_perio()) + dev_vdbg(hsotg->dev, "--RxFIFO Level Interrupt--\n"); + +- grxsts = readl(hsotg->regs + GRXSTSP); ++ grxsts = dwc2_readl(hsotg->regs + GRXSTSP); + chnum = (grxsts & GRXSTS_HCHNUM_MASK) >> GRXSTS_HCHNUM_SHIFT; + chan = hsotg->hc_ptr_array[chnum]; + if (!chan) { +@@ -247,11 +247,11 @@ + dev_vdbg(hsotg->dev, "%s(%p)\n", __func__, hsotg); + + /* Every time when port enables calculate HFIR.FrInterval */ +- hfir = readl(hsotg->regs + HFIR); ++ hfir = dwc2_readl(hsotg->regs + HFIR); + hfir &= ~HFIR_FRINT_MASK; + hfir |= dwc2_calc_frame_interval(hsotg) << HFIR_FRINT_SHIFT & + HFIR_FRINT_MASK; +- writel(hfir, hsotg->regs + HFIR); ++ dwc2_writel(hfir, hsotg->regs + HFIR); + + /* Check if we need to adjust the PHY clock speed for low power */ + if (!params->host_support_fs_ls_low_power) { +@@ -260,7 +260,7 @@ + return; + } + +- usbcfg = readl(hsotg->regs + GUSBCFG); ++ usbcfg = dwc2_readl(hsotg->regs + GUSBCFG); + prtspd = (hprt0 & HPRT0_SPD_MASK) >> HPRT0_SPD_SHIFT; + + if (prtspd == HPRT0_SPD_LOW_SPEED || prtspd == HPRT0_SPD_FULL_SPEED) { +@@ -268,11 +268,11 @@ + if (!(usbcfg & GUSBCFG_PHY_LP_CLK_SEL)) { + /* Set PHY low power clock select for FS/LS devices */ + usbcfg |= GUSBCFG_PHY_LP_CLK_SEL; +- writel(usbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(usbcfg, hsotg->regs + GUSBCFG); + do_reset = 1; + } + +- hcfg = readl(hsotg->regs + HCFG); ++ hcfg = dwc2_readl(hsotg->regs + HCFG); + fslspclksel = (hcfg & HCFG_FSLSPCLKSEL_MASK) >> + HCFG_FSLSPCLKSEL_SHIFT; + +@@ -286,7 +286,7 @@ + fslspclksel = HCFG_FSLSPCLKSEL_6_MHZ; + hcfg &= ~HCFG_FSLSPCLKSEL_MASK; + hcfg |= fslspclksel << HCFG_FSLSPCLKSEL_SHIFT; +- writel(hcfg, hsotg->regs + HCFG); ++ dwc2_writel(hcfg, hsotg->regs + HCFG); + do_reset = 1; + } + } else { +@@ -297,7 +297,7 @@ + fslspclksel = HCFG_FSLSPCLKSEL_48_MHZ; + hcfg &= ~HCFG_FSLSPCLKSEL_MASK; + hcfg |= fslspclksel << HCFG_FSLSPCLKSEL_SHIFT; +- writel(hcfg, hsotg->regs + HCFG); ++ dwc2_writel(hcfg, hsotg->regs + HCFG); + do_reset = 1; + } + } +@@ -305,7 +305,7 @@ + /* Not low power */ + if (usbcfg & GUSBCFG_PHY_LP_CLK_SEL) { + usbcfg &= ~GUSBCFG_PHY_LP_CLK_SEL; +- writel(usbcfg, hsotg->regs + GUSBCFG); ++ dwc2_writel(usbcfg, hsotg->regs + GUSBCFG); + do_reset = 1; + } + } +@@ -332,7 +332,7 @@ + + dev_vdbg(hsotg->dev, "--Port Interrupt--\n"); + +- hprt0 = readl(hsotg->regs + HPRT0); ++ hprt0 = dwc2_readl(hsotg->regs + HPRT0); + hprt0_modify = hprt0; + + /* +@@ -385,7 +385,7 @@ + } + + /* Clear Port Interrupts */ +- writel(hprt0_modify, hsotg->regs + HPRT0); ++ dwc2_writel(hprt0_modify, hsotg->regs + HPRT0); + } + + /* +@@ -405,7 +405,7 @@ + { + u32 hctsiz, count, length; + +- hctsiz = readl(hsotg->regs + HCTSIZ(chnum)); ++ hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(chnum)); + + if (halt_status == DWC2_HC_XFER_COMPLETE) { + if (chan->ep_is_in) { +@@ -483,7 +483,7 @@ + urb->status = 0; + } + +- hctsiz = readl(hsotg->regs + HCTSIZ(chnum)); ++ hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(chnum)); + dev_vdbg(hsotg->dev, "DWC_otg: %s: %s, channel %d\n", + __func__, (chan->ep_is_in ? "IN" : "OUT"), chnum); + dev_vdbg(hsotg->dev, " chan->xfer_len %d\n", chan->xfer_len); +@@ -506,7 +506,7 @@ + struct dwc2_host_chan *chan, int chnum, + struct dwc2_qtd *qtd) + { +- u32 hctsiz = readl(hsotg->regs + HCTSIZ(chnum)); ++ u32 hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(chnum)); + u32 pid = (hctsiz & TSIZ_SC_MC_PID_MASK) >> TSIZ_SC_MC_PID_SHIFT; + + if (chan->ep_type != USB_ENDPOINT_XFER_CONTROL) { +@@ -753,9 +753,9 @@ + } + } + +- haintmsk = readl(hsotg->regs + HAINTMSK); ++ haintmsk = dwc2_readl(hsotg->regs + HAINTMSK); + haintmsk &= ~(1 << chan->hc_num); +- writel(haintmsk, hsotg->regs + HAINTMSK); ++ dwc2_writel(haintmsk, hsotg->regs + HAINTMSK); + + /* Try to queue more transfers now that there's a free channel */ + tr_type = dwc2_hcd_select_transactions(hsotg); +@@ -802,9 +802,9 @@ + * is enabled so that the non-periodic schedule will + * be processed + */ +- gintmsk = readl(hsotg->regs + GINTMSK); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + gintmsk |= GINTSTS_NPTXFEMP; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + } else { + dev_vdbg(hsotg->dev, "isoc/intr\n"); + /* +@@ -821,9 +821,9 @@ + * enabled so that the periodic schedule will be + * processed + */ +- gintmsk = readl(hsotg->regs + GINTMSK); ++ gintmsk = dwc2_readl(hsotg->regs + GINTMSK); + gintmsk |= GINTSTS_PTXFEMP; +- writel(gintmsk, hsotg->regs + GINTMSK); ++ dwc2_writel(gintmsk, hsotg->regs + GINTMSK); + } + } + } +@@ -888,7 +888,7 @@ + struct dwc2_qtd *qtd, + enum dwc2_halt_status halt_status) + { +- u32 hctsiz = readl(hsotg->regs + HCTSIZ(chnum)); ++ u32 hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(chnum)); + + qtd->error_count = 0; + +@@ -1158,7 +1158,7 @@ + + urb->actual_length += xfer_length; + +- hctsiz = readl(hsotg->regs + HCTSIZ(chnum)); ++ hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(chnum)); + dev_vdbg(hsotg->dev, "DWC_otg: %s: %s, channel %d\n", + __func__, (chan->ep_is_in ? "IN" : "OUT"), chnum); + dev_vdbg(hsotg->dev, " chan->start_pkt_count %d\n", +@@ -1469,10 +1469,10 @@ + + dwc2_hc_handle_tt_clear(hsotg, chan, qtd); + +- hcchar = readl(hsotg->regs + HCCHAR(chnum)); +- hcsplt = readl(hsotg->regs + HCSPLT(chnum)); +- hctsiz = readl(hsotg->regs + HCTSIZ(chnum)); +- hc_dma = readl(hsotg->regs + HCDMA(chnum)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(chnum)); ++ hcsplt = dwc2_readl(hsotg->regs + HCSPLT(chnum)); ++ hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(chnum)); ++ hc_dma = dwc2_readl(hsotg->regs + HCDMA(chnum)); + + dev_err(hsotg->dev, "AHB ERROR, Channel %d\n", chnum); + dev_err(hsotg->dev, " hcchar 0x%08x, hcsplt 0x%08x\n", hcchar, hcsplt); +@@ -1685,10 +1685,10 @@ + * This code is here only as a check. This condition should + * never happen. Ignore the halt if it does occur. + */ +- hcchar = readl(hsotg->regs + HCCHAR(chnum)); +- hctsiz = readl(hsotg->regs + HCTSIZ(chnum)); +- hcintmsk = readl(hsotg->regs + HCINTMSK(chnum)); +- hcsplt = readl(hsotg->regs + HCSPLT(chnum)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(chnum)); ++ hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(chnum)); ++ hcintmsk = dwc2_readl(hsotg->regs + HCINTMSK(chnum)); ++ hcsplt = dwc2_readl(hsotg->regs + HCSPLT(chnum)); + dev_dbg(hsotg->dev, + "%s: chan->halt_status DWC2_HC_XFER_NO_HALT_STATUS,\n", + __func__); +@@ -1712,7 +1712,7 @@ + * when the halt interrupt occurs. Halt the channel again if it does + * occur. + */ +- hcchar = readl(hsotg->regs + HCCHAR(chnum)); ++ hcchar = dwc2_readl(hsotg->regs + HCCHAR(chnum)); + if (hcchar & HCCHAR_CHDIS) { + dev_warn(hsotg->dev, + "%s: hcchar.chdis set unexpectedly, hcchar 0x%08x, trying to halt again\n", +@@ -1772,7 +1772,7 @@ + return; + } + +- hcintmsk = readl(hsotg->regs + HCINTMSK(chnum)); ++ hcintmsk = dwc2_readl(hsotg->regs + HCINTMSK(chnum)); + + if (chan->hcint & HCINTMSK_XFERCOMPL) { + /* +@@ -1867,7 +1867,7 @@ + dev_err(hsotg->dev, + "hcint 0x%08x, intsts 0x%08x\n", + chan->hcint, +- readl(hsotg->regs + GINTSTS)); ++ dwc2_readl(hsotg->regs + GINTSTS)); + goto error; + } + } +@@ -1922,11 +1922,11 @@ + + chan = hsotg->hc_ptr_array[chnum]; + +- hcint = readl(hsotg->regs + HCINT(chnum)); +- hcintmsk = readl(hsotg->regs + HCINTMSK(chnum)); ++ hcint = dwc2_readl(hsotg->regs + HCINT(chnum)); ++ hcintmsk = dwc2_readl(hsotg->regs + HCINTMSK(chnum)); + if (!chan) { + dev_err(hsotg->dev, "## hc_ptr_array for channel is NULL ##\n"); +- writel(hcint, hsotg->regs + HCINT(chnum)); ++ dwc2_writel(hcint, hsotg->regs + HCINT(chnum)); + return; + } + +@@ -1938,7 +1938,7 @@ + hcint, hcintmsk, hcint & hcintmsk); + } + +- writel(hcint, hsotg->regs + HCINT(chnum)); ++ dwc2_writel(hcint, hsotg->regs + HCINT(chnum)); + chan->hcint = hcint; + hcint &= hcintmsk; + +@@ -2030,7 +2030,7 @@ + u32 haint; + int i; + +- haint = readl(hsotg->regs + HAINT); ++ haint = dwc2_readl(hsotg->regs + HAINT); + if (dbg_perio()) { + dev_vdbg(hsotg->dev, "%s()\n", __func__); + +@@ -2098,8 +2098,8 @@ + "DWC OTG HCD Finished Servicing Interrupts\n"); + dev_vdbg(hsotg->dev, + "DWC OTG HCD gintsts=0x%08x gintmsk=0x%08x\n", +- readl(hsotg->regs + GINTSTS), +- readl(hsotg->regs + GINTMSK)); ++ dwc2_readl(hsotg->regs + GINTSTS), ++ dwc2_readl(hsotg->regs + GINTMSK)); + } + } + +--- a/drivers/usb/dwc2/hcd_queue.c 2015-02-06 16:53:48.000000000 +0200 ++++ b/drivers/usb/dwc2/hcd_queue.c 2015-02-09 19:34:42.941106077 +0200 +@@ -115,7 +115,7 @@ + if (qh->ep_type == USB_ENDPOINT_XFER_INT) + qh->interval = 8; + #endif +- hprt = readl(hsotg->regs + HPRT0); ++ hprt = dwc2_readl(hsotg->regs + HPRT0); + prtspd = (hprt & HPRT0_SPD_MASK) >> HPRT0_SPD_SHIFT; + if (prtspd == HPRT0_SPD_HIGH_SPEED && + (dev_speed == USB_SPEED_LOW || +@@ -593,9 +593,9 @@ + if (status) + return status; + if (!hsotg->periodic_qh_count) { +- intr_mask = readl(hsotg->regs + GINTMSK); ++ intr_mask = dwc2_readl(hsotg->regs + GINTMSK); + intr_mask |= GINTSTS_SOF; +- writel(intr_mask, hsotg->regs + GINTMSK); ++ dwc2_writel(intr_mask, hsotg->regs + GINTMSK); + } + hsotg->periodic_qh_count++; + +@@ -630,9 +630,9 @@ + dwc2_deschedule_periodic(hsotg, qh); + hsotg->periodic_qh_count--; + if (!hsotg->periodic_qh_count) { +- intr_mask = readl(hsotg->regs + GINTMSK); ++ intr_mask = dwc2_readl(hsotg->regs + GINTMSK); + intr_mask &= ~GINTSTS_SOF; +- writel(intr_mask, hsotg->regs + GINTMSK); ++ dwc2_writel(intr_mask, hsotg->regs + GINTMSK); + } + } + |