Re: [RFC PATCH] usb: dwc2: Use platform endianness when accessing registers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

small nitpick

On 21/01/2015 19:27, Antti Seppälä wrote:
> This patch switches calls to readl/writel to their
> __raw_readl/__raw_writel equivalents which preserve platform endianness.
> 
> This patch is necessary to access dwc2 registers correctly on big endian
> systems such as mips. Then dwc2 can be used to replace ifx-hcd driver

this should really say "on big endian systems such as the mips based
SoCs made by Lantiq"

	John

> for lantiq platform found e.g. in OpenWrt.
> 
> The patch was autogenerated with the following commands:
> sed -i "s/\<readl\>/__raw_readl/g" *.c hcd.h hw.h
> sed -i "s/\<writel\>/__raw_writel/g" *.c hcd.h hw.h
> 
> Some files were then hand-edited to fix checkpatch.pl warning about
> too long lines.
> 
> Signed-off-by: Antti Seppälä <a.seppala@xxxxxxxxx>
> Signed-off-by: Vincent Pelletier <plr.vincent@xxxxxxxxx>
> ---
>  drivers/usb/dwc2/core.c      | 341 ++++++++++++++++++++++---------------------
>  drivers/usb/dwc2/core_intr.c |  73 ++++-----
>  drivers/usb/dwc2/gadget.c    | 312 +++++++++++++++++++--------------------
>  drivers/usb/dwc2/hcd.c       | 144 +++++++++---------
>  drivers/usb/dwc2/hcd.h       |  15 +-
>  drivers/usb/dwc2/hcd_ddma.c  |  10 +-
>  drivers/usb/dwc2/hcd_intr.c  |  82 +++++------
>  drivers/usb/dwc2/hcd_queue.c |  10 +-
>  8 files changed, 495 insertions(+), 492 deletions(-)
> 
> diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c
> index 7605850b..30ef56b 100644
> --- a/drivers/usb/dwc2/core.c
> +++ b/drivers/usb/dwc2/core.c
> @@ -67,10 +67,10 @@ static void dwc2_enable_common_interrupts(struct dwc2_hsotg *hsotg)
>  	u32 intmsk;
>  
>  	/* Clear any pending OTG Interrupts */
> -	writel(0xffffffff, hsotg->regs + GOTGINT);
> +	__raw_writel(0xffffffff, hsotg->regs + GOTGINT);
>  
>  	/* Clear any pending interrupts */
> -	writel(0xffffffff, hsotg->regs + GINTSTS);
> +	__raw_writel(0xffffffff, hsotg->regs + GINTSTS);
>  
>  	/* Enable the interrupts in the GINTMSK */
>  	intmsk = GINTSTS_MODEMIS | GINTSTS_OTGINT;
> @@ -81,7 +81,7 @@ static void dwc2_enable_common_interrupts(struct dwc2_hsotg *hsotg)
>  	intmsk |= GINTSTS_CONIDSTSCHNG | GINTSTS_WKUPINT | GINTSTS_USBSUSP |
>  		  GINTSTS_SESSREQINT;
>  
> -	writel(intmsk, hsotg->regs + GINTMSK);
> +	__raw_writel(intmsk, hsotg->regs + GINTMSK);
>  }
>  
>  /*
> @@ -104,10 +104,10 @@ static void dwc2_init_fs_ls_pclk_sel(struct dwc2_hsotg *hsotg)
>  	}
>  
>  	dev_dbg(hsotg->dev, "Initializing HCFG.FSLSPClkSel to %08x\n", val);
> -	hcfg = readl(hsotg->regs + HCFG);
> +	hcfg = __raw_readl(hsotg->regs + HCFG);
>  	hcfg &= ~HCFG_FSLSPCLKSEL_MASK;
>  	hcfg |= val << HCFG_FSLSPCLKSEL_SHIFT;
> -	writel(hcfg, hsotg->regs + HCFG);
> +	__raw_writel(hcfg, hsotg->regs + HCFG);
>  }
>  
>  /*
> @@ -125,7 +125,7 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
>  	/* Wait for AHB master IDLE state */
>  	do {
>  		usleep_range(20000, 40000);
> -		greset = readl(hsotg->regs + GRSTCTL);
> +		greset = __raw_readl(hsotg->regs + GRSTCTL);
>  		if (++count > 50) {
>  			dev_warn(hsotg->dev,
>  				 "%s() HANG! AHB Idle GRSTCTL=%0x\n",
> @@ -137,10 +137,10 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
>  	/* Core Soft Reset */
>  	count = 0;
>  	greset |= GRSTCTL_CSFTRST;
> -	writel(greset, hsotg->regs + GRSTCTL);
> +	__raw_writel(greset, hsotg->regs + GRSTCTL);
>  	do {
>  		usleep_range(20000, 40000);
> -		greset = readl(hsotg->regs + GRSTCTL);
> +		greset = __raw_readl(hsotg->regs + GRSTCTL);
>  		if (++count > 50) {
>  			dev_warn(hsotg->dev,
>  				 "%s() HANG! Soft Reset GRSTCTL=%0x\n",
> @@ -150,20 +150,20 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
>  	} while (greset & GRSTCTL_CSFTRST);
>  
>  	if (hsotg->dr_mode == USB_DR_MODE_HOST) {
> -		gusbcfg = readl(hsotg->regs + GUSBCFG);
> +		gusbcfg = __raw_readl(hsotg->regs + GUSBCFG);
>  		gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
>  		gusbcfg |= GUSBCFG_FORCEHOSTMODE;
> -		writel(gusbcfg, hsotg->regs + GUSBCFG);
> +		__raw_writel(gusbcfg, hsotg->regs + GUSBCFG);
>  	} else if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) {
> -		gusbcfg = readl(hsotg->regs + GUSBCFG);
> +		gusbcfg = __raw_readl(hsotg->regs + GUSBCFG);
>  		gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
>  		gusbcfg |= GUSBCFG_FORCEDEVMODE;
> -		writel(gusbcfg, hsotg->regs + GUSBCFG);
> +		__raw_writel(gusbcfg, hsotg->regs + GUSBCFG);
>  	} else if (hsotg->dr_mode == USB_DR_MODE_OTG) {
> -		gusbcfg = readl(hsotg->regs + GUSBCFG);
> +		gusbcfg = __raw_readl(hsotg->regs + GUSBCFG);
>  		gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
>  		gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
> -		writel(gusbcfg, hsotg->regs + GUSBCFG);
> +		__raw_writel(gusbcfg, hsotg->regs + GUSBCFG);
>  	}
>  
>  	/*
> @@ -186,9 +186,9 @@ static int dwc2_fs_phy_init(struct dwc2_hsotg *hsotg, bool select_phy)
>  	 */
>  	if (select_phy) {
>  		dev_dbg(hsotg->dev, "FS PHY selected\n");
> -		usbcfg = readl(hsotg->regs + GUSBCFG);
> +		usbcfg = __raw_readl(hsotg->regs + GUSBCFG);
>  		usbcfg |= GUSBCFG_PHYSEL;
> -		writel(usbcfg, hsotg->regs + GUSBCFG);
> +		__raw_writel(usbcfg, hsotg->regs + GUSBCFG);
>  
>  		/* Reset after a PHY select */
>  		retval = dwc2_core_reset(hsotg);
> @@ -211,18 +211,18 @@ static int dwc2_fs_phy_init(struct dwc2_hsotg *hsotg, bool select_phy)
>  		dev_dbg(hsotg->dev, "FS PHY enabling I2C\n");
>  
>  		/* Program GUSBCFG.OtgUtmiFsSel to I2C */
> -		usbcfg = readl(hsotg->regs + GUSBCFG);
> +		usbcfg = __raw_readl(hsotg->regs + GUSBCFG);
>  		usbcfg |= GUSBCFG_OTG_UTMI_FS_SEL;
> -		writel(usbcfg, hsotg->regs + GUSBCFG);
> +		__raw_writel(usbcfg, hsotg->regs + GUSBCFG);
>  
>  		/* Program GI2CCTL.I2CEn */
> -		i2cctl = readl(hsotg->regs + GI2CCTL);
> +		i2cctl = __raw_readl(hsotg->regs + GI2CCTL);
>  		i2cctl &= ~GI2CCTL_I2CDEVADDR_MASK;
>  		i2cctl |= 1 << GI2CCTL_I2CDEVADDR_SHIFT;
>  		i2cctl &= ~GI2CCTL_I2CEN;
> -		writel(i2cctl, hsotg->regs + GI2CCTL);
> +		__raw_writel(i2cctl, hsotg->regs + GI2CCTL);
>  		i2cctl |= GI2CCTL_I2CEN;
> -		writel(i2cctl, hsotg->regs + GI2CCTL);
> +		__raw_writel(i2cctl, hsotg->regs + GI2CCTL);
>  	}
>  
>  	return retval;
> @@ -236,7 +236,7 @@ static int dwc2_hs_phy_init(struct dwc2_hsotg *hsotg, bool select_phy)
>  	if (!select_phy)
>  		return 0;
>  
> -	usbcfg = readl(hsotg->regs + GUSBCFG);
> +	usbcfg = __raw_readl(hsotg->regs + GUSBCFG);
>  
>  	/*
>  	 * HS PHY parameters. These parameters are preserved during soft reset
> @@ -264,7 +264,7 @@ static int dwc2_hs_phy_init(struct dwc2_hsotg *hsotg, bool select_phy)
>  		break;
>  	}
>  
> -	writel(usbcfg, hsotg->regs + GUSBCFG);
> +	__raw_writel(usbcfg, hsotg->regs + GUSBCFG);
>  
>  	/* Reset after setting the PHY parameters */
>  	retval = dwc2_core_reset(hsotg);
> @@ -299,15 +299,15 @@ static int dwc2_phy_init(struct dwc2_hsotg *hsotg, bool select_phy)
>  	    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 = __raw_readl(hsotg->regs + GUSBCFG);
>  		usbcfg |= GUSBCFG_ULPI_FS_LS;
>  		usbcfg |= GUSBCFG_ULPI_CLK_SUSP_M;
> -		writel(usbcfg, hsotg->regs + GUSBCFG);
> +		__raw_writel(usbcfg, hsotg->regs + GUSBCFG);
>  	} else {
> -		usbcfg = readl(hsotg->regs + GUSBCFG);
> +		usbcfg = __raw_readl(hsotg->regs + GUSBCFG);
>  		usbcfg &= ~GUSBCFG_ULPI_FS_LS;
>  		usbcfg &= ~GUSBCFG_ULPI_CLK_SUSP_M;
> -		writel(usbcfg, hsotg->regs + GUSBCFG);
> +		__raw_writel(usbcfg, hsotg->regs + GUSBCFG);
>  	}
>  
>  	return retval;
> @@ -315,7 +315,7 @@ static int dwc2_phy_init(struct dwc2_hsotg *hsotg, bool select_phy)
>  
>  static int dwc2_gahbcfg_init(struct dwc2_hsotg *hsotg)
>  {
> -	u32 ahbcfg = readl(hsotg->regs + GAHBCFG);
> +	u32 ahbcfg = __raw_readl(hsotg->regs + GAHBCFG);
>  
>  	switch (hsotg->hw_params.arch) {
>  	case GHWCFG2_EXT_DMA_ARCH:
> @@ -354,7 +354,7 @@ static int dwc2_gahbcfg_init(struct dwc2_hsotg *hsotg)
>  	if (hsotg->core_params->dma_enable > 0)
>  		ahbcfg |= GAHBCFG_DMA_EN;
>  
> -	writel(ahbcfg, hsotg->regs + GAHBCFG);
> +	__raw_writel(ahbcfg, hsotg->regs + GAHBCFG);
>  
>  	return 0;
>  }
> @@ -363,7 +363,7 @@ static void dwc2_gusbcfg_init(struct dwc2_hsotg *hsotg)
>  {
>  	u32 usbcfg;
>  
> -	usbcfg = readl(hsotg->regs + GUSBCFG);
> +	usbcfg = __raw_readl(hsotg->regs + GUSBCFG);
>  	usbcfg &= ~(GUSBCFG_HNPCAP | GUSBCFG_SRPCAP);
>  
>  	switch (hsotg->hw_params.op_mode) {
> @@ -391,7 +391,7 @@ static void dwc2_gusbcfg_init(struct dwc2_hsotg *hsotg)
>  		break;
>  	}
>  
> -	writel(usbcfg, hsotg->regs + GUSBCFG);
> +	__raw_writel(usbcfg, hsotg->regs + GUSBCFG);
>  }
>  
>  /**
> @@ -409,7 +409,7 @@ int dwc2_core_init(struct dwc2_hsotg *hsotg, bool select_phy, int irq)
>  
>  	dev_dbg(hsotg->dev, "%s(%p)\n", __func__, hsotg);
>  
> -	usbcfg = readl(hsotg->regs + GUSBCFG);
> +	usbcfg = __raw_readl(hsotg->regs + GUSBCFG);
>  
>  	/* Set ULPI External VBUS bit if needed */
>  	usbcfg &= ~GUSBCFG_ULPI_EXT_VBUS_DRV;
> @@ -422,7 +422,7 @@ int dwc2_core_init(struct dwc2_hsotg *hsotg, bool select_phy, int irq)
>  	if (hsotg->core_params->ts_dline > 0)
>  		usbcfg |= GUSBCFG_TERMSELDLPULSE;
>  
> -	writel(usbcfg, hsotg->regs + GUSBCFG);
> +	__raw_writel(usbcfg, hsotg->regs + GUSBCFG);
>  
>  	/* Reset the Controller */
>  	retval = dwc2_core_reset(hsotg);
> @@ -448,11 +448,11 @@ int dwc2_core_init(struct dwc2_hsotg *hsotg, bool select_phy, int irq)
>  	dwc2_gusbcfg_init(hsotg);
>  
>  	/* Program the GOTGCTL register */
> -	otgctl = readl(hsotg->regs + GOTGCTL);
> +	otgctl = __raw_readl(hsotg->regs + GOTGCTL);
>  	otgctl &= ~GOTGCTL_OTGVER;
>  	if (hsotg->core_params->otg_ver > 0)
>  		otgctl |= GOTGCTL_OTGVER;
> -	writel(otgctl, hsotg->regs + GOTGCTL);
> +	__raw_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 */
> @@ -488,16 +488,16 @@ void dwc2_enable_host_interrupts(struct dwc2_hsotg *hsotg)
>  	dev_dbg(hsotg->dev, "%s()\n", __func__);
>  
>  	/* Disable all interrupts */
> -	writel(0, hsotg->regs + GINTMSK);
> -	writel(0, hsotg->regs + HAINTMSK);
> +	__raw_writel(0, hsotg->regs + GINTMSK);
> +	__raw_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 = __raw_readl(hsotg->regs + GINTMSK);
>  	intmsk |= GINTSTS_DISCONNINT | GINTSTS_PRTINT | GINTSTS_HCHINT;
> -	writel(intmsk, hsotg->regs + GINTMSK);
> +	__raw_writel(intmsk, hsotg->regs + GINTMSK);
>  }
>  
>  /**
> @@ -507,12 +507,12 @@ void dwc2_enable_host_interrupts(struct dwc2_hsotg *hsotg)
>   */
>  void dwc2_disable_host_interrupts(struct dwc2_hsotg *hsotg)
>  {
> -	u32 intmsk = readl(hsotg->regs + GINTMSK);
> +	u32 intmsk = __raw_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);
> +	__raw_writel(intmsk, hsotg->regs + GINTMSK);
>  }
>  
>  /*
> @@ -592,36 +592,37 @@ static void dwc2_config_fifos(struct dwc2_hsotg *hsotg)
>  	dwc2_calculate_dynamic_fifo(hsotg);
>  
>  	/* Rx FIFO */
> -	grxfsiz = readl(hsotg->regs + GRXFSIZ);
> +	grxfsiz = __raw_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));
> +	__raw_writel(grxfsiz, hsotg->regs + GRXFSIZ);
> +	dev_dbg(hsotg->dev, "new grxfsiz=%08x\n",
> +		__raw_readl(hsotg->regs + GRXFSIZ));
>  
>  	/* Non-periodic Tx FIFO */
>  	dev_dbg(hsotg->dev, "initial gnptxfsiz=%08x\n",
> -		readl(hsotg->regs + GNPTXFSIZ));
> +		__raw_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);
> +	__raw_writel(nptxfsiz, hsotg->regs + GNPTXFSIZ);
>  	dev_dbg(hsotg->dev, "new gnptxfsiz=%08x\n",
> -		readl(hsotg->regs + GNPTXFSIZ));
> +		__raw_readl(hsotg->regs + GNPTXFSIZ));
>  
>  	/* Periodic Tx FIFO */
>  	dev_dbg(hsotg->dev, "initial hptxfsiz=%08x\n",
> -		readl(hsotg->regs + HPTXFSIZ));
> +		__raw_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);
> +	__raw_writel(hptxfsiz, hsotg->regs + HPTXFSIZ);
>  	dev_dbg(hsotg->dev, "new hptxfsiz=%08x\n",
> -		readl(hsotg->regs + HPTXFSIZ));
> +		__raw_readl(hsotg->regs + HPTXFSIZ));
>  
>  	if (hsotg->core_params->en_multiple_tx_fifo > 0 &&
>  	    hsotg->hw_params.snpsid <= DWC2_CORE_REV_2_94a) {
> @@ -629,14 +630,14 @@ static void dwc2_config_fifos(struct dwc2_hsotg *hsotg)
>  		 * Global DFIFOCFG calculation for Host mode -
>  		 * include RxFIFO, NPTXFIFO and HPTXFIFO
>  		 */
> -		dfifocfg = readl(hsotg->regs + GDFIFOCFG);
> +		dfifocfg = __raw_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);
> +		__raw_writel(dfifocfg, hsotg->regs + GDFIFOCFG);
>  	}
>  }
>  
> @@ -657,14 +658,14 @@ void dwc2_core_host_init(struct dwc2_hsotg *hsotg)
>  	dev_dbg(hsotg->dev, "%s(%p)\n", __func__, hsotg);
>  
>  	/* Restart the Phy Clock */
> -	writel(0, hsotg->regs + PCGCTL);
> +	__raw_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 = __raw_readl(hsotg->regs + HCFG);
>  		hcfg |= HCFG_FSLSSUPP;
> -		writel(hcfg, hsotg->regs + HCFG);
> +		__raw_writel(hcfg, hsotg->regs + HCFG);
>  	}
>  
>  	/*
> @@ -673,9 +674,9 @@ void dwc2_core_host_init(struct dwc2_hsotg *hsotg)
>  	 * and its value must not be changed during runtime.
>  	 */
>  	if (hsotg->core_params->reload_ctl > 0) {
> -		hfir = readl(hsotg->regs + HFIR);
> +		hfir = __raw_readl(hsotg->regs + HFIR);
>  		hfir |= HFIR_RLDCTRL;
> -		writel(hfir, hsotg->regs + HFIR);
> +		__raw_writel(hfir, hsotg->regs + HFIR);
>  	}
>  
>  	if (hsotg->core_params->dma_desc_enable > 0) {
> @@ -691,9 +692,9 @@ void dwc2_core_host_init(struct dwc2_hsotg *hsotg)
>  				"falling back to buffer DMA mode.\n");
>  			hsotg->core_params->dma_desc_enable = 0;
>  		} else {
> -			hcfg = readl(hsotg->regs + HCFG);
> +			hcfg = __raw_readl(hsotg->regs + HCFG);
>  			hcfg |= HCFG_DESCDMA;
> -			writel(hcfg, hsotg->regs + HCFG);
> +			__raw_writel(hcfg, hsotg->regs + HCFG);
>  		}
>  	}
>  
> @@ -702,18 +703,18 @@ void dwc2_core_host_init(struct dwc2_hsotg *hsotg)
>  
>  	/* TODO - check this */
>  	/* Clear Host Set HNP Enable in the OTG Control Register */
> -	otgctl = readl(hsotg->regs + GOTGCTL);
> +	otgctl = __raw_readl(hsotg->regs + GOTGCTL);
>  	otgctl &= ~GOTGCTL_HSTSETHNPEN;
> -	writel(otgctl, hsotg->regs + GOTGCTL);
> +	__raw_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 = __raw_readl(hsotg->regs + GOTGCTL);
>  	otgctl &= ~GOTGCTL_HSTSETHNPEN;
> -	writel(otgctl, hsotg->regs + GOTGCTL);
> +	__raw_writel(otgctl, hsotg->regs + GOTGCTL);
>  
>  	if (hsotg->core_params->dma_desc_enable <= 0) {
>  		int num_channels, i;
> @@ -722,25 +723,25 @@ void dwc2_core_host_init(struct dwc2_hsotg *hsotg)
>  		/* 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 = __raw_readl(hsotg->regs + HCCHAR(i));
>  			hcchar &= ~HCCHAR_CHENA;
>  			hcchar |= HCCHAR_CHDIS;
>  			hcchar &= ~HCCHAR_EPDIR;
> -			writel(hcchar, hsotg->regs + HCCHAR(i));
> +			__raw_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 = __raw_readl(hsotg->regs + HCCHAR(i));
>  			hcchar |= HCCHAR_CHENA | HCCHAR_CHDIS;
>  			hcchar &= ~HCCHAR_EPDIR;
> -			writel(hcchar, hsotg->regs + HCCHAR(i));
> +			__raw_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 = __raw_readl(hsotg->regs + HCCHAR(i));
>  				if (++count > 1000) {
>  					dev_err(hsotg->dev,
>  						"Unable to clear enable on channel %d\n",
> @@ -761,7 +762,7 @@ void dwc2_core_host_init(struct dwc2_hsotg *hsotg)
>  			!!(hprt0 & HPRT0_PWR));
>  		if (!(hprt0 & HPRT0_PWR)) {
>  			hprt0 |= HPRT0_PWR;
> -			writel(hprt0, hsotg->regs + HPRT0);
> +			__raw_writel(hprt0, hsotg->regs + HPRT0);
>  		}
>  	}
>  
> @@ -841,7 +842,7 @@ static void dwc2_hc_enable_slave_ints(struct dwc2_hsotg *hsotg,
>  		break;
>  	}
>  
> -	writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num));
> +	__raw_writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num));
>  	if (dbg_hc(chan))
>  		dev_vdbg(hsotg->dev, "set HCINTMSK to %08x\n", hcintmsk);
>  }
> @@ -878,7 +879,7 @@ static void dwc2_hc_enable_dma_ints(struct dwc2_hsotg *hsotg,
>  		}
>  	}
>  
> -	writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num));
> +	__raw_writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num));
>  	if (dbg_hc(chan))
>  		dev_vdbg(hsotg->dev, "set HCINTMSK to %08x\n", hcintmsk);
>  }
> @@ -899,16 +900,16 @@ static void dwc2_hc_enable_ints(struct dwc2_hsotg *hsotg,
>  	}
>  
>  	/* Enable the top level host channel interrupt */
> -	intmsk = readl(hsotg->regs + HAINTMSK);
> +	intmsk = __raw_readl(hsotg->regs + HAINTMSK);
>  	intmsk |= 1 << chan->hc_num;
> -	writel(intmsk, hsotg->regs + HAINTMSK);
> +	__raw_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 = __raw_readl(hsotg->regs + GINTMSK);
>  	intmsk |= GINTSTS_HCHINT;
> -	writel(intmsk, hsotg->regs + GINTMSK);
> +	__raw_writel(intmsk, hsotg->regs + GINTMSK);
>  	if (dbg_hc(chan))
>  		dev_vdbg(hsotg->dev, "set GINTMSK to %08x\n", intmsk);
>  }
> @@ -937,7 +938,7 @@ void dwc2_hc_init(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan)
>  	/* Clear old interrupt conditions for this host channel */
>  	hcintmsk = 0xffffffff;
>  	hcintmsk &= ~HCINTMSK_RESERVED14_31;
> -	writel(hcintmsk, hsotg->regs + HCINT(hc_num));
> +	__raw_writel(hcintmsk, hsotg->regs + HCINT(hc_num));
>  
>  	/* Enable channel interrupts required for this transfer */
>  	dwc2_hc_enable_ints(hsotg, chan);
> @@ -954,7 +955,7 @@ void dwc2_hc_init(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan)
>  		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));
> +	__raw_writel(hcchar, hsotg->regs + HCCHAR(hc_num));
>  	if (dbg_hc(chan)) {
>  		dev_vdbg(hsotg->dev, "set HCCHAR(%d) to %08x\n",
>  			 hc_num, hcchar);
> @@ -1008,7 +1009,7 @@ void dwc2_hc_init(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan)
>  		}
>  	}
>  
> -	writel(hcsplt, hsotg->regs + HCSPLT(hc_num));
> +	__raw_writel(hcsplt, hsotg->regs + HCSPLT(hc_num));
>  }
>  
>  /**
> @@ -1060,14 +1061,14 @@ void dwc2_hc_halt(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan,
>  		u32 hcintmsk = HCINTMSK_CHHLTD;
>  
>  		dev_vdbg(hsotg->dev, "dequeue/error\n");
> -		writel(hcintmsk, hsotg->regs + HCINTMSK(chan->hc_num));
> +		__raw_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));
> +		__raw_writel(~hcintmsk, hsotg->regs + HCINT(chan->hc_num));
>  
>  		/*
>  		 * Make sure the halt status is set to URB_DEQUEUE or AHB_ERR
> @@ -1076,7 +1077,7 @@ void dwc2_hc_halt(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan,
>  		 */
>  		chan->halt_status = halt_status;
>  
> -		hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num));
> +		hcchar = __raw_readl(hsotg->regs + HCCHAR(chan->hc_num));
>  		if (!(hcchar & HCCHAR_CHENA)) {
>  			/*
>  			 * The channel is either already halted or it hasn't
> @@ -1104,7 +1105,7 @@ void dwc2_hc_halt(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan,
>  		return;
>  	}
>  
> -	hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num));
> +	hcchar = __raw_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 */
> @@ -1127,7 +1128,7 @@ void dwc2_hc_halt(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan,
>  		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 = __raw_readl(hsotg->regs + GNPTXSTS);
>  			if ((nptxsts & TXSTS_QSPCAVAIL_MASK) == 0) {
>  				dev_vdbg(hsotg->dev, "Disabling channel\n");
>  				hcchar &= ~HCCHAR_CHENA;
> @@ -1135,7 +1136,7 @@ void dwc2_hc_halt(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan,
>  		} else {
>  			if (dbg_perio())
>  				dev_vdbg(hsotg->dev, "isoc/intr\n");
> -			hptxsts = readl(hsotg->regs + HPTXSTS);
> +			hptxsts = __raw_readl(hsotg->regs + HPTXSTS);
>  			if ((hptxsts & TXSTS_QSPCAVAIL_MASK) == 0 ||
>  			    hsotg->queuing_high_bandwidth) {
>  				if (dbg_perio())
> @@ -1148,7 +1149,7 @@ void dwc2_hc_halt(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan,
>  			dev_vdbg(hsotg->dev, "DMA enabled\n");
>  	}
>  
> -	writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num));
> +	__raw_writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num));
>  	chan->halt_status = halt_status;
>  
>  	if (hcchar & HCCHAR_CHENA) {
> @@ -1195,10 +1196,10 @@ void dwc2_hc_cleanup(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan)
>  	 * Clear channel interrupt enables and any unhandled channel interrupt
>  	 * conditions
>  	 */
> -	writel(0, hsotg->regs + HCINTMSK(chan->hc_num));
> +	__raw_writel(0, hsotg->regs + HCINTMSK(chan->hc_num));
>  	hcintmsk = 0xffffffff;
>  	hcintmsk &= ~HCINTMSK_RESERVED14_31;
> -	writel(hcintmsk, hsotg->regs + HCINT(chan->hc_num));
> +	__raw_writel(hcintmsk, hsotg->regs + HCINT(chan->hc_num));
>  }
>  
>  /**
> @@ -1284,13 +1285,13 @@ static void dwc2_hc_write_packet(struct dwc2_hsotg *hsotg,
>  	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);
> +			__raw_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);
> +			__raw_writel(data, data_fifo);
>  		}
>  	}
>  
> @@ -1443,7 +1444,7 @@ void dwc2_hc_start_transfer(struct dwc2_hsotg *hsotg,
>  	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));
> +	__raw_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);
> @@ -1471,7 +1472,7 @@ void dwc2_hc_start_transfer(struct dwc2_hsotg *hsotg,
>  		} else {
>  			dma_addr = chan->xfer_dma;
>  		}
> -		writel((u32)dma_addr, hsotg->regs + HCDMA(chan->hc_num));
> +		__raw_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);
> @@ -1479,13 +1480,13 @@ void dwc2_hc_start_transfer(struct dwc2_hsotg *hsotg,
>  
>  	/* Start the split */
>  	if (chan->do_split) {
> -		u32 hcsplt = readl(hsotg->regs + HCSPLT(chan->hc_num));
> +		u32 hcsplt = __raw_readl(hsotg->regs + HCSPLT(chan->hc_num));
>  
>  		hcsplt |= HCSPLT_SPLTENA;
> -		writel(hcsplt, hsotg->regs + HCSPLT(chan->hc_num));
> +		__raw_writel(hcsplt, hsotg->regs + HCSPLT(chan->hc_num));
>  	}
>  
> -	hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num));
> +	hcchar = __raw_readl(hsotg->regs + HCCHAR(chan->hc_num));
>  	hcchar &= ~HCCHAR_MULTICNT_MASK;
>  	hcchar |= chan->multi_count << HCCHAR_MULTICNT_SHIFT &
>  		  HCCHAR_MULTICNT_MASK;
> @@ -1505,7 +1506,7 @@ void dwc2_hc_start_transfer(struct dwc2_hsotg *hsotg,
>  			 (hcchar & HCCHAR_MULTICNT_MASK) >>
>  			 HCCHAR_MULTICNT_SHIFT);
>  
> -	writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num));
> +	__raw_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);
> @@ -1564,18 +1565,18 @@ void dwc2_hc_start_transfer_ddma(struct dwc2_hsotg *hsotg,
>  		dev_vdbg(hsotg->dev, "	 NTD: %d\n", chan->ntd - 1);
>  	}
>  
> -	writel(hctsiz, hsotg->regs + HCTSIZ(chan->hc_num));
> +	__raw_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));
> +	__raw_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 = __raw_readl(hsotg->regs + HCCHAR(chan->hc_num));
>  	hcchar &= ~HCCHAR_MULTICNT_MASK;
>  	hcchar |= chan->multi_count << HCCHAR_MULTICNT_SHIFT &
>  		  HCCHAR_MULTICNT_MASK;
> @@ -1594,7 +1595,7 @@ void dwc2_hc_start_transfer_ddma(struct dwc2_hsotg *hsotg,
>  			 (hcchar & HCCHAR_MULTICNT_MASK) >>
>  			 HCCHAR_MULTICNT_SHIFT);
>  
> -	writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num));
> +	__raw_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);
> @@ -1651,7 +1652,7 @@ int dwc2_hc_continue_transfer(struct dwc2_hsotg *hsotg,
>  		 * transfer completes, the extra requests for the channel will
>  		 * be flushed.
>  		 */
> -		u32 hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num));
> +		u32 hcchar = __raw_readl(hsotg->regs + HCCHAR(chan->hc_num));
>  
>  		dwc2_hc_set_even_odd_frame(hsotg, chan, &hcchar);
>  		hcchar |= HCCHAR_CHENA;
> @@ -1659,7 +1660,7 @@ int dwc2_hc_continue_transfer(struct dwc2_hsotg *hsotg,
>  		if (dbg_hc(chan))
>  			dev_vdbg(hsotg->dev, "	 IN xfer: hcchar = 0x%08x\n",
>  				 hcchar);
> -		writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num));
> +		__raw_writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num));
>  		chan->requests++;
>  		return 1;
>  	}
> @@ -1669,7 +1670,7 @@ int dwc2_hc_continue_transfer(struct dwc2_hsotg *hsotg,
>  	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 = __raw_readl(hsotg->regs +
>  					   HCCHAR(chan->hc_num));
>  
>  			dwc2_hc_set_even_odd_frame(hsotg, chan,
> @@ -1706,12 +1707,12 @@ void dwc2_hc_do_ping(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan)
>  
>  	hctsiz = TSIZ_DOPNG;
>  	hctsiz |= 1 << TSIZ_PKTCNT_SHIFT;
> -	writel(hctsiz, hsotg->regs + HCTSIZ(chan->hc_num));
> +	__raw_writel(hctsiz, hsotg->regs + HCTSIZ(chan->hc_num));
>  
> -	hcchar = readl(hsotg->regs + HCCHAR(chan->hc_num));
> +	hcchar = __raw_readl(hsotg->regs + HCCHAR(chan->hc_num));
>  	hcchar |= HCCHAR_CHENA;
>  	hcchar &= ~HCCHAR_CHDIS;
> -	writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num));
> +	__raw_writel(hcchar, hsotg->regs + HCCHAR(chan->hc_num));
>  }
>  
>  /**
> @@ -1730,8 +1731,8 @@ u32 dwc2_calc_frame_interval(struct dwc2_hsotg *hsotg)
>  	u32 hprt0;
>  	int clock = 60;	/* default value */
>  
> -	usbcfg = readl(hsotg->regs + GUSBCFG);
> -	hprt0 = readl(hsotg->regs + HPRT0);
> +	usbcfg = __raw_readl(hsotg->regs + GUSBCFG);
> +	hprt0 = __raw_readl(hsotg->regs + HPRT0);
>  
>  	if (!(usbcfg & GUSBCFG_PHYSEL) && (usbcfg & GUSBCFG_ULPI_UTMI_SEL) &&
>  	    !(usbcfg & GUSBCFG_PHYIF16))
> @@ -1787,7 +1788,7 @@ void dwc2_read_packet(struct dwc2_hsotg *hsotg, u8 *dest, u16 bytes)
>  	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 = __raw_readl(fifo);
>  }
>  
>  /**
> @@ -1807,56 +1808,56 @@ void dwc2_dump_host_registers(struct dwc2_hsotg *hsotg)
>  	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, __raw_readl(addr));
>  	addr = hsotg->regs + HFIR;
>  	dev_dbg(hsotg->dev, "HFIR	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + HFNUM;
>  	dev_dbg(hsotg->dev, "HFNUM	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + HPTXSTS;
>  	dev_dbg(hsotg->dev, "HPTXSTS	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + HAINT;
>  	dev_dbg(hsotg->dev, "HAINT	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + HAINTMSK;
>  	dev_dbg(hsotg->dev, "HAINTMSK	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_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, __raw_readl(addr));
>  	}
>  
>  	addr = hsotg->regs + HPRT0;
>  	dev_dbg(hsotg->dev, "HPRT0	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_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, __raw_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, __raw_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, __raw_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, __raw_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, __raw_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, __raw_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, __raw_readl(addr));
>  		}
>  	}
>  #endif
> @@ -1878,80 +1879,80 @@ void dwc2_dump_global_registers(struct dwc2_hsotg *hsotg)
>  	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, __raw_readl(addr));
>  	addr = hsotg->regs + GOTGINT;
>  	dev_dbg(hsotg->dev, "GOTGINT	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GAHBCFG;
>  	dev_dbg(hsotg->dev, "GAHBCFG	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GUSBCFG;
>  	dev_dbg(hsotg->dev, "GUSBCFG	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GRSTCTL;
>  	dev_dbg(hsotg->dev, "GRSTCTL	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GINTSTS;
>  	dev_dbg(hsotg->dev, "GINTSTS	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GINTMSK;
>  	dev_dbg(hsotg->dev, "GINTMSK	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GRXSTSR;
>  	dev_dbg(hsotg->dev, "GRXSTSR	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GRXFSIZ;
>  	dev_dbg(hsotg->dev, "GRXFSIZ	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GNPTXFSIZ;
>  	dev_dbg(hsotg->dev, "GNPTXFSIZ	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GNPTXSTS;
>  	dev_dbg(hsotg->dev, "GNPTXSTS	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GI2CCTL;
>  	dev_dbg(hsotg->dev, "GI2CCTL	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GPVNDCTL;
>  	dev_dbg(hsotg->dev, "GPVNDCTL	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GGPIO;
>  	dev_dbg(hsotg->dev, "GGPIO	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GUID;
>  	dev_dbg(hsotg->dev, "GUID	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GSNPSID;
>  	dev_dbg(hsotg->dev, "GSNPSID	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GHWCFG1;
>  	dev_dbg(hsotg->dev, "GHWCFG1	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GHWCFG2;
>  	dev_dbg(hsotg->dev, "GHWCFG2	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GHWCFG3;
>  	dev_dbg(hsotg->dev, "GHWCFG3	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GHWCFG4;
>  	dev_dbg(hsotg->dev, "GHWCFG4	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GLPMCFG;
>  	dev_dbg(hsotg->dev, "GLPMCFG	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GPWRDN;
>  	dev_dbg(hsotg->dev, "GPWRDN	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + GDFIFOCFG;
>  	dev_dbg(hsotg->dev, "GDFIFOCFG	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  	addr = hsotg->regs + HPTXFSIZ;
>  	dev_dbg(hsotg->dev, "HPTXFSIZ	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  
>  	addr = hsotg->regs + PCGCTL;
>  	dev_dbg(hsotg->dev, "PCGCTL	 @0x%08lX : 0x%08X\n",
> -		(unsigned long)addr, readl(addr));
> +		(unsigned long)addr, __raw_readl(addr));
>  #endif
>  }
>  
> @@ -1970,15 +1971,15 @@ void dwc2_flush_tx_fifo(struct dwc2_hsotg *hsotg, const int num)
>  
>  	greset = GRSTCTL_TXFFLSH;
>  	greset |= num << GRSTCTL_TXFNUM_SHIFT & GRSTCTL_TXFNUM_MASK;
> -	writel(greset, hsotg->regs + GRSTCTL);
> +	__raw_writel(greset, hsotg->regs + GRSTCTL);
>  
>  	do {
> -		greset = readl(hsotg->regs + GRSTCTL);
> +		greset = __raw_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));
> +				 __raw_readl(hsotg->regs + GNPTXSTS));
>  			break;
>  		}
>  		udelay(1);
> @@ -2001,10 +2002,10 @@ void dwc2_flush_rx_fifo(struct dwc2_hsotg *hsotg)
>  	dev_vdbg(hsotg->dev, "%s()\n", __func__);
>  
>  	greset = GRSTCTL_RXFFLSH;
> -	writel(greset, hsotg->regs + GRSTCTL);
> +	__raw_writel(greset, hsotg->regs + GRSTCTL);
>  
>  	do {
> -		greset = readl(hsotg->regs + GRSTCTL);
> +		greset = __raw_readl(hsotg->regs + GRSTCTL);
>  		if (++count > 10000) {
>  			dev_warn(hsotg->dev, "%s() HANG! GRSTCTL=%0x\n",
>  				 __func__, greset);
> @@ -2666,7 +2667,7 @@ int dwc2_get_hwparams(struct dwc2_hsotg *hsotg)
>  	 * 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 = __raw_readl(hsotg->regs + GSNPSID);
>  	if ((hw->snpsid & 0xfffff000) != 0x4f542000 &&
>  	    (hw->snpsid & 0xfffff000) != 0x4f543000) {
>  		dev_err(hsotg->dev, "Bad value for GSNPSID: 0x%08x\n",
> @@ -2678,11 +2679,11 @@ int dwc2_get_hwparams(struct dwc2_hsotg *hsotg)
>  		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 = __raw_readl(hsotg->regs + GHWCFG1);
> +	hwcfg2 = __raw_readl(hsotg->regs + GHWCFG2);
> +	hwcfg3 = __raw_readl(hsotg->regs + GHWCFG3);
> +	hwcfg4 = __raw_readl(hsotg->regs + GHWCFG4);
> +	grxfsiz = __raw_readl(hsotg->regs + GRXFSIZ);
>  
>  	dev_dbg(hsotg->dev, "hwcfg1=%08x\n", hwcfg1);
>  	dev_dbg(hsotg->dev, "hwcfg2=%08x\n", hwcfg2);
> @@ -2691,18 +2692,18 @@ int dwc2_get_hwparams(struct dwc2_hsotg *hsotg)
>  	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 = __raw_readl(hsotg->regs + GUSBCFG);
>  	gusbcfg |= GUSBCFG_FORCEHOSTMODE;
> -	writel(gusbcfg, hsotg->regs + GUSBCFG);
> +	__raw_writel(gusbcfg, hsotg->regs + GUSBCFG);
>  	usleep_range(100000, 150000);
>  
> -	gnptxfsiz = readl(hsotg->regs + GNPTXFSIZ);
> -	hptxfsiz = readl(hsotg->regs + HPTXFSIZ);
> +	gnptxfsiz = __raw_readl(hsotg->regs + GNPTXFSIZ);
> +	hptxfsiz = __raw_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 = __raw_readl(hsotg->regs + GUSBCFG);
>  	gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
> -	writel(gusbcfg, hsotg->regs + GUSBCFG);
> +	__raw_writel(gusbcfg, hsotg->regs + GUSBCFG);
>  	usleep_range(100000, 150000);
>  
>  	/* hwcfg2 */
> @@ -2821,7 +2822,7 @@ u16 dwc2_get_otg_version(struct dwc2_hsotg *hsotg)
>  
>  bool dwc2_is_controller_alive(struct dwc2_hsotg *hsotg)
>  {
> -	if (readl(hsotg->regs + GSNPSID) == 0xffffffff)
> +	if (__raw_readl(hsotg->regs + GSNPSID) == 0xffffffff)
>  		return false;
>  	else
>  		return true;
> @@ -2835,10 +2836,10 @@ bool dwc2_is_controller_alive(struct dwc2_hsotg *hsotg)
>   */
>  void dwc2_enable_global_interrupts(struct dwc2_hsotg *hsotg)
>  {
> -	u32 ahbcfg = readl(hsotg->regs + GAHBCFG);
> +	u32 ahbcfg = __raw_readl(hsotg->regs + GAHBCFG);
>  
>  	ahbcfg |= GAHBCFG_GLBL_INTR_EN;
> -	writel(ahbcfg, hsotg->regs + GAHBCFG);
> +	__raw_writel(ahbcfg, hsotg->regs + GAHBCFG);
>  }
>  
>  /**
> @@ -2849,10 +2850,10 @@ void dwc2_enable_global_interrupts(struct dwc2_hsotg *hsotg)
>   */
>  void dwc2_disable_global_interrupts(struct dwc2_hsotg *hsotg)
>  {
> -	u32 ahbcfg = readl(hsotg->regs + GAHBCFG);
> +	u32 ahbcfg = __raw_readl(hsotg->regs + GAHBCFG);
>  
>  	ahbcfg &= ~GAHBCFG_GLBL_INTR_EN;
> -	writel(ahbcfg, hsotg->regs + GAHBCFG);
> +	__raw_writel(ahbcfg, hsotg->regs + GAHBCFG);
>  }
>  
>  MODULE_DESCRIPTION("DESIGNWARE HS OTG Core");
> diff --git a/drivers/usb/dwc2/core_intr.c b/drivers/usb/dwc2/core_intr.c
> index ad43c5b..6bd9a97 100644
> --- a/drivers/usb/dwc2/core_intr.c
> +++ b/drivers/usb/dwc2/core_intr.c
> @@ -80,15 +80,15 @@ static const char *dwc2_op_state_str(struct dwc2_hsotg *hsotg)
>   */
>  static void dwc2_handle_usb_port_intr(struct dwc2_hsotg *hsotg)
>  {
> -	u32 hprt0 = readl(hsotg->regs + HPRT0);
> +	u32 hprt0 = __raw_readl(hsotg->regs + HPRT0);
>  
>  	if (hprt0 & HPRT0_ENACHG) {
>  		hprt0 &= ~HPRT0_ENA;
> -		writel(hprt0, hsotg->regs + HPRT0);
> +		__raw_writel(hprt0, hsotg->regs + HPRT0);
>  	}
>  
>  	/* Clear interrupt */
> -	writel(GINTSTS_PRTINT, hsotg->regs + GINTSTS);
> +	__raw_writel(GINTSTS_PRTINT, hsotg->regs + GINTSTS);
>  }
>  
>  /**
> @@ -102,7 +102,7 @@ static void dwc2_handle_mode_mismatch_intr(struct dwc2_hsotg *hsotg)
>  		 dwc2_is_host_mode(hsotg) ? "Host" : "Device");
>  
>  	/* Clear interrupt */
> -	writel(GINTSTS_MODEMIS, hsotg->regs + GINTSTS);
> +	__raw_writel(GINTSTS_MODEMIS, hsotg->regs + GINTSTS);
>  }
>  
>  /**
> @@ -117,8 +117,8 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>  	u32 gotgctl;
>  	u32 gintmsk;
>  
> -	gotgint = readl(hsotg->regs + GOTGINT);
> -	gotgctl = readl(hsotg->regs + GOTGCTL);
> +	gotgint = __raw_readl(hsotg->regs + GOTGINT);
> +	gotgctl = __raw_readl(hsotg->regs + GOTGCTL);
>  	dev_dbg(hsotg->dev, "++OTG Interrupt gotgint=%0x [%s]\n", gotgint,
>  		dwc2_op_state_str(hsotg));
>  
> @@ -126,7 +126,7 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>  		dev_dbg(hsotg->dev,
>  			" ++OTG Interrupt: Session End Detected++ (%s)\n",
>  			dwc2_op_state_str(hsotg));
> -		gotgctl = readl(hsotg->regs + GOTGCTL);
> +		gotgctl = __raw_readl(hsotg->regs + GOTGCTL);
>  
>  		if (dwc2_is_device_mode(hsotg))
>  			s3c_hsotg_disconnect(hsotg);
> @@ -152,15 +152,15 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>  			hsotg->lx_state = DWC2_L0;
>  		}
>  
> -		gotgctl = readl(hsotg->regs + GOTGCTL);
> +		gotgctl = __raw_readl(hsotg->regs + GOTGCTL);
>  		gotgctl &= ~GOTGCTL_DEVHNPEN;
> -		writel(gotgctl, hsotg->regs + GOTGCTL);
> +		__raw_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 = __raw_readl(hsotg->regs + GOTGCTL);
>  		if (gotgctl & GOTGCTL_SESREQSCS) {
>  			if (hsotg->core_params->phy_type ==
>  					DWC2_PHY_TYPE_PARAM_FS
> @@ -168,9 +168,9 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>  				hsotg->srp_success = 1;
>  			} else {
>  				/* Clear Session Request */
> -				gotgctl = readl(hsotg->regs + GOTGCTL);
> +				gotgctl = __raw_readl(hsotg->regs + GOTGCTL);
>  				gotgctl &= ~GOTGCTL_SESREQ;
> -				writel(gotgctl, hsotg->regs + GOTGCTL);
> +				__raw_writel(gotgctl, hsotg->regs + GOTGCTL);
>  			}
>  		}
>  	}
> @@ -180,7 +180,7 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>  		 * Print statements during the HNP interrupt handling
>  		 * can cause it to fail
>  		 */
> -		gotgctl = readl(hsotg->regs + GOTGCTL);
> +		gotgctl = __raw_readl(hsotg->regs + GOTGCTL);
>  		/*
>  		 * WA for 3.00a- HW is not setting cur_mode, even sometimes
>  		 * this does not help
> @@ -200,9 +200,9 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>  				 * interrupt does not get handled and Linux
>  				 * complains loudly.
>  				 */
> -				gintmsk = readl(hsotg->regs + GINTMSK);
> +				gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  				gintmsk &= ~GINTSTS_SOF;
> -				writel(gintmsk, hsotg->regs + GINTMSK);
> +				__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  
>  				/*
>  				 * Call callback function with spin lock
> @@ -216,9 +216,9 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>  				hsotg->op_state = OTG_STATE_B_HOST;
>  			}
>  		} else {
> -			gotgctl = readl(hsotg->regs + GOTGCTL);
> +			gotgctl = __raw_readl(hsotg->regs + GOTGCTL);
>  			gotgctl &= ~(GOTGCTL_HNPREQ | GOTGCTL_DEVHNPEN);
> -			writel(gotgctl, hsotg->regs + GOTGCTL);
> +			__raw_writel(gotgctl, hsotg->regs + GOTGCTL);
>  			dev_dbg(hsotg->dev, "HNP Failed\n");
>  			dev_err(hsotg->dev,
>  				"Device Not Connected/Responding\n");
> @@ -244,9 +244,9 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>  			hsotg->op_state = OTG_STATE_A_PERIPHERAL;
>  		} else {
>  			/* Need to disable SOF interrupt immediately */
> -			gintmsk = readl(hsotg->regs + GINTMSK);
> +			gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  			gintmsk &= ~GINTSTS_SOF;
> -			writel(gintmsk, hsotg->regs + GINTMSK);
> +			__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  			spin_unlock(&hsotg->lock);
>  			dwc2_hcd_start(hsotg);
>  			spin_lock(&hsotg->lock);
> @@ -261,7 +261,7 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>  		dev_dbg(hsotg->dev, " ++OTG Interrupt: Debounce Done++\n");
>  
>  	/* Clear GOTGINT */
> -	writel(gotgint, hsotg->regs + GOTGINT);
> +	__raw_writel(gotgint, hsotg->regs + GOTGINT);
>  }
>  
>  /**
> @@ -276,11 +276,11 @@ static void dwc2_handle_otg_intr(struct dwc2_hsotg *hsotg)
>   */
>  static void dwc2_handle_conn_id_status_change_intr(struct dwc2_hsotg *hsotg)
>  {
> -	u32 gintmsk = readl(hsotg->regs + GINTMSK);
> +	u32 gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  
>  	/* Need to disable SOF interrupt immediately */
>  	gintmsk &= ~GINTSTS_SOF;
> -	writel(gintmsk, hsotg->regs + GINTMSK);
> +	__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  
>  	dev_dbg(hsotg->dev, " ++Connector ID Status Change Interrupt++  (%s)\n",
>  		dwc2_is_host_mode(hsotg) ? "Host" : "Device");
> @@ -297,7 +297,7 @@ static void dwc2_handle_conn_id_status_change_intr(struct dwc2_hsotg *hsotg)
>  	}
>  
>  	/* Clear interrupt */
> -	writel(GINTSTS_CONIDSTSCHNG, hsotg->regs + GINTSTS);
> +	__raw_writel(GINTSTS_CONIDSTSCHNG, hsotg->regs + GINTSTS);
>  }
>  
>  /**
> @@ -316,7 +316,7 @@ static void dwc2_handle_session_req_intr(struct dwc2_hsotg *hsotg)
>  	dev_dbg(hsotg->dev, "++Session Request Interrupt++\n");
>  
>  	/* Clear interrupt */
> -	writel(GINTSTS_SESSREQINT, hsotg->regs + GINTSTS);
> +	__raw_writel(GINTSTS_SESSREQINT, hsotg->regs + GINTSTS);
>  
>  	/*
>  	 * Report disconnect if there is any previous session established
> @@ -338,23 +338,24 @@ static void dwc2_handle_wakeup_detected_intr(struct dwc2_hsotg *hsotg)
>  	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",
> +			__raw_readl(hsotg->regs + DSTS));
>  		if (hsotg->lx_state == DWC2_L2) {
> -			u32 dctl = readl(hsotg->regs + DCTL);
> +			u32 dctl = __raw_readl(hsotg->regs + DCTL);
>  
>  			/* Clear Remote Wakeup Signaling */
>  			dctl &= ~DCTL_RMTWKUPSIG;
> -			writel(dctl, hsotg->regs + DCTL);
> +			__raw_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 = __raw_readl(hsotg->regs + PCGCTL);
>  
>  			/* Restart the Phy Clock */
>  			pcgcctl &= ~PCGCTL_STOPPCLK;
> -			writel(pcgcctl, hsotg->regs + PCGCTL);
> +			__raw_writel(pcgcctl, hsotg->regs + PCGCTL);
>  			mod_timer(&hsotg->wkp_timer,
>  				  jiffies + msecs_to_jiffies(71));
>  		} else {
> @@ -364,7 +365,7 @@ static void dwc2_handle_wakeup_detected_intr(struct dwc2_hsotg *hsotg)
>  	}
>  
>  	/* Clear interrupt */
> -	writel(GINTSTS_WKUPINT, hsotg->regs + GINTSTS);
> +	__raw_writel(GINTSTS_WKUPINT, hsotg->regs + GINTSTS);
>  }
>  
>  /*
> @@ -380,7 +381,7 @@ static void dwc2_handle_disconnect_intr(struct dwc2_hsotg *hsotg)
>  	/* Change to L3 (OFF) state */
>  	hsotg->lx_state = DWC2_L3;
>  
> -	writel(GINTSTS_DISCONNINT, hsotg->regs + GINTSTS);
> +	__raw_writel(GINTSTS_DISCONNINT, hsotg->regs + GINTSTS);
>  }
>  
>  /*
> @@ -402,7 +403,7 @@ static void dwc2_handle_usb_suspend_intr(struct dwc2_hsotg *hsotg)
>  		 * Check the Device status register to determine if the Suspend
>  		 * state is active
>  		 */
> -		dsts = readl(hsotg->regs + DSTS);
> +		dsts = __raw_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",
> @@ -424,7 +425,7 @@ static void dwc2_handle_usb_suspend_intr(struct dwc2_hsotg *hsotg)
>  	hsotg->lx_state = DWC2_L2;
>  
>  	/* Clear interrupt */
> -	writel(GINTSTS_USBSUSP, hsotg->regs + GINTSTS);
> +	__raw_writel(GINTSTS_USBSUSP, hsotg->regs + GINTSTS);
>  }
>  
>  #define GINTMSK_COMMON	(GINTSTS_WKUPINT | GINTSTS_SESSREQINT |		\
> @@ -442,9 +443,9 @@ static u32 dwc2_read_common_intr(struct dwc2_hsotg *hsotg)
>  	u32 gahbcfg;
>  	u32 gintmsk_common = GINTMSK_COMMON;
>  
> -	gintsts = readl(hsotg->regs + GINTSTS);
> -	gintmsk = readl(hsotg->regs + GINTMSK);
> -	gahbcfg = readl(hsotg->regs + GAHBCFG);
> +	gintsts = __raw_readl(hsotg->regs + GINTSTS);
> +	gintmsk = __raw_readl(hsotg->regs + GINTMSK);
> +	gahbcfg = __raw_readl(hsotg->regs + GAHBCFG);
>  
>  	/* If any common interrupts set */
>  	if (gintsts & gintmsk_common)
> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> index 7924200..6c3785b 100644
> --- a/drivers/usb/dwc2/gadget.c
> +++ b/drivers/usb/dwc2/gadget.c
> @@ -57,12 +57,12 @@ static inline struct dwc2_hsotg *to_hsotg(struct usb_gadget *gadget)
>  
>  static inline void __orr32(void __iomem *ptr, u32 val)
>  {
> -	writel(readl(ptr) | val, ptr);
> +	__raw_writel(__raw_readl(ptr) | val, ptr);
>  }
>  
>  static inline void __bic32(void __iomem *ptr, u32 val)
>  {
> -	writel(readl(ptr) & ~val, ptr);
> +	__raw_writel(__raw_readl(ptr) & ~val, ptr);
>  }
>  
>  /* forward decleration of functions */
> @@ -99,14 +99,14 @@ static inline bool using_dma(struct dwc2_hsotg *hsotg)
>   */
>  static void s3c_hsotg_en_gsint(struct dwc2_hsotg *hsotg, u32 ints)
>  {
> -	u32 gsintmsk = readl(hsotg->regs + GINTMSK);
> +	u32 gsintmsk = __raw_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);
> +		__raw_writel(new_gsintmsk, hsotg->regs + GINTMSK);
>  	}
>  }
>  
> @@ -117,13 +117,13 @@ static void s3c_hsotg_en_gsint(struct dwc2_hsotg *hsotg, u32 ints)
>   */
>  static void s3c_hsotg_disable_gsint(struct dwc2_hsotg *hsotg, u32 ints)
>  {
> -	u32 gsintmsk = readl(hsotg->regs + GINTMSK);
> +	u32 gsintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  	u32 new_gsintmsk;
>  
>  	new_gsintmsk = gsintmsk & ~ints;
>  
>  	if (new_gsintmsk != gsintmsk)
> -		writel(new_gsintmsk, hsotg->regs + GINTMSK);
> +		__raw_writel(new_gsintmsk, hsotg->regs + GINTMSK);
>  }
>  
>  /**
> @@ -148,12 +148,12 @@ static void s3c_hsotg_ctrl_epint(struct dwc2_hsotg *hsotg,
>  		bit <<= 16;
>  
>  	local_irq_save(flags);
> -	daint = readl(hsotg->regs + DAINTMSK);
> +	daint = __raw_readl(hsotg->regs + DAINTMSK);
>  	if (en)
>  		daint |= bit;
>  	else
>  		daint &= ~bit;
> -	writel(daint, hsotg->regs + DAINTMSK);
> +	__raw_writel(daint, hsotg->regs + DAINTMSK);
>  	local_irq_restore(flags);
>  }
>  
> @@ -171,8 +171,8 @@ static void s3c_hsotg_init_fifo(struct dwc2_hsotg *hsotg)
>  
>  	/* set FIFO sizes to 2048/1024 */
>  
> -	writel(2048, hsotg->regs + GRXFSIZ);
> -	writel((2048 << FIFOSIZE_STARTADDR_SHIFT) |
> +	__raw_writel(2048, hsotg->regs + GRXFSIZ);
> +	__raw_writel((2048 << FIFOSIZE_STARTADDR_SHIFT) |
>  		(1024 << FIFOSIZE_DEPTH_SHIFT), hsotg->regs + GNPTXFSIZ);
>  
>  	/*
> @@ -202,7 +202,7 @@ static void s3c_hsotg_init_fifo(struct dwc2_hsotg *hsotg)
>  			  "insufficient fifo memory");
>  		addr += size;
>  
> -		writel(val, hsotg->regs + DPTXFSIZN(ep));
> +		__raw_writel(val, hsotg->regs + DPTXFSIZN(ep));
>  	}
>  	/* 768*4=3072 bytes FIFO length */
>  	size = 768;
> @@ -213,7 +213,7 @@ static void s3c_hsotg_init_fifo(struct dwc2_hsotg *hsotg)
>  			  "insufficient fifo memory");
>  		addr += size;
>  
> -		writel(val, hsotg->regs + DPTXFSIZN(ep));
> +		__raw_writel(val, hsotg->regs + DPTXFSIZN(ep));
>  	}
>  
>  	/*
> @@ -221,13 +221,13 @@ static void s3c_hsotg_init_fifo(struct dwc2_hsotg *hsotg)
>  	 * all fifos are flushed before continuing
>  	 */
>  
> -	writel(GRSTCTL_TXFNUM(0x10) | GRSTCTL_TXFFLSH |
> +	__raw_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 = __raw_readl(hsotg->regs + GRSTCTL);
>  
>  		if ((val & (GRSTCTL_TXFFLSH | GRSTCTL_RXFFLSH)) == 0)
>  			break;
> @@ -319,7 +319,7 @@ static int s3c_hsotg_write_fifo(struct dwc2_hsotg *hsotg,
>  				struct s3c_hsotg_req *hs_req)
>  {
>  	bool periodic = is_ep_periodic(hs_ep);
> -	u32 gnptxsts = readl(hsotg->regs + GNPTXSTS);
> +	u32 gnptxsts = __raw_readl(hsotg->regs + GNPTXSTS);
>  	int buf_pos = hs_req->req.actual;
>  	int to_write = hs_ep->size_loaded;
>  	void *data;
> @@ -334,7 +334,7 @@ static int s3c_hsotg_write_fifo(struct dwc2_hsotg *hsotg,
>  		return 0;
>  
>  	if (periodic && !hsotg->dedicated_fifos) {
> -		u32 epsize = readl(hsotg->regs + DIEPTSIZ(hs_ep->index));
> +		u32 epsize = __raw_readl(hsotg->regs + DIEPTSIZ(hs_ep->index));
>  		int size_left;
>  		int size_done;
>  
> @@ -375,7 +375,7 @@ static int s3c_hsotg_write_fifo(struct dwc2_hsotg *hsotg,
>  			return -ENOSPC;
>  		}
>  	} else if (hsotg->dedicated_fifos && hs_ep->index != 0) {
> -		can_write = readl(hsotg->regs + DTXFSTS(hs_ep->index));
> +		can_write = __raw_readl(hsotg->regs + DTXFSTS(hs_ep->index));
>  
>  		can_write &= 0xffff;
>  		can_write *= 4;
> @@ -552,11 +552,11 @@ static void s3c_hsotg_start_req(struct dwc2_hsotg *hsotg,
>  	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__, __raw_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 = __raw_readl(hsotg->regs + epctrl_reg);
>  
>  	if (ctrl & DXEPCTL_STALL) {
>  		dev_warn(hsotg->dev, "%s: ep%d is stalled\n", __func__, index);
> @@ -624,7 +624,7 @@ static void s3c_hsotg_start_req(struct dwc2_hsotg *hsotg,
>  	hs_ep->req = hs_req;
>  
>  	/* write size / packets */
> -	writel(epsize, hsotg->regs + epsize_reg);
> +	__raw_writel(epsize, hsotg->regs + epsize_reg);
>  
>  	if (using_dma(hsotg) && !continuing) {
>  		unsigned int dma_reg;
> @@ -635,7 +635,7 @@ static void s3c_hsotg_start_req(struct dwc2_hsotg *hsotg,
>  		 */
>  
>  		dma_reg = dir_in ? DIEPDMA(index) : DOEPDMA(index);
> -		writel(ureq->dma, hsotg->regs + dma_reg);
> +		__raw_writel(ureq->dma, hsotg->regs + dma_reg);
>  
>  		dev_dbg(hsotg->dev, "%s: %pad => 0x%08x\n",
>  			__func__, &ureq->dma, dma_reg);
> @@ -654,7 +654,7 @@ static void s3c_hsotg_start_req(struct dwc2_hsotg *hsotg,
>  
>  
>  	dev_dbg(hsotg->dev, "%s: DxEPCTL=0x%08x\n", __func__, ctrl);
> -	writel(ctrl, hsotg->regs + epctrl_reg);
> +	__raw_writel(ctrl, hsotg->regs + epctrl_reg);
>  
>  	/*
>  	 * set these, it seems that DMA support increments past the end
> @@ -676,7 +676,7 @@ static void s3c_hsotg_start_req(struct dwc2_hsotg *hsotg,
>  	 * to debugging to see what is going on.
>  	 */
>  	if (dir_in)
> -		writel(DIEPMSK_INTKNTXFEMPMSK,
> +		__raw_writel(DIEPMSK_INTKNTXFEMPMSK,
>  		       hsotg->regs + DIEPINT(index));
>  
>  	/*
> @@ -685,13 +685,13 @@ static void s3c_hsotg_start_req(struct dwc2_hsotg *hsotg,
>  	 */
>  
>  	/* check ep is enabled */
> -	if (!(readl(hsotg->regs + epctrl_reg) & DXEPCTL_EPENA))
> +	if (!(__raw_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, __raw_readl(hsotg->regs + epctrl_reg));
>  
>  	dev_dbg(hsotg->dev, "%s: DXEPCTL=0x%08x\n",
> -		__func__, readl(hsotg->regs + epctrl_reg));
> +		__func__, __raw_readl(hsotg->regs + epctrl_reg));
>  
>  	/* enable ep interrupts */
>  	s3c_hsotg_ctrl_epint(hsotg, hs_ep->index, hs_ep->dir_in, 1);
> @@ -1052,14 +1052,14 @@ static void s3c_hsotg_stall_ep0(struct dwc2_hsotg *hsotg)
>  	 * taken effect, so no need to clear later.
>  	 */
>  
> -	ctrl = readl(hsotg->regs + reg);
> +	ctrl = __raw_readl(hsotg->regs + reg);
>  	ctrl |= DXEPCTL_STALL;
>  	ctrl |= DXEPCTL_CNAK;
> -	writel(ctrl, hsotg->regs + reg);
> +	__raw_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, __raw_readl(hsotg->regs + reg));
>  
>  	 /*
>  	  * complete won't be called, so we enqueue
> @@ -1108,11 +1108,11 @@ static void s3c_hsotg_process_control(struct dwc2_hsotg *hsotg,
>  	if ((ctrl->bRequestType & USB_TYPE_MASK) == USB_TYPE_STANDARD) {
>  		switch (ctrl->bRequest) {
>  		case USB_REQ_SET_ADDRESS:
> -			dcfg = readl(hsotg->regs + DCFG);
> +			dcfg = __raw_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);
> +			__raw_writel(dcfg, hsotg->regs + DCFG);
>  
>  			dev_info(hsotg->dev, "new address %d\n", ctrl->wValue);
>  
> @@ -1302,7 +1302,7 @@ static void s3c_hsotg_rx_data(struct dwc2_hsotg *hsotg, int ep_idx, int size)
>  
>  
>  	if (!hs_req) {
> -		u32 epctl = readl(hsotg->regs + DOEPCTL(ep_idx));
> +		u32 epctl = __raw_readl(hsotg->regs + DOEPCTL(ep_idx));
>  		int ptr;
>  
>  		dev_warn(hsotg->dev,
> @@ -1311,7 +1311,7 @@ static void s3c_hsotg_rx_data(struct dwc2_hsotg *hsotg, int ep_idx, int size)
>  
>  		/* dump the data from the FIFO, we've nothing we can do */
>  		for (ptr = 0; ptr < size; ptr += 4)
> -			(void)readl(fifo);
> +			(void)__raw_readl(fifo);
>  
>  		return;
>  	}
> @@ -1378,14 +1378,14 @@ static void s3c_hsotg_send_zlp(struct dwc2_hsotg *hsotg,
>  	dev_dbg(hsotg->dev, "sending zero-length packet\n");
>  
>  	/* issue a zero-sized packet to terminate this */
> -	writel(DXEPTSIZ_MC(1) | DXEPTSIZ_PKTCNT(1) |
> +	__raw_writel(DXEPTSIZ_MC(1) | DXEPTSIZ_PKTCNT(1) |
>  	       DXEPTSIZ_XFERSIZE(0), hsotg->regs + DIEPTSIZ(0));
>  
> -	ctrl = readl(hsotg->regs + DIEPCTL0);
> +	ctrl = __raw_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);
> +	__raw_writel(ctrl, hsotg->regs + DIEPCTL0);
>  }
>  
>  /**
> @@ -1401,7 +1401,7 @@ static void s3c_hsotg_send_zlp(struct dwc2_hsotg *hsotg,
>  static void s3c_hsotg_handle_outdone(struct dwc2_hsotg *hsotg,
>  				     int epnum, bool was_setup)
>  {
> -	u32 epsize = readl(hsotg->regs + DOEPTSIZ(epnum));
> +	u32 epsize = __raw_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 @@ static u32 s3c_hsotg_read_frameno(struct dwc2_hsotg *hsotg)
>  {
>  	u32 dsts;
>  
> -	dsts = readl(hsotg->regs + DSTS);
> +	dsts = __raw_readl(hsotg->regs + DSTS);
>  	dsts &= DSTS_SOFFN_MASK;
>  	dsts >>= DSTS_SOFFN_SHIFT;
>  
> @@ -1500,7 +1500,7 @@ static u32 s3c_hsotg_read_frameno(struct dwc2_hsotg *hsotg)
>   */
>  static void s3c_hsotg_handle_rx(struct dwc2_hsotg *hsotg)
>  {
> -	u32 grxstsr = readl(hsotg->regs + GRXSTSP);
> +	u32 grxstsr = __raw_readl(hsotg->regs + GRXSTSP);
>  	u32 epnum, status, size;
>  
>  	WARN_ON(using_dma(hsotg));
> @@ -1532,7 +1532,7 @@ static void s3c_hsotg_handle_rx(struct dwc2_hsotg *hsotg)
>  		dev_dbg(hsotg->dev,
>  			"SetupDone (Frame=0x%08x, DOPEPCTL=0x%08x)\n",
>  			s3c_hsotg_read_frameno(hsotg),
> -			readl(hsotg->regs + DOEPCTL(0)));
> +			__raw_readl(hsotg->regs + DOEPCTL(0)));
>  
>  		s3c_hsotg_handle_outdone(hsotg, epnum, true);
>  		break;
> @@ -1545,7 +1545,7 @@ static void s3c_hsotg_handle_rx(struct dwc2_hsotg *hsotg)
>  		dev_dbg(hsotg->dev,
>  			"SetupRX (Frame=0x%08x, DOPEPCTL=0x%08x)\n",
>  			s3c_hsotg_read_frameno(hsotg),
> -			readl(hsotg->regs + DOEPCTL(0)));
> +			__raw_readl(hsotg->regs + DOEPCTL(0)));
>  
>  		s3c_hsotg_rx_data(hsotg, epnum, size);
>  		break;
> @@ -1622,16 +1622,16 @@ static void s3c_hsotg_set_ep_maxpacket(struct dwc2_hsotg *hsotg,
>  	 * if one of the directions may not be in use.
>  	 */
>  
> -	reg = readl(regs + DIEPCTL(ep));
> +	reg = __raw_readl(regs + DIEPCTL(ep));
>  	reg &= ~DXEPCTL_MPS_MASK;
>  	reg |= mpsval;
> -	writel(reg, regs + DIEPCTL(ep));
> +	__raw_writel(reg, regs + DIEPCTL(ep));
>  
>  	if (ep) {
> -		reg = readl(regs + DOEPCTL(ep));
> +		reg = __raw_readl(regs + DOEPCTL(ep));
>  		reg &= ~DXEPCTL_MPS_MASK;
>  		reg |= mpsval;
> -		writel(reg, regs + DOEPCTL(ep));
> +		__raw_writel(reg, regs + DOEPCTL(ep));
>  	}
>  
>  	return;
> @@ -1650,14 +1650,14 @@ static void s3c_hsotg_txfifo_flush(struct dwc2_hsotg *hsotg, unsigned int idx)
>  	int timeout;
>  	int val;
>  
> -	writel(GRSTCTL_TXFNUM(idx) | GRSTCTL_TXFFLSH,
> +	__raw_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 = __raw_readl(hsotg->regs + GRSTCTL);
>  
>  		if ((val & (GRSTCTL_TXFFLSH)) == 0)
>  			break;
> @@ -1718,7 +1718,7 @@ static void s3c_hsotg_complete_in(struct dwc2_hsotg *hsotg,
>  				  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 = __raw_readl(hsotg->regs + DIEPTSIZ(hs_ep->index));
>  	int size_left, size_done;
>  
>  	if (!hs_req) {
> @@ -1801,11 +1801,11 @@ static void s3c_hsotg_epint(struct dwc2_hsotg *hsotg, unsigned int idx,
>  	u32 ints;
>  	u32 ctrl;
>  
> -	ints = readl(hsotg->regs + epint_reg);
> -	ctrl = readl(hsotg->regs + epctl_reg);
> +	ints = __raw_readl(hsotg->regs + epint_reg);
> +	ctrl = __raw_readl(hsotg->regs + epctl_reg);
>  
>  	/* Clear endpoint interrupts */
> -	writel(ints, hsotg->regs + epint_reg);
> +	__raw_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 @@ static void s3c_hsotg_epint(struct dwc2_hsotg *hsotg, unsigned int idx,
>  				ctrl |= DXEPCTL_SETEVENFR;
>  			else
>  				ctrl |= DXEPCTL_SETODDFR;
> -			writel(ctrl, hsotg->regs + epctl_reg);
> +			__raw_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__, __raw_readl(hsotg->regs + epctl_reg),
> +			__raw_readl(hsotg->regs + epsiz_reg));
>  
>  		/*
>  		 * we get OutDone from the FIFO, so we only need to look
> @@ -1847,16 +1847,16 @@ static void s3c_hsotg_epint(struct dwc2_hsotg *hsotg, unsigned int idx,
>  		dev_dbg(hsotg->dev, "%s: EPDisbld\n", __func__);
>  
>  		if (dir_in) {
> -			int epctl = readl(hsotg->regs + epctl_reg);
> +			int epctl = __raw_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 = __raw_readl(hsotg->regs + DCTL);
>  
>  				dctl |= DCTL_CGNPINNAK;
> -				writel(dctl, hsotg->regs + DCTL);
> +				__raw_writel(dctl, hsotg->regs + DCTL);
>  			}
>  		}
>  	}
> @@ -1918,7 +1918,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg *hsotg, unsigned int idx,
>   */
>  static void s3c_hsotg_irq_enumdone(struct dwc2_hsotg *hsotg)
>  {
> -	u32 dsts = readl(hsotg->regs + DSTS);
> +	u32 dsts = __raw_readl(hsotg->regs + DSTS);
>  	int ep0_mps = 0, ep_mps = 8;
>  
>  	/*
> @@ -1979,8 +1979,8 @@ static void s3c_hsotg_irq_enumdone(struct dwc2_hsotg *hsotg)
>  	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));
> +		__raw_readl(hsotg->regs + DIEPCTL0),
> +		__raw_readl(hsotg->regs + DOEPCTL0));
>  }
>  
>  /**
> @@ -2014,7 +2014,7 @@ static void kill_all_requests(struct dwc2_hsotg *hsotg,
>  	}
>  	if (!hsotg->dedicated_fifos)
>  		return;
> -	size = (readl(hsotg->regs + DTXFSTS(ep->index)) & 0xffff) * 4;
> +	size = (__raw_readl(hsotg->regs + DTXFSTS(ep->index)) & 0xffff) * 4;
>  	if (size < ep->fifo_size)
>  		s3c_hsotg_txfifo_flush(hsotg, ep->fifo_index);
>  }
> @@ -2089,11 +2089,11 @@ static int s3c_hsotg_corereset(struct dwc2_hsotg *hsotg)
>  	dev_dbg(hsotg->dev, "resetting core\n");
>  
>  	/* issue soft reset */
> -	writel(GRSTCTL_CSFTRST, hsotg->regs + GRSTCTL);
> +	__raw_writel(GRSTCTL_CSFTRST, hsotg->regs + GRSTCTL);
>  
>  	timeout = 10000;
>  	do {
> -		grstctl = readl(hsotg->regs + GRSTCTL);
> +		grstctl = __raw_readl(hsotg->regs + GRSTCTL);
>  	} while ((grstctl & GRSTCTL_CSFTRST) && timeout-- > 0);
>  
>  	if (grstctl & GRSTCTL_CSFTRST) {
> @@ -2104,7 +2104,7 @@ static int s3c_hsotg_corereset(struct dwc2_hsotg *hsotg)
>  	timeout = 10000;
>  
>  	while (1) {
> -		u32 grstctl = readl(hsotg->regs + GRSTCTL);
> +		u32 grstctl = __raw_readl(hsotg->regs + GRSTCTL);
>  
>  		if (timeout-- < 0) {
>  			dev_info(hsotg->dev,
> @@ -2139,22 +2139,22 @@ void s3c_hsotg_core_init_disconnected(struct dwc2_hsotg *hsotg)
>  	 */
>  
>  	/* set the PLL on, remove the HNP/SRP and set the PHY */
> -	writel(hsotg->phyif | GUSBCFG_TOUTCAL(7) |
> +	__raw_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);
> +	__raw_writel(1 << 18 | DCFG_DEVSPD_HS,  hsotg->regs + DCFG);
>  
>  	/* Clear any pending OTG interrupts */
> -	writel(0xffffffff, hsotg->regs + GOTGINT);
> +	__raw_writel(0xffffffff, hsotg->regs + GOTGINT);
>  
>  	/* Clear any pending interrupts */
> -	writel(0xffffffff, hsotg->regs + GINTSTS);
> +	__raw_writel(0xffffffff, hsotg->regs + GINTSTS);
>  
> -	writel(GINTSTS_ERLYSUSP | GINTSTS_SESSREQINT |
> +	__raw_writel(GINTSTS_ERLYSUSP | GINTSTS_SESSREQINT |
>  		GINTSTS_GOUTNAKEFF | GINTSTS_GINNAKEFF |
>  		GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
>  		GINTSTS_ENUMDONE | GINTSTS_OTGINT |
> @@ -2162,12 +2162,12 @@ void s3c_hsotg_core_init_disconnected(struct dwc2_hsotg *hsotg)
>  		hsotg->regs + GINTMSK);
>  
>  	if (using_dma(hsotg))
> -		writel(GAHBCFG_GLBL_INTR_EN | GAHBCFG_DMA_EN |
> +		__raw_writel(GAHBCFG_GLBL_INTR_EN | GAHBCFG_DMA_EN |
>  		       GAHBCFG_HBSTLEN_INCR4,
>  		       hsotg->regs + GAHBCFG);
>  	else
> -		writel(((hsotg->dedicated_fifos) ? (GAHBCFG_NP_TXF_EMP_LVL |
> -						    GAHBCFG_P_TXF_EMP_LVL) : 0) |
> +		__raw_writel(((hsotg->dedicated_fifos) ?
> +		      (GAHBCFG_NP_TXF_EMP_LVL | GAHBCFG_P_TXF_EMP_LVL) : 0) |
>  		       GAHBCFG_GLBL_INTR_EN,
>  		       hsotg->regs + GAHBCFG);
>  
> @@ -2177,7 +2177,7 @@ void s3c_hsotg_core_init_disconnected(struct dwc2_hsotg *hsotg)
>  	 * interrupts.
>  	 */
>  
> -	writel(((hsotg->dedicated_fifos) ? DIEPMSK_TXFIFOEMPTY |
> +	__raw_writel(((hsotg->dedicated_fifos) ? DIEPMSK_TXFIFOEMPTY |
>  		DIEPMSK_INTKNTXFEMPMSK : 0) |
>  		DIEPMSK_EPDISBLDMSK | DIEPMSK_XFERCOMPLMSK |
>  		DIEPMSK_TIMEOUTMSK | DIEPMSK_AHBERRMSK |
> @@ -2188,17 +2188,17 @@ void s3c_hsotg_core_init_disconnected(struct dwc2_hsotg *hsotg)
>  	 * 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 |
> +	__raw_writel((using_dma(hsotg) ? (DIEPMSK_XFERCOMPLMSK |
>  				    DIEPMSK_TIMEOUTMSK) : 0) |
>  		DOEPMSK_EPDISBLDMSK | DOEPMSK_AHBERRMSK |
>  		DOEPMSK_SETUPMSK,
>  		hsotg->regs + DOEPMSK);
>  
> -	writel(0, hsotg->regs + DAINTMSK);
> +	__raw_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));
> +		__raw_readl(hsotg->regs + DIEPCTL0),
> +		__raw_readl(hsotg->regs + DOEPCTL0));
>  
>  	/* enable in and out endpoint interrupts */
>  	s3c_hsotg_en_gsint(hsotg, GINTSTS_OEPINT | GINTSTS_IEPINT);
> @@ -2219,7 +2219,7 @@ void s3c_hsotg_core_init_disconnected(struct dwc2_hsotg *hsotg)
>  	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", __raw_readl(hsotg->regs + DCTL));
>  
>  	/*
>  	 * DxEPCTL_USBActEp says RO in manual, but seems to be set by
> @@ -2227,26 +2227,26 @@ void s3c_hsotg_core_init_disconnected(struct dwc2_hsotg *hsotg)
>  	 */
>  
>  	/* set to read 1 8byte packet */
> -	writel(DXEPTSIZ_MC(1) | DXEPTSIZ_PKTCNT(1) |
> +	__raw_writel(DXEPTSIZ_MC(1) | DXEPTSIZ_PKTCNT(1) |
>  	       DXEPTSIZ_XFERSIZE(8), hsotg->regs + DOEPTSIZ0);
>  
> -	writel(s3c_hsotg_ep0_mps(hsotg->eps[0].ep.maxpacket) |
> +	__raw_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) |
> +	__raw_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));
> +		__raw_readl(hsotg->regs + DIEPCTL0),
> +		__raw_readl(hsotg->regs + DOEPCTL0));
>  
>  	/* clear global NAKs */
> -	writel(DCTL_CGOUTNAK | DCTL_CGNPINNAK | DCTL_SFTDISCON,
> +	__raw_writel(DCTL_CGOUTNAK | DCTL_CGNPINNAK | DCTL_SFTDISCON,
>  	       hsotg->regs + DCTL);
>  
>  	/* must be at-least 3ms to allow bus to see disconnect */
> @@ -2281,8 +2281,8 @@ static irqreturn_t s3c_hsotg_irq(int irq, void *pw)
>  
>  	spin_lock(&hsotg->lock);
>  irq_retry:
> -	gintsts = readl(hsotg->regs + GINTSTS);
> -	gintmsk = readl(hsotg->regs + GINTMSK);
> +	gintsts = __raw_readl(hsotg->regs + GINTSTS);
> +	gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  
>  	dev_dbg(hsotg->dev, "%s: %08x %08x (%08x) retry %d\n",
>  		__func__, gintsts, gintsts & gintmsk, gintmsk, retry_count);
> @@ -2290,15 +2290,15 @@ irq_retry:
>  	gintsts &= gintmsk;
>  
>  	if (gintsts & GINTSTS_ENUMDONE) {
> -		writel(GINTSTS_ENUMDONE, hsotg->regs + GINTSTS);
> +		__raw_writel(GINTSTS_ENUMDONE, hsotg->regs + GINTSTS);
>  
>  		s3c_hsotg_irq_enumdone(hsotg);
>  		hsotg->connected = 1;
>  	}
>  
>  	if (gintsts & (GINTSTS_OEPINT | GINTSTS_IEPINT)) {
> -		u32 daint = readl(hsotg->regs + DAINT);
> -		u32 daintmsk = readl(hsotg->regs + DAINTMSK);
> +		u32 daint = __raw_readl(hsotg->regs + DAINT);
> +		u32 daintmsk = __raw_readl(hsotg->regs + DAINTMSK);
>  		u32 daint_out, daint_in;
>  		int ep;
>  
> @@ -2321,13 +2321,13 @@ irq_retry:
>  
>  	if (gintsts & GINTSTS_USBRST) {
>  
> -		u32 usb_status = readl(hsotg->regs + GOTGCTL);
> +		u32 usb_status = __raw_readl(hsotg->regs + GOTGCTL);
>  
>  		dev_dbg(hsotg->dev, "%s: USBRst\n", __func__);
>  		dev_dbg(hsotg->dev, "GNPTXSTS=%08x\n",
> -			readl(hsotg->regs + GNPTXSTS));
> +			__raw_readl(hsotg->regs + GNPTXSTS));
>  
> -		writel(GINTSTS_USBRST, hsotg->regs + GINTSTS);
> +		__raw_writel(GINTSTS_USBRST, hsotg->regs + GINTSTS);
>  
>  		if (usb_status & GOTGCTL_BSESVLD) {
>  			if (time_after(jiffies, hsotg->last_rst +
> @@ -2378,7 +2378,7 @@ irq_retry:
>  
>  	if (gintsts & GINTSTS_ERLYSUSP) {
>  		dev_dbg(hsotg->dev, "GINTSTS_ErlySusp\n");
> -		writel(GINTSTS_ERLYSUSP, hsotg->regs + GINTSTS);
> +		__raw_writel(GINTSTS_ERLYSUSP, hsotg->regs + GINTSTS);
>  	}
>  
>  	/*
> @@ -2390,7 +2390,7 @@ irq_retry:
>  	if (gintsts & GINTSTS_GOUTNAKEFF) {
>  		dev_info(hsotg->dev, "GOUTNakEff triggered\n");
>  
> -		writel(DCTL_CGOUTNAK, hsotg->regs + DCTL);
> +		__raw_writel(DCTL_CGOUTNAK, hsotg->regs + DCTL);
>  
>  		s3c_hsotg_dump(hsotg);
>  	}
> @@ -2398,7 +2398,7 @@ irq_retry:
>  	if (gintsts & GINTSTS_GINNAKEFF) {
>  		dev_info(hsotg->dev, "GINNakEff triggered\n");
>  
> -		writel(DCTL_CGNPINNAK, hsotg->regs + DCTL);
> +		__raw_writel(DCTL_CGNPINNAK, hsotg->regs + DCTL);
>  
>  		s3c_hsotg_dump(hsotg);
>  	}
> @@ -2456,7 +2456,7 @@ static int s3c_hsotg_ep_enable(struct usb_ep *ep,
>  	/* 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 = __raw_readl(hsotg->regs + epctrl_reg);
>  
>  	dev_dbg(hsotg->dev, "%s: read DxEPCTL=0x%08x from 0x%08x\n",
>  		__func__, epctrl, epctrl_reg);
> @@ -2527,7 +2527,7 @@ static int s3c_hsotg_ep_enable(struct usb_ep *ep,
>  		for (i = 1; i <= 8; ++i) {
>  			if (hsotg->fifo_map & (1<<i))
>  				continue;
> -			val = readl(hsotg->regs + DPTXFSIZN(i));
> +			val = __raw_readl(hsotg->regs + DPTXFSIZN(i));
>  			val = (val >> FIFOSIZE_DEPTH_SHIFT)*4;
>  			if (val < size)
>  				continue;
> @@ -2551,9 +2551,9 @@ static int s3c_hsotg_ep_enable(struct usb_ep *ep,
>  	dev_dbg(hsotg->dev, "%s: write DxEPCTL=0x%08x\n",
>  		__func__, epctrl);
>  
> -	writel(epctrl, hsotg->regs + epctrl_reg);
> +	__raw_writel(epctrl, hsotg->regs + epctrl_reg);
>  	dev_dbg(hsotg->dev, "%s: read DxEPCTL=0x%08x\n",
> -		__func__, readl(hsotg->regs + epctrl_reg));
> +		__func__, __raw_readl(hsotg->regs + epctrl_reg));
>  
>  	/* enable the endpoint interrupt */
>  	s3c_hsotg_ctrl_epint(hsotg, index, dir_in, 1);
> @@ -2594,13 +2594,13 @@ static int s3c_hsotg_ep_disable_force(struct usb_ep *ep, bool force)
>  	hs_ep->fifo_index = 0;
>  	hs_ep->fifo_size = 0;
>  
> -	ctrl = readl(hsotg->regs + epctrl_reg);
> +	ctrl = __raw_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);
> +	__raw_writel(ctrl, hsotg->regs + epctrl_reg);
>  
>  	/* disable endpoint interrupts */
>  	s3c_hsotg_ctrl_epint(hsotg, hs_ep->index, hs_ep->dir_in, 0);
> @@ -2685,7 +2685,7 @@ static int s3c_hsotg_ep_sethalt(struct usb_ep *ep, int value)
>  	/* write both IN and OUT control registers */
>  
>  	epreg = DIEPCTL(index);
> -	epctl = readl(hs->regs + epreg);
> +	epctl = __raw_readl(hs->regs + epreg);
>  
>  	if (value) {
>  		epctl |= DXEPCTL_STALL + DXEPCTL_SNAK;
> @@ -2699,10 +2699,10 @@ static int s3c_hsotg_ep_sethalt(struct usb_ep *ep, int value)
>  				epctl |= DXEPCTL_SETD0PID;
>  	}
>  
> -	writel(epctl, hs->regs + epreg);
> +	__raw_writel(epctl, hs->regs + epreg);
>  
>  	epreg = DOEPCTL(index);
> -	epctl = readl(hs->regs + epreg);
> +	epctl = __raw_readl(hs->regs + epreg);
>  
>  	if (value)
>  		epctl |= DXEPCTL_STALL;
> @@ -2714,7 +2714,7 @@ static int s3c_hsotg_ep_sethalt(struct usb_ep *ep, int value)
>  				epctl |= DXEPCTL_SETD0PID;
>  	}
>  
> -	writel(epctl, hs->regs + epreg);
> +	__raw_writel(epctl, hs->regs + epreg);
>  
>  	hs_ep->halted = value;
>  
> @@ -2803,38 +2803,38 @@ static void s3c_hsotg_init(struct dwc2_hsotg *hsotg)
>  {
>  	/* unmask subset of endpoint interrupts */
>  
> -	writel(DIEPMSK_TIMEOUTMSK | DIEPMSK_AHBERRMSK |
> +	__raw_writel(DIEPMSK_TIMEOUTMSK | DIEPMSK_AHBERRMSK |
>  		DIEPMSK_EPDISBLDMSK | DIEPMSK_XFERCOMPLMSK,
>  		hsotg->regs + DIEPMSK);
>  
> -	writel(DOEPMSK_SETUPMSK | DOEPMSK_AHBERRMSK |
> +	__raw_writel(DOEPMSK_SETUPMSK | DOEPMSK_AHBERRMSK |
>  		DOEPMSK_EPDISBLDMSK | DOEPMSK_XFERCOMPLMSK,
>  		hsotg->regs + DOEPMSK);
>  
> -	writel(0, hsotg->regs + DAINTMSK);
> +	__raw_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,
> +		__raw_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));
> +		__raw_readl(hsotg->regs + GRXFSIZ),
> +		__raw_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),
> +	__raw_writel(GUSBCFG_PHYIF16 | GUSBCFG_TOUTCAL(7) | (0x5 << 10),
>  	       hsotg->regs + GUSBCFG);
>  
> -	writel(using_dma(hsotg) ? GAHBCFG_DMA_EN : 0x0,
> +	__raw_writel(using_dma(hsotg) ? GAHBCFG_DMA_EN : 0x0,
>  	       hsotg->regs + GAHBCFG);
>  }
>  
> @@ -3048,8 +3048,8 @@ static void s3c_hsotg_initep(struct dwc2_hsotg *hsotg,
>  
>  	if (using_dma(hsotg)) {
>  		u32 next = DXEPCTL_NEXTEP((epnum + 1) % 15);
> -		writel(next, hsotg->regs + DIEPCTL(epnum));
> -		writel(next, hsotg->regs + DOEPCTL(epnum));
> +		__raw_writel(next, hsotg->regs + DIEPCTL(epnum));
> +		__raw_writel(next, hsotg->regs + DOEPCTL(epnum));
>  	}
>  }
>  
> @@ -3064,13 +3064,13 @@ static void s3c_hsotg_hw_cfg(struct dwc2_hsotg *hsotg)
>  	u32 cfg2, cfg3, cfg4;
>  	/* check hardware configuration */
>  
> -	cfg2 = readl(hsotg->regs + 0x48);
> +	cfg2 = __raw_readl(hsotg->regs + 0x48);
>  	hsotg->num_of_eps = (cfg2 >> 10) & 0xF;
>  
> -	cfg3 = readl(hsotg->regs + 0x4C);
> +	cfg3 = __raw_readl(hsotg->regs + 0x4C);
>  	hsotg->fifo_mem = (cfg3 >> 16);
>  
> -	cfg4 = readl(hsotg->regs + 0x50);
> +	cfg4 = __raw_readl(hsotg->regs + 0x50);
>  	hsotg->dedicated_fifos = (cfg4 >> 25) & 1;
>  
>  	dev_info(hsotg->dev, "EPs: %d, %s fifos, %d entries in SPRAM\n",
> @@ -3092,19 +3092,19 @@ static void s3c_hsotg_dump(struct dwc2_hsotg *hsotg)
>  	int idx;
>  
>  	dev_info(dev, "DCFG=0x%08x, DCTL=0x%08x, DIEPMSK=%08x\n",
> -		 readl(regs + DCFG), readl(regs + DCTL),
> -		 readl(regs + DIEPMSK));
> +		 __raw_readl(regs + DCFG), __raw_readl(regs + DCTL),
> +		 __raw_readl(regs + DIEPMSK));
>  
>  	dev_info(dev, "GAHBCFG=0x%08x, 0x44=0x%08x\n",
> -		 readl(regs + GAHBCFG), readl(regs + 0x44));
> +		 __raw_readl(regs + GAHBCFG), __raw_readl(regs + 0x44));
>  
>  	dev_info(dev, "GRXFSIZ=0x%08x, GNPTXFSIZ=0x%08x\n",
> -		 readl(regs + GRXFSIZ), readl(regs + GNPTXFSIZ));
> +		 __raw_readl(regs + GRXFSIZ), __raw_readl(regs + GNPTXFSIZ));
>  
>  	/* show periodic fifo settings */
>  
>  	for (idx = 1; idx <= 15; idx++) {
> -		val = readl(regs + DPTXFSIZN(idx));
> +		val = __raw_readl(regs + DPTXFSIZN(idx));
>  		dev_info(dev, "DPTx[%d] FSize=%d, StAddr=0x%08x\n", idx,
>  			 val >> FIFOSIZE_DEPTH_SHIFT,
>  			 val & FIFOSIZE_STARTADDR_MASK);
> @@ -3113,21 +3113,21 @@ static void s3c_hsotg_dump(struct dwc2_hsotg *hsotg)
>  	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)));
> +			 __raw_readl(regs + DIEPCTL(idx)),
> +			 __raw_readl(regs + DIEPTSIZ(idx)),
> +			 __raw_readl(regs + DIEPDMA(idx)));
>  
> -		val = readl(regs + DOEPCTL(idx));
> +		val = __raw_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, __raw_readl(regs + DOEPCTL(idx)),
> +			 __raw_readl(regs + DOEPTSIZ(idx)),
> +			 __raw_readl(regs + DOEPDMA(idx)));
>  
>  	}
>  
>  	dev_info(dev, "DVBUSDIS=0x%08x, DVBUSPULSE=%08x\n",
> -		 readl(regs + DVBUSDIS), readl(regs + DVBUSPULSE));
> +		 __raw_readl(regs + DVBUSDIS), __raw_readl(regs + DVBUSPULSE));
>  #endif
>  }
>  
> @@ -3147,38 +3147,38 @@ static int state_show(struct seq_file *seq, void *v)
>  	int idx;
>  
>  	seq_printf(seq, "DCFG=0x%08x, DCTL=0x%08x, DSTS=0x%08x\n",
> -		 readl(regs + DCFG),
> -		 readl(regs + DCTL),
> -		 readl(regs + DSTS));
> +		 __raw_readl(regs + DCFG),
> +		 __raw_readl(regs + DCTL),
> +		 __raw_readl(regs + DSTS));
>  
>  	seq_printf(seq, "DIEPMSK=0x%08x, DOEPMASK=0x%08x\n",
> -		   readl(regs + DIEPMSK), readl(regs + DOEPMSK));
> +		   __raw_readl(regs + DIEPMSK), __raw_readl(regs + DOEPMSK));
>  
>  	seq_printf(seq, "GINTMSK=0x%08x, GINTSTS=0x%08x\n",
> -		   readl(regs + GINTMSK),
> -		   readl(regs + GINTSTS));
> +		   __raw_readl(regs + GINTMSK),
> +		   __raw_readl(regs + GINTSTS));
>  
>  	seq_printf(seq, "DAINTMSK=0x%08x, DAINT=0x%08x\n",
> -		   readl(regs + DAINTMSK),
> -		   readl(regs + DAINT));
> +		   __raw_readl(regs + DAINTMSK),
> +		   __raw_readl(regs + DAINT));
>  
>  	seq_printf(seq, "GNPTXSTS=0x%08x, GRXSTSR=%08x\n",
> -		   readl(regs + GNPTXSTS),
> -		   readl(regs + GRXSTSR));
> +		   __raw_readl(regs + GNPTXSTS),
> +		   __raw_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 = __raw_readl(regs + DIEPCTL(idx));
> +		out = __raw_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 = __raw_readl(regs + DIEPTSIZ(idx));
> +		out = __raw_readl(regs + DOEPTSIZ(idx));
>  
>  		seq_printf(seq, ", DIEPTSIZ=0x%08x, DOEPTSIZ=0x%08x",
>  			   in, out);
> @@ -3218,9 +3218,9 @@ static int fifo_show(struct seq_file *seq, void *v)
>  	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", __raw_readl(regs + GRXFSIZ));
>  
> -	val = readl(regs + GNPTXFSIZ);
> +	val = __raw_readl(regs + GNPTXFSIZ);
>  	seq_printf(seq, "NPTXFIFO: Size %d, Start 0x%08x\n",
>  		   val >> FIFOSIZE_DEPTH_SHIFT,
>  		   val & FIFOSIZE_DEPTH_MASK);
> @@ -3228,7 +3228,7 @@ static int fifo_show(struct seq_file *seq, void *v)
>  	seq_puts(seq, "\nPeriodic TXFIFOs:\n");
>  
>  	for (idx = 1; idx <= 15; idx++) {
> -		val = readl(regs + DPTXFSIZN(idx));
> +		val = __raw_readl(regs + DPTXFSIZN(idx));
>  
>  		seq_printf(seq, "\tDPTXFIFO%2d: Size %d, Start 0x%08x\n", idx,
>  			   val >> FIFOSIZE_DEPTH_SHIFT,
> @@ -3281,20 +3281,20 @@ static int ep_show(struct seq_file *seq, void *v)
>  	/* first show the register state */
>  
>  	seq_printf(seq, "\tDIEPCTL=0x%08x, DOEPCTL=0x%08x\n",
> -		   readl(regs + DIEPCTL(index)),
> -		   readl(regs + DOEPCTL(index)));
> +		   __raw_readl(regs + DIEPCTL(index)),
> +		   __raw_readl(regs + DOEPCTL(index)));
>  
>  	seq_printf(seq, "\tDIEPDMA=0x%08x, DOEPDMA=0x%08x\n",
> -		   readl(regs + DIEPDMA(index)),
> -		   readl(regs + DOEPDMA(index)));
> +		   __raw_readl(regs + DIEPDMA(index)),
> +		   __raw_readl(regs + DOEPDMA(index)));
>  
>  	seq_printf(seq, "\tDIEPINT=0x%08x, DOEPINT=0x%08x\n",
> -		   readl(regs + DIEPINT(index)),
> -		   readl(regs + DOEPINT(index)));
> +		   __raw_readl(regs + DIEPINT(index)),
> +		   __raw_readl(regs + DOEPINT(index)));
>  
>  	seq_printf(seq, "\tDIEPTSIZ=0x%08x, DOEPTSIZ=0x%08x\n",
> -		   readl(regs + DIEPTSIZ(index)),
> -		   readl(regs + DOEPTSIZ(index)));
> +		   __raw_readl(regs + DIEPTSIZ(index)),
> +		   __raw_readl(regs + DOEPTSIZ(index)));
>  
>  	seq_puts(seq, "\n");
>  	seq_printf(seq, "mps %d\n", ep->ep.maxpacket);
> diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
> index a0cd9db..5d75506 100644
> --- a/drivers/usb/dwc2/hcd.c
> +++ b/drivers/usb/dwc2/hcd.c
> @@ -80,10 +80,10 @@ static void dwc2_dump_channel_info(struct dwc2_hsotg *hsotg,
>  	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 = __raw_readl(hsotg->regs + HCCHAR(chan->hc_num));
> +	hcsplt = __raw_readl(hsotg->regs + HCSPLT(chan->hc_num));
> +	hctsiz = __raw_readl(hsotg->regs + HCTSIZ(chan->hc_num));
> +	hc_dma = __raw_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 @@ void dwc2_hcd_start(struct dwc2_hsotg *hsotg)
>  		 */
>  		hprt0 = dwc2_read_hprt0(hsotg);
>  		hprt0 |= HPRT0_RST;
> -		writel(hprt0, hsotg->regs + HPRT0);
> +		__raw_writel(hprt0, hsotg->regs + HPRT0);
>  	}
>  
>  	queue_delayed_work(hsotg->wq_otg, &hsotg->start_work,
> @@ -228,11 +228,11 @@ static void dwc2_hcd_cleanup_channels(struct dwc2_hsotg *hsotg)
>  			channel = hsotg->hc_ptr_array[i];
>  			if (!list_empty(&channel->hc_list_entry))
>  				continue;
> -			hcchar = readl(hsotg->regs + HCCHAR(i));
> +			hcchar = __raw_readl(hsotg->regs + HCCHAR(i));
>  			if (hcchar & HCCHAR_CHENA) {
>  				hcchar &= ~(HCCHAR_CHENA | HCCHAR_EPDIR);
>  				hcchar |= HCCHAR_CHDIS;
> -				writel(hcchar, hsotg->regs + HCCHAR(i));
> +				__raw_writel(hcchar, hsotg->regs + HCCHAR(i));
>  			}
>  		}
>  	}
> @@ -241,11 +241,11 @@ static void dwc2_hcd_cleanup_channels(struct dwc2_hsotg *hsotg)
>  		channel = hsotg->hc_ptr_array[i];
>  		if (!list_empty(&channel->hc_list_entry))
>  			continue;
> -		hcchar = readl(hsotg->regs + HCCHAR(i));
> +		hcchar = __raw_readl(hsotg->regs + HCCHAR(i));
>  		if (hcchar & HCCHAR_CHENA) {
>  			/* Halt the channel */
>  			hcchar |= HCCHAR_CHDIS;
> -			writel(hcchar, hsotg->regs + HCCHAR(i));
> +			__raw_writel(hcchar, hsotg->regs + HCCHAR(i));
>  		}
>  
>  		dwc2_hc_cleanup(hsotg, channel);
> @@ -279,11 +279,11 @@ void dwc2_hcd_disconnect(struct dwc2_hsotg *hsotg)
>  	 * interrupt mask and status bits and disabling subsequent host
>  	 * channel interrupts.
>  	 */
> -	intr = readl(hsotg->regs + GINTMSK);
> +	intr = __raw_readl(hsotg->regs + GINTMSK);
>  	intr &= ~(GINTSTS_NPTXFEMP | GINTSTS_PTXFEMP | GINTSTS_HCHINT);
> -	writel(intr, hsotg->regs + GINTMSK);
> +	__raw_writel(intr, hsotg->regs + GINTMSK);
>  	intr = GINTSTS_NPTXFEMP | GINTSTS_PTXFEMP | GINTSTS_HCHINT;
> -	writel(intr, hsotg->regs + GINTSTS);
> +	__raw_writel(intr, hsotg->regs + GINTSTS);
>  
>  	/*
>  	 * Turn off the vbus power only if the core has transitioned to device
> @@ -293,7 +293,7 @@ void dwc2_hcd_disconnect(struct dwc2_hsotg *hsotg)
>  	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);
> +			__raw_writel(0, hsotg->regs + HPRT0);
>  		}
>  
>  		dwc2_disable_host_interrupts(hsotg);
> @@ -344,7 +344,7 @@ void dwc2_hcd_stop(struct dwc2_hsotg *hsotg)
>  
>  	/* Turn off the vbus power */
>  	dev_dbg(hsotg->dev, "PortPower off\n");
> -	writel(0, hsotg->regs + HPRT0);
> +	__raw_writel(0, hsotg->regs + HPRT0);
>  }
>  
>  static int dwc2_hcd_urb_enqueue(struct dwc2_hsotg *hsotg,
> @@ -369,7 +369,7 @@ static int dwc2_hcd_urb_enqueue(struct dwc2_hsotg *hsotg,
>  	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 = __raw_readl(hsotg->regs + HPRT0);
>  		u32 prtspd = (hprt0 & HPRT0_SPD_MASK) >> HPRT0_SPD_SHIFT;
>  
>  		if (prtspd == HPRT0_SPD_FULL_SPEED)
> @@ -391,7 +391,7 @@ static int dwc2_hcd_urb_enqueue(struct dwc2_hsotg *hsotg,
>  		return retval;
>  	}
>  
> -	intr_mask = readl(hsotg->regs + GINTMSK);
> +	intr_mask = __raw_readl(hsotg->regs + GINTMSK);
>  	if (!(intr_mask & GINTSTS_SOF)) {
>  		enum dwc2_transaction_type tr_type;
>  
> @@ -1059,7 +1059,7 @@ static void dwc2_process_periodic_channels(struct dwc2_hsotg *hsotg)
>  	if (dbg_perio())
>  		dev_vdbg(hsotg->dev, "Queue periodic transactions\n");
>  
> -	tx_status = readl(hsotg->regs + HPTXSTS);
> +	tx_status = __raw_readl(hsotg->regs + HPTXSTS);
>  	qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >>
>  		    TXSTS_QSPCAVAIL_SHIFT;
>  	fspcavail = (tx_status & TXSTS_FSPCAVAIL_MASK) >>
> @@ -1074,7 +1074,7 @@ static void dwc2_process_periodic_channels(struct dwc2_hsotg *hsotg)
>  
>  	qh_ptr = hsotg->periodic_sched_assigned.next;
>  	while (qh_ptr != &hsotg->periodic_sched_assigned) {
> -		tx_status = readl(hsotg->regs + HPTXSTS);
> +		tx_status = __raw_readl(hsotg->regs + HPTXSTS);
>  		qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >>
>  			    TXSTS_QSPCAVAIL_SHIFT;
>  		if (qspcavail == 0) {
> @@ -1134,7 +1134,7 @@ static void dwc2_process_periodic_channels(struct dwc2_hsotg *hsotg)
>  	}
>  
>  	if (hsotg->core_params->dma_enable <= 0) {
> -		tx_status = readl(hsotg->regs + HPTXSTS);
> +		tx_status = __raw_readl(hsotg->regs + HPTXSTS);
>  		qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >>
>  			    TXSTS_QSPCAVAIL_SHIFT;
>  		fspcavail = (tx_status & TXSTS_FSPCAVAIL_MASK) >>
> @@ -1157,9 +1157,9 @@ static void dwc2_process_periodic_channels(struct dwc2_hsotg *hsotg)
>  			 * level to ensure that new requests are loaded as
>  			 * soon as possible.)
>  			 */
> -			gintmsk = readl(hsotg->regs + GINTMSK);
> +			gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  			gintmsk |= GINTSTS_PTXFEMP;
> -			writel(gintmsk, hsotg->regs + GINTMSK);
> +			__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  		} else {
>  			/*
>  			 * Disable the Tx FIFO empty interrupt since there are
> @@ -1168,9 +1168,9 @@ static void dwc2_process_periodic_channels(struct dwc2_hsotg *hsotg)
>  			 * handlers to queue more transactions as transfer
>  			 * states change.
>  			 */
> -			gintmsk = readl(hsotg->regs + GINTMSK);
> +			gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  			gintmsk &= ~GINTSTS_PTXFEMP;
> -			writel(gintmsk, hsotg->regs + GINTMSK);
> +			__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  		}
>  	}
>  }
> @@ -1199,7 +1199,7 @@ static void dwc2_process_non_periodic_channels(struct dwc2_hsotg *hsotg)
>  
>  	dev_vdbg(hsotg->dev, "Queue non-periodic transactions\n");
>  
> -	tx_status = readl(hsotg->regs + GNPTXSTS);
> +	tx_status = __raw_readl(hsotg->regs + GNPTXSTS);
>  	qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >>
>  		    TXSTS_QSPCAVAIL_SHIFT;
>  	fspcavail = (tx_status & TXSTS_FSPCAVAIL_MASK) >>
> @@ -1222,7 +1222,7 @@ static void dwc2_process_non_periodic_channels(struct dwc2_hsotg *hsotg)
>  	 * available in the request queue or the Tx FIFO
>  	 */
>  	do {
> -		tx_status = readl(hsotg->regs + GNPTXSTS);
> +		tx_status = __raw_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 @@ next:
>  	} while (hsotg->non_periodic_qh_ptr != orig_qh_ptr);
>  
>  	if (hsotg->core_params->dma_enable <= 0) {
> -		tx_status = readl(hsotg->regs + GNPTXSTS);
> +		tx_status = __raw_readl(hsotg->regs + GNPTXSTS);
>  		qspcavail = (tx_status & TXSTS_QSPCAVAIL_MASK) >>
>  			    TXSTS_QSPCAVAIL_SHIFT;
>  		fspcavail = (tx_status & TXSTS_FSPCAVAIL_MASK) >>
> @@ -1279,9 +1279,9 @@ next:
>  			 * level to ensure that new requests are loaded as
>  			 * soon as possible.)
>  			 */
> -			gintmsk = readl(hsotg->regs + GINTMSK);
> +			gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  			gintmsk |= GINTSTS_NPTXFEMP;
> -			writel(gintmsk, hsotg->regs + GINTMSK);
> +			__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  		} else {
>  			/*
>  			 * Disable the Tx FIFO empty interrupt since there are
> @@ -1290,9 +1290,9 @@ next:
>  			 * handlers to queue more transactions as transfer
>  			 * states change.
>  			 */
> -			gintmsk = readl(hsotg->regs + GINTMSK);
> +			gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  			gintmsk &= ~GINTSTS_NPTXFEMP;
> -			writel(gintmsk, hsotg->regs + GINTMSK);
> +			__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  		}
>  	}
>  }
> @@ -1330,10 +1330,10 @@ void dwc2_hcd_queue_transactions(struct dwc2_hsotg *hsotg,
>  			 * 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 = __raw_readl(hsotg->regs + GINTMSK);
>  
>  			gintmsk &= ~GINTSTS_NPTXFEMP;
> -			writel(gintmsk, hsotg->regs + GINTMSK);
> +			__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  		}
>  	}
>  }
> @@ -1347,7 +1347,7 @@ static void dwc2_conn_id_status_change(struct work_struct *work)
>  
>  	dev_dbg(hsotg->dev, "%s()\n", __func__);
>  
> -	gotgctl = readl(hsotg->regs + GOTGCTL);
> +	gotgctl = __raw_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));
> @@ -1410,9 +1410,9 @@ static void dwc2_wakeup_detected(unsigned long data)
>  	hprt0 = dwc2_read_hprt0(hsotg);
>  	dev_dbg(hsotg->dev, "Resume: HPRT0=%0x\n", hprt0);
>  	hprt0 &= ~HPRT0_RES;
> -	writel(hprt0, hsotg->regs + HPRT0);
> +	__raw_writel(hprt0, hsotg->regs + HPRT0);
>  	dev_dbg(hsotg->dev, "Clear Resume: HPRT0=%0x\n",
> -		readl(hsotg->regs + HPRT0));
> +		__raw_readl(hsotg->regs + HPRT0));
>  
>  	dwc2_hcd_rem_wakeup(hsotg);
>  
> @@ -1440,30 +1440,30 @@ static void dwc2_port_suspend(struct dwc2_hsotg *hsotg, u16 windex)
>  	spin_lock_irqsave(&hsotg->lock, flags);
>  
>  	if (windex == hsotg->otg_port && dwc2_host_is_b_hnp_enabled(hsotg)) {
> -		gotgctl = readl(hsotg->regs + GOTGCTL);
> +		gotgctl = __raw_readl(hsotg->regs + GOTGCTL);
>  		gotgctl |= GOTGCTL_HSTSETHNPEN;
> -		writel(gotgctl, hsotg->regs + GOTGCTL);
> +		__raw_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);
> +	__raw_writel(hprt0, hsotg->regs + HPRT0);
>  
>  	/* Update lx_state */
>  	hsotg->lx_state = DWC2_L2;
>  
>  	/* Suspend the Phy Clock */
> -	pcgctl = readl(hsotg->regs + PCGCTL);
> +	pcgctl = __raw_readl(hsotg->regs + PCGCTL);
>  	pcgctl |= PCGCTL_STOPPCLK;
> -	writel(pcgctl, hsotg->regs + PCGCTL);
> +	__raw_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 = __raw_readl(hsotg->regs + PCGCTL);
>  		pcgctl &= ~PCGCTL_STOPPCLK;
> -		writel(pcgctl, hsotg->regs + PCGCTL);
> +		__raw_writel(pcgctl, hsotg->regs + PCGCTL);
>  
>  		spin_unlock_irqrestore(&hsotg->lock, flags);
>  
> @@ -1480,12 +1480,12 @@ static void dwc2_port_resume(struct dwc2_hsotg *hsotg)
>  	/* After clear the Stop PHY clock bit, we should wait for a moment
>  	 * for PLL work stable with clock output.
>  	 */
> -	writel(0, hsotg->regs + PCGCTL);
> +	__raw_writel(0, hsotg->regs + PCGCTL);
>  	usleep_range(2000, 4000);
>  
>  	hprt0 = dwc2_read_hprt0(hsotg);
>  	hprt0 |= HPRT0_RES;
> -	writel(hprt0, hsotg->regs + HPRT0);
> +	__raw_writel(hprt0, hsotg->regs + HPRT0);
>  	hprt0 &= ~HPRT0_SUSP;
>  	/* according to USB2.0 Spec 7.1.7.7, the host must send the resume
>  	 * signal for at least 20ms
> @@ -1493,7 +1493,7 @@ static void dwc2_port_resume(struct dwc2_hsotg *hsotg)
>  	usleep_range(20000, 25000);
>  
>  	hprt0 &= ~HPRT0_RES;
> -	writel(hprt0, hsotg->regs + HPRT0);
> +	__raw_writel(hprt0, hsotg->regs + HPRT0);
>  	hsotg->lx_state = DWC2_L0;
>  }
>  
> @@ -1536,7 +1536,7 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
>  				"ClearPortFeature USB_PORT_FEAT_ENABLE\n");
>  			hprt0 = dwc2_read_hprt0(hsotg);
>  			hprt0 |= HPRT0_ENA;
> -			writel(hprt0, hsotg->regs + HPRT0);
> +			__raw_writel(hprt0, hsotg->regs + HPRT0);
>  			break;
>  
>  		case USB_PORT_FEAT_SUSPEND:
> @@ -1550,7 +1550,7 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
>  				"ClearPortFeature USB_PORT_FEAT_POWER\n");
>  			hprt0 = dwc2_read_hprt0(hsotg);
>  			hprt0 &= ~HPRT0_PWR;
> -			writel(hprt0, hsotg->regs + HPRT0);
> +			__raw_writel(hprt0, hsotg->regs + HPRT0);
>  			break;
>  
>  		case USB_PORT_FEAT_INDICATOR:
> @@ -1669,7 +1669,7 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
>  			break;
>  		}
>  
> -		hprt0 = readl(hsotg->regs + HPRT0);
> +		hprt0 = __raw_readl(hsotg->regs + HPRT0);
>  		dev_vdbg(hsotg->dev, "  HPRT0: 0x%08x\n", hprt0);
>  
>  		if (hprt0 & HPRT0_CONNSTS)
> @@ -1734,18 +1734,18 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
>  				"SetPortFeature - USB_PORT_FEAT_POWER\n");
>  			hprt0 = dwc2_read_hprt0(hsotg);
>  			hprt0 |= HPRT0_PWR;
> -			writel(hprt0, hsotg->regs + HPRT0);
> +			__raw_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 = __raw_readl(hsotg->regs + PCGCTL);
>  			pcgctl &= ~(PCGCTL_ENBL_SLEEP_GATING | PCGCTL_STOPPCLK);
> -			writel(pcgctl, hsotg->regs + PCGCTL);
> +			__raw_writel(pcgctl, hsotg->regs + PCGCTL);
>  			/* ??? Original driver does this */
> -			writel(0, hsotg->regs + PCGCTL);
> +			__raw_writel(0, hsotg->regs + PCGCTL);
>  
>  			hprt0 = dwc2_read_hprt0(hsotg);
>  			/* Clear suspend bit if resetting from suspend state */
> @@ -1760,13 +1760,13 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
>  				hprt0 |= HPRT0_PWR | HPRT0_RST;
>  				dev_dbg(hsotg->dev,
>  					"In host mode, hprt0=%08x\n", hprt0);
> -				writel(hprt0, hsotg->regs + HPRT0);
> +				__raw_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);
> +			__raw_writel(hprt0, hsotg->regs + HPRT0);
>  			hsotg->lx_state = DWC2_L0; /* Now back to On state */
>  			break;
>  
> @@ -1830,7 +1830,7 @@ static int dwc2_hcd_is_status_changed(struct dwc2_hsotg *hsotg, int port)
>  
>  int dwc2_hcd_get_frame_number(struct dwc2_hsotg *hsotg)
>  {
> -	u32 hfnum = readl(hsotg->regs + HFNUM);
> +	u32 hfnum = __raw_readl(hsotg->regs + HFNUM);
>  
>  #ifdef DWC2_DEBUG_SOF
>  	dev_vdbg(hsotg->dev, "DWC OTG HCD GET FRAME NUMBER %d\n",
> @@ -1933,11 +1933,11 @@ void dwc2_hcd_dump_state(struct dwc2_hsotg *hsotg)
>  		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 = __raw_readl(hsotg->regs + HFNUM);
> +			hcchar = __raw_readl(hsotg->regs + HCCHAR(i));
> +			hctsiz = __raw_readl(hsotg->regs + HCTSIZ(i));
> +			hcint = __raw_readl(hsotg->regs + HCINT(i));
> +			hcintmsk = __raw_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);
> @@ -1985,12 +1985,12 @@ void dwc2_hcd_dump_state(struct dwc2_hsotg *hsotg)
>  	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 = __raw_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 = __raw_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",
> @@ -2254,7 +2254,7 @@ static void dwc2_hcd_reset_func(struct work_struct *work)
>  	dev_dbg(hsotg->dev, "USB RESET function called\n");
>  	hprt0 = dwc2_read_hprt0(hsotg);
>  	hprt0 &= ~HPRT0_RST;
> -	writel(hprt0, hsotg->regs + HPRT0);
> +	__raw_writel(hprt0, hsotg->regs + HPRT0);
>  	hsotg->flags.b.port_reset_change = 1;
>  }
>  
> @@ -2334,10 +2334,10 @@ static int _dwc2_hcd_suspend(struct usb_hcd *hcd)
>  	if (hprt0 & HPRT0_CONNSTS) {
>  		dwc2_port_suspend(hsotg, 1);
>  	} else {
> -		u32 pcgctl = readl(hsotg->regs + PCGCTL);
> +		u32 pcgctl = __raw_readl(hsotg->regs + PCGCTL);
>  
>  		pcgctl |= PCGCTL_STOPPCLK;
> -		writel(pcgctl, hsotg->regs + PCGCTL);
> +		__raw_writel(pcgctl, hsotg->regs + PCGCTL);
>  	}
>  
>  	return 0;
> @@ -2359,7 +2359,7 @@ static int _dwc2_hcd_resume(struct usb_hcd *hcd)
>  	if ((hprt0 & HPRT0_CONNSTS) && (hprt0 & HPRT0_SUSP))
>  		dwc2_port_resume(hsotg);
>  	else
> -		writel(0, hsotg->regs + PCGCTL);
> +		__raw_writel(0, hsotg->regs + PCGCTL);
>  
>  	return 0;
>  }
> @@ -2783,17 +2783,17 @@ static void dwc2_hcd_free(struct dwc2_hsotg *hsotg)
>  		hsotg->status_buf = NULL;
>  	}
>  
> -	ahbcfg = readl(hsotg->regs + GAHBCFG);
> +	ahbcfg = __raw_readl(hsotg->regs + GAHBCFG);
>  
>  	/* Disable all interrupts */
>  	ahbcfg &= ~GAHBCFG_GLBL_INTR_EN;
> -	writel(ahbcfg, hsotg->regs + GAHBCFG);
> -	writel(0, hsotg->regs + GINTMSK);
> +	__raw_writel(ahbcfg, hsotg->regs + GAHBCFG);
> +	__raw_writel(0, hsotg->regs + GINTMSK);
>  
>  	if (hsotg->hw_params.snpsid >= DWC2_CORE_REV_3_00a) {
> -		dctl = readl(hsotg->regs + DCTL);
> +		dctl = __raw_readl(hsotg->regs + DCTL);
>  		dctl |= DCTL_SFTDISCON;
> -		writel(dctl, hsotg->regs + DCTL);
> +		__raw_writel(dctl, hsotg->regs + DCTL);
>  	}
>  
>  	if (hsotg->wq_otg) {
> @@ -2859,7 +2859,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq,
>  
>  	retval = -ENOMEM;
>  
> -	hcfg = readl(hsotg->regs + HCFG);
> +	hcfg = __raw_readl(hsotg->regs + HCFG);
>  	dev_dbg(hsotg->dev, "hcfg=%08x\n", hcfg);
>  
>  #ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS
> diff --git a/drivers/usb/dwc2/hcd.h b/drivers/usb/dwc2/hcd.h
> index e69a843..003ada8 100644
> --- a/drivers/usb/dwc2/hcd.h
> +++ b/drivers/usb/dwc2/hcd.h
> @@ -371,10 +371,10 @@ static inline struct usb_hcd *dwc2_hsotg_to_hcd(struct dwc2_hsotg *hsotg)
>   */
>  static inline void disable_hc_int(struct dwc2_hsotg *hsotg, int chnum, u32 intr)
>  {
> -	u32 mask = readl(hsotg->regs + HCINTMSK(chnum));
> +	u32 mask = __raw_readl(hsotg->regs + HCINTMSK(chnum));
>  
>  	mask &= ~intr;
> -	writel(mask, hsotg->regs + HCINTMSK(chnum));
> +	__raw_writel(mask, hsotg->regs + HCINTMSK(chnum));
>  }
>  
>  /*
> @@ -382,11 +382,11 @@ static inline void disable_hc_int(struct dwc2_hsotg *hsotg, int chnum, u32 intr)
>   */
>  static inline int dwc2_is_host_mode(struct dwc2_hsotg *hsotg)
>  {
> -	return (readl(hsotg->regs + GINTSTS) & GINTSTS_CURMODE_HOST) != 0;
> +	return (__raw_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 (__raw_readl(hsotg->regs + GINTSTS) & GINTSTS_CURMODE_HOST) == 0;
>  }
>  
>  /*
> @@ -395,7 +395,7 @@ static inline int dwc2_is_device_mode(struct dwc2_hsotg *hsotg)
>   */
>  static inline u32 dwc2_read_hprt0(struct dwc2_hsotg *hsotg)
>  {
> -	u32 hprt0 = readl(hsotg->regs + HPRT0);
> +	u32 hprt0 = __raw_readl(hsotg->regs + HPRT0);
>  
>  	hprt0 &= ~(HPRT0_ENA | HPRT0_CONNDET | HPRT0_ENACHG | HPRT0_OVRCURRCHG);
>  	return hprt0;
> @@ -582,7 +582,8 @@ static inline u16 dwc2_micro_frame_num(u16 frame)
>   */
>  static inline u32 dwc2_read_core_intr(struct dwc2_hsotg *hsotg)
>  {
> -	return readl(hsotg->regs + GINTSTS) & readl(hsotg->regs + GINTMSK);
> +	return __raw_readl(hsotg->regs + GINTSTS) &
> +	       __raw_readl(hsotg->regs + GINTMSK);
>  }
>  
>  static inline u32 dwc2_hcd_urb_get_status(struct dwc2_hcd_urb *dwc2_urb)
> @@ -734,7 +735,7 @@ do {									\
>  			   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 = __raw_readl((_hcd_)->regs + HFNUM);	\
>  		switch (_hfnum_.b.frnum & 0x7) {			\
>  		case 7:							\
>  			(_hcd_)->hfnum_7_samples_##_letter_++;		\
> diff --git a/drivers/usb/dwc2/hcd_ddma.c b/drivers/usb/dwc2/hcd_ddma.c
> index 3376177..24b8ff8 100644
> --- a/drivers/usb/dwc2/hcd_ddma.c
> +++ b/drivers/usb/dwc2/hcd_ddma.c
> @@ -169,19 +169,19 @@ static void dwc2_per_sched_enable(struct dwc2_hsotg *hsotg, u32 fr_list_en)
>  
>  	spin_lock_irqsave(&hsotg->lock, flags);
>  
> -	hcfg = readl(hsotg->regs + HCFG);
> +	hcfg = __raw_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);
> +	__raw_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);
> +	__raw_writel(hcfg, hsotg->regs + HCFG);
>  
>  	spin_unlock_irqrestore(&hsotg->lock, flags);
>  }
> @@ -193,7 +193,7 @@ static void dwc2_per_sched_disable(struct dwc2_hsotg *hsotg)
>  
>  	spin_lock_irqsave(&hsotg->lock, flags);
>  
> -	hcfg = readl(hsotg->regs + HCFG);
> +	hcfg = __raw_readl(hsotg->regs + HCFG);
>  	if (!(hcfg & HCFG_PERSCHEDENA)) {
>  		/* already disabled */
>  		spin_unlock_irqrestore(&hsotg->lock, flags);
> @@ -202,7 +202,7 @@ static void dwc2_per_sched_disable(struct dwc2_hsotg *hsotg)
>  
>  	hcfg &= ~HCFG_PERSCHEDENA;
>  	dev_vdbg(hsotg->dev, "Disabling Periodic schedule\n");
> -	writel(hcfg, hsotg->regs + HCFG);
> +	__raw_writel(hcfg, hsotg->regs + HCFG);
>  
>  	spin_unlock_irqrestore(&hsotg->lock, flags);
>  }
> diff --git a/drivers/usb/dwc2/hcd_intr.c b/drivers/usb/dwc2/hcd_intr.c
> index 551ba87..7af8a40 100644
> --- a/drivers/usb/dwc2/hcd_intr.c
> +++ b/drivers/usb/dwc2/hcd_intr.c
> @@ -148,7 +148,7 @@ static void dwc2_sof_intr(struct dwc2_hsotg *hsotg)
>  		dwc2_hcd_queue_transactions(hsotg, tr_type);
>  
>  	/* Clear interrupt */
> -	writel(GINTSTS_SOF, hsotg->regs + GINTSTS);
> +	__raw_writel(GINTSTS_SOF, hsotg->regs + GINTSTS);
>  }
>  
>  /*
> @@ -164,7 +164,7 @@ static void dwc2_rx_fifo_level_intr(struct dwc2_hsotg *hsotg)
>  	if (dbg_perio())
>  		dev_vdbg(hsotg->dev, "--RxFIFO Level Interrupt--\n");
>  
> -	grxsts = readl(hsotg->regs + GRXSTSP);
> +	grxsts = __raw_readl(hsotg->regs + GRXSTSP);
>  	chnum = (grxsts & GRXSTS_HCHNUM_MASK) >> GRXSTS_HCHNUM_SHIFT;
>  	chan = hsotg->hc_ptr_array[chnum];
>  	if (!chan) {
> @@ -247,11 +247,11 @@ static void dwc2_hprt0_enable(struct dwc2_hsotg *hsotg, u32 hprt0,
>  	dev_vdbg(hsotg->dev, "%s(%p)\n", __func__, hsotg);
>  
>  	/* Every time when port enables calculate HFIR.FrInterval */
> -	hfir = readl(hsotg->regs + HFIR);
> +	hfir = __raw_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);
> +	__raw_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 @@ static void dwc2_hprt0_enable(struct dwc2_hsotg *hsotg, u32 hprt0,
>  		return;
>  	}
>  
> -	usbcfg = readl(hsotg->regs + GUSBCFG);
> +	usbcfg = __raw_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 @@ static void dwc2_hprt0_enable(struct dwc2_hsotg *hsotg, u32 hprt0,
>  		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);
> +			__raw_writel(usbcfg, hsotg->regs + GUSBCFG);
>  			do_reset = 1;
>  		}
>  
> -		hcfg = readl(hsotg->regs + HCFG);
> +		hcfg = __raw_readl(hsotg->regs + HCFG);
>  		fslspclksel = (hcfg & HCFG_FSLSPCLKSEL_MASK) >>
>  			      HCFG_FSLSPCLKSEL_SHIFT;
>  
> @@ -286,7 +286,7 @@ static void dwc2_hprt0_enable(struct dwc2_hsotg *hsotg, u32 hprt0,
>  				fslspclksel = HCFG_FSLSPCLKSEL_6_MHZ;
>  				hcfg &= ~HCFG_FSLSPCLKSEL_MASK;
>  				hcfg |= fslspclksel << HCFG_FSLSPCLKSEL_SHIFT;
> -				writel(hcfg, hsotg->regs + HCFG);
> +				__raw_writel(hcfg, hsotg->regs + HCFG);
>  				do_reset = 1;
>  			}
>  		} else {
> @@ -297,7 +297,7 @@ static void dwc2_hprt0_enable(struct dwc2_hsotg *hsotg, u32 hprt0,
>  				fslspclksel = HCFG_FSLSPCLKSEL_48_MHZ;
>  				hcfg &= ~HCFG_FSLSPCLKSEL_MASK;
>  				hcfg |= fslspclksel << HCFG_FSLSPCLKSEL_SHIFT;
> -				writel(hcfg, hsotg->regs + HCFG);
> +				__raw_writel(hcfg, hsotg->regs + HCFG);
>  				do_reset = 1;
>  			}
>  		}
> @@ -305,7 +305,7 @@ static void dwc2_hprt0_enable(struct dwc2_hsotg *hsotg, u32 hprt0,
>  		/* Not low power */
>  		if (usbcfg & GUSBCFG_PHY_LP_CLK_SEL) {
>  			usbcfg &= ~GUSBCFG_PHY_LP_CLK_SEL;
> -			writel(usbcfg, hsotg->regs + GUSBCFG);
> +			__raw_writel(usbcfg, hsotg->regs + GUSBCFG);
>  			do_reset = 1;
>  		}
>  	}
> @@ -332,7 +332,7 @@ static void dwc2_port_intr(struct dwc2_hsotg *hsotg)
>  
>  	dev_vdbg(hsotg->dev, "--Port Interrupt--\n");
>  
> -	hprt0 = readl(hsotg->regs + HPRT0);
> +	hprt0 = __raw_readl(hsotg->regs + HPRT0);
>  	hprt0_modify = hprt0;
>  
>  	/*
> @@ -385,7 +385,7 @@ static void dwc2_port_intr(struct dwc2_hsotg *hsotg)
>  	}
>  
>  	/* Clear Port Interrupts */
> -	writel(hprt0_modify, hsotg->regs + HPRT0);
> +	__raw_writel(hprt0_modify, hsotg->regs + HPRT0);
>  }
>  
>  /*
> @@ -405,7 +405,7 @@ static u32 dwc2_get_actual_xfer_length(struct dwc2_hsotg *hsotg,
>  {
>  	u32 hctsiz, count, length;
>  
> -	hctsiz = readl(hsotg->regs + HCTSIZ(chnum));
> +	hctsiz = __raw_readl(hsotg->regs + HCTSIZ(chnum));
>  
>  	if (halt_status == DWC2_HC_XFER_COMPLETE) {
>  		if (chan->ep_is_in) {
> @@ -483,7 +483,7 @@ static int dwc2_update_urb_state(struct dwc2_hsotg *hsotg,
>  		urb->status = 0;
>  	}
>  
> -	hctsiz = readl(hsotg->regs + HCTSIZ(chnum));
> +	hctsiz = __raw_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 @@ void dwc2_hcd_save_data_toggle(struct dwc2_hsotg *hsotg,
>  			       struct dwc2_host_chan *chan, int chnum,
>  			       struct dwc2_qtd *qtd)
>  {
> -	u32 hctsiz = readl(hsotg->regs + HCTSIZ(chnum));
> +	u32 hctsiz = __raw_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 @@ cleanup:
>  		}
>  	}
>  
> -	haintmsk = readl(hsotg->regs + HAINTMSK);
> +	haintmsk = __raw_readl(hsotg->regs + HAINTMSK);
>  	haintmsk &= ~(1 << chan->hc_num);
> -	writel(haintmsk, hsotg->regs + HAINTMSK);
> +	__raw_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 @@ static void dwc2_halt_channel(struct dwc2_hsotg *hsotg,
>  			 * is enabled so that the non-periodic schedule will
>  			 * be processed
>  			 */
> -			gintmsk = readl(hsotg->regs + GINTMSK);
> +			gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  			gintmsk |= GINTSTS_NPTXFEMP;
> -			writel(gintmsk, hsotg->regs + GINTMSK);
> +			__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  		} else {
>  			dev_vdbg(hsotg->dev, "isoc/intr\n");
>  			/*
> @@ -821,9 +821,9 @@ static void dwc2_halt_channel(struct dwc2_hsotg *hsotg,
>  			 * enabled so that the periodic schedule will be
>  			 * processed
>  			 */
> -			gintmsk = readl(hsotg->regs + GINTMSK);
> +			gintmsk = __raw_readl(hsotg->regs + GINTMSK);
>  			gintmsk |= GINTSTS_PTXFEMP;
> -			writel(gintmsk, hsotg->regs + GINTMSK);
> +			__raw_writel(gintmsk, hsotg->regs + GINTMSK);
>  		}
>  	}
>  }
> @@ -888,7 +888,7 @@ static void dwc2_complete_periodic_xfer(struct dwc2_hsotg *hsotg,
>  					struct dwc2_qtd *qtd,
>  					enum dwc2_halt_status halt_status)
>  {
> -	u32 hctsiz = readl(hsotg->regs + HCTSIZ(chnum));
> +	u32 hctsiz = __raw_readl(hsotg->regs + HCTSIZ(chnum));
>  
>  	qtd->error_count = 0;
>  
> @@ -1158,7 +1158,7 @@ static void dwc2_update_urb_state_abn(struct dwc2_hsotg *hsotg,
>  
>  	urb->actual_length += xfer_length;
>  
> -	hctsiz = readl(hsotg->regs + HCTSIZ(chnum));
> +	hctsiz = __raw_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 @@ static void dwc2_hc_ahberr_intr(struct dwc2_hsotg *hsotg,
>  
>  	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 = __raw_readl(hsotg->regs + HCCHAR(chnum));
> +	hcsplt = __raw_readl(hsotg->regs + HCSPLT(chnum));
> +	hctsiz = __raw_readl(hsotg->regs + HCTSIZ(chnum));
> +	hc_dma = __raw_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 @@ static bool dwc2_halt_status_ok(struct dwc2_hsotg *hsotg,
>  		 * 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 = __raw_readl(hsotg->regs + HCCHAR(chnum));
> +		hctsiz = __raw_readl(hsotg->regs + HCTSIZ(chnum));
> +		hcintmsk = __raw_readl(hsotg->regs + HCINTMSK(chnum));
> +		hcsplt = __raw_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 @@ static bool dwc2_halt_status_ok(struct dwc2_hsotg *hsotg,
>  	 * when the halt interrupt occurs. Halt the channel again if it does
>  	 * occur.
>  	 */
> -	hcchar = readl(hsotg->regs + HCCHAR(chnum));
> +	hcchar = __raw_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 @@ static void dwc2_hc_chhltd_intr_dma(struct dwc2_hsotg *hsotg,
>  		return;
>  	}
>  
> -	hcintmsk = readl(hsotg->regs + HCINTMSK(chnum));
> +	hcintmsk = __raw_readl(hsotg->regs + HCINTMSK(chnum));
>  
>  	if (chan->hcint & HCINTMSK_XFERCOMPL) {
>  		/*
> @@ -1867,7 +1867,7 @@ static void dwc2_hc_chhltd_intr_dma(struct dwc2_hsotg *hsotg,
>  				dev_err(hsotg->dev,
>  					"hcint 0x%08x, intsts 0x%08x\n",
>  					chan->hcint,
> -					readl(hsotg->regs + GINTSTS));
> +					__raw_readl(hsotg->regs + GINTSTS));
>  				goto error;
>  			}
>  		}
> @@ -1922,11 +1922,11 @@ static void dwc2_hc_n_intr(struct dwc2_hsotg *hsotg, int chnum)
>  
>  	chan = hsotg->hc_ptr_array[chnum];
>  
> -	hcint = readl(hsotg->regs + HCINT(chnum));
> -	hcintmsk = readl(hsotg->regs + HCINTMSK(chnum));
> +	hcint = __raw_readl(hsotg->regs + HCINT(chnum));
> +	hcintmsk = __raw_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));
> +		__raw_writel(hcint, hsotg->regs + HCINT(chnum));
>  		return;
>  	}
>  
> @@ -1938,7 +1938,7 @@ static void dwc2_hc_n_intr(struct dwc2_hsotg *hsotg, int chnum)
>  			 hcint, hcintmsk, hcint & hcintmsk);
>  	}
>  
> -	writel(hcint, hsotg->regs + HCINT(chnum));
> +	__raw_writel(hcint, hsotg->regs + HCINT(chnum));
>  	chan->hcint = hcint;
>  	hcint &= hcintmsk;
>  
> @@ -2030,7 +2030,7 @@ static void dwc2_hc_intr(struct dwc2_hsotg *hsotg)
>  	u32 haint;
>  	int i;
>  
> -	haint = readl(hsotg->regs + HAINT);
> +	haint = __raw_readl(hsotg->regs + HAINT);
>  	if (dbg_perio()) {
>  		dev_vdbg(hsotg->dev, "%s()\n", __func__);
>  
> @@ -2098,8 +2098,8 @@ irqreturn_t dwc2_handle_hcd_intr(struct dwc2_hsotg *hsotg)
>  				 "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));
> +				 __raw_readl(hsotg->regs + GINTSTS),
> +				 __raw_readl(hsotg->regs + GINTMSK));
>  		}
>  	}
>  
> diff --git a/drivers/usb/dwc2/hcd_queue.c b/drivers/usb/dwc2/hcd_queue.c
> index bb97838..a613637 100644
> --- a/drivers/usb/dwc2/hcd_queue.c
> +++ b/drivers/usb/dwc2/hcd_queue.c
> @@ -115,7 +115,7 @@ static void dwc2_qh_init(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh,
>  		if (qh->ep_type == USB_ENDPOINT_XFER_INT)
>  			qh->interval = 8;
>  #endif
> -		hprt = readl(hsotg->regs + HPRT0);
> +		hprt = __raw_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 @@ int dwc2_hcd_qh_add(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh)
>  	if (status)
>  		return status;
>  	if (!hsotg->periodic_qh_count) {
> -		intr_mask = readl(hsotg->regs + GINTMSK);
> +		intr_mask = __raw_readl(hsotg->regs + GINTMSK);
>  		intr_mask |= GINTSTS_SOF;
> -		writel(intr_mask, hsotg->regs + GINTMSK);
> +		__raw_writel(intr_mask, hsotg->regs + GINTMSK);
>  	}
>  	hsotg->periodic_qh_count++;
>  
> @@ -630,9 +630,9 @@ void dwc2_hcd_qh_unlink(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh)
>  	dwc2_deschedule_periodic(hsotg, qh);
>  	hsotg->periodic_qh_count--;
>  	if (!hsotg->periodic_qh_count) {
> -		intr_mask = readl(hsotg->regs + GINTMSK);
> +		intr_mask = __raw_readl(hsotg->regs + GINTMSK);
>  		intr_mask &= ~GINTSTS_SOF;
> -		writel(intr_mask, hsotg->regs + GINTMSK);
> +		__raw_writel(intr_mask, hsotg->regs + GINTMSK);
>  	}
>  }
>  
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux