Re: [PATCH 2/5] USB: Change omap USB code to use omap_read/write instead of __REG for multi-omap

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

 



On Fri, May 16, 2008 at 02:07:53PM -0700, Tony Lindgren wrote:
> Change omap USB code to use omap_read/write instead of __REG for multi-omap

Well, I'll try them all on monday but i like the idea :-)

And this will also help me (a bit) converting twl4030 to platform_device
and use __raw_read/write() later.

> 
> Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx>
> ---
>  arch/arm/mach-omap1/board-osk.c  |    7 +-
>  arch/arm/plat-omap/usb.c         |  138 ++++++++----
>  drivers/cbus/tahvo-usb.c         |   91 +++++---
>  drivers/i2c/chips/isp1301_omap.c |  163 ++++++++-----
>  drivers/i2c/chips/twl4030-usb.c  |   39 ++--
>  drivers/usb/gadget/omap_udc.c    |  471 +++++++++++++++++++++-----------------
>  drivers/usb/gadget/omap_udc.h    |   61 +++---
>  drivers/usb/host/ohci-omap.c     |    5 +-
>  include/asm-arm/arch-omap/usb.h  |   23 +-
>  9 files changed, 592 insertions(+), 406 deletions(-)
> 
> diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
> index a66505f..f2c47b9 100644
> --- a/arch/arm/mach-omap1/board-osk.c
> +++ b/arch/arm/mach-omap1/board-osk.c
> @@ -526,6 +526,8 @@ static void __init osk_mistral_init(void) { }
>  
>  static void __init osk_init(void)
>  {
> +	u32 l;
> +
>  	/* Workaround for wrong CS3 (NOR flash) timing
>  	 * There are some U-Boot versions out there which configure
>  	 * wrong CS3 memory timings. This mainly leads to CRC
> @@ -539,7 +541,10 @@ static void __init osk_init(void)
>  	platform_add_devices(osk5912_devices, ARRAY_SIZE(osk5912_devices));
>  	omap_board_config = osk_config;
>  	omap_board_config_size = ARRAY_SIZE(osk_config);
> -	USB_TRANSCEIVER_CTRL_REG |= (3 << 1);
> +
> +	l = omap_readl(USB_TRANSCEIVER_CTRL);
> +	l |= (3 << 1);
> +	omap_writel(l, USB_TRANSCEIVER_CTRL);
>  
>  	/* irq for tps65010 chip */
>  	/* bootloader effectively does:  omap_cfg_reg(U19_1610_MPUIO1); */
> diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c
> index a619475..9ebf318 100644
> --- a/arch/arm/plat-omap/usb.c
> +++ b/arch/arm/plat-omap/usb.c
> @@ -156,8 +156,12 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device)
>  
>  	if (nwires == 0) {
>  		if (cpu_class_is_omap1() && !cpu_is_omap15xx()) {
> +			u32 l;
> +
>  			/* pulldown D+/D- */
> -			USB_TRANSCEIVER_CTRL_REG &= ~(3 << 1);
> +			l = omap_readl(USB_TRANSCEIVER_CTRL);
> +			l &= ~(3 << 1);
> +			omap_writel(l, USB_TRANSCEIVER_CTRL);
>  		}
>  		return 0;
>  	}
> @@ -171,6 +175,8 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device)
>  
>  	/* internal transceiver (unavailable on 17xx, 24xx) */
>  	if (!cpu_class_is_omap2() && nwires == 2) {
> +		u32 l;
> +
>  		// omap_cfg_reg(P9_USB_DP);
>  		// omap_cfg_reg(R8_USB_DM);
>  
> @@ -185,9 +191,15 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device)
>  		 *  - OTG support on this port not yet written
>  		 */
>  
> -		USB_TRANSCEIVER_CTRL_REG &= ~(7 << 4);
> -		if (!is_device)
> -			USB_TRANSCEIVER_CTRL_REG |= (3 << 1);
> +		l = omap_readl(USB_TRANSCEIVER_CTRL);
> +		l &= ~(7 << 4);
> +		omap_writel(l, USB_TRANSCEIVER_CTRL);
> +
> +		if (!is_device) {
> +			l = omap_readl(USB_TRANSCEIVER_CTRL);
> +			l |= (3 << 1);
> +			omap_writel(l, USB_TRANSCEIVER_CTRL);
> +		}
>  
>  		return 3 << 16;
>  	}
> @@ -217,8 +229,13 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device)
>  	 * with VBUS switching and overcurrent detection.
>  	 */
>  
> -	if (cpu_class_is_omap1() && nwires != 6)
> -		USB_TRANSCEIVER_CTRL_REG &= ~CONF_USB2_UNI_R;
> +	if (cpu_class_is_omap1() && nwires != 6) {
> +		u32 l;
> +
> +		l = omap_readl(USB_TRANSCEIVER_CTRL);
> +		l &= ~CONF_USB2_UNI_R;
> +		omap_writel(l, USB_TRANSCEIVER_CTRL);
> +	}
>  
>  	switch (nwires) {
>  	case 3:
> @@ -238,9 +255,13 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device)
>  			omap_cfg_reg(K20_24XX_USB0_VM);
>  			omap2_usb_devconf_set(0, USB_UNIDIR);
>  		} else {
> +			u32 l;
> +
>  			omap_cfg_reg(AA9_USB0_VP);
>  			omap_cfg_reg(R9_USB0_VM);
> -			USB_TRANSCEIVER_CTRL_REG |= CONF_USB2_UNI_R;
> +			l = omap_readl(USB_TRANSCEIVER_CTRL);
> +			l |= CONF_USB2_UNI_R;
> +			omap_writel(l, USB_TRANSCEIVER_CTRL);
>  		}
>  		break;
>  	default:
> @@ -254,8 +275,13 @@ static u32 __init omap_usb1_init(unsigned nwires)
>  {
>  	u32	syscon1 = 0;
>  
> -	if (cpu_class_is_omap1() && !cpu_is_omap15xx() && nwires != 6)
> -		USB_TRANSCEIVER_CTRL_REG &= ~CONF_USB1_UNI_R;
> +	if (cpu_class_is_omap1() && !cpu_is_omap15xx() && nwires != 6) {
> +		u32 l;
> +
> +		l = omap_readl(USB_TRANSCEIVER_CTRL);
> +		l &= ~CONF_USB1_UNI_R;
> +		omap_writel(l, USB_TRANSCEIVER_CTRL);
> +	}
>  	if (cpu_is_omap24xx())
>  		omap2_usb_devconf_clear(1, USB_BIDIR_TLL);
>  
> @@ -316,8 +342,13 @@ static u32 __init omap_usb1_init(unsigned nwires)
>  		syscon1 = 3;
>  		omap_cfg_reg(USB1_VP);
>  		omap_cfg_reg(USB1_VM);
> -		if (!cpu_is_omap15xx())
> -			USB_TRANSCEIVER_CTRL_REG |= CONF_USB1_UNI_R;
> +		if (!cpu_is_omap15xx()) {
> +			u32 l;
> +
> +			l = omap_readl(USB_TRANSCEIVER_CTRL);
> +			l |= CONF_USB1_UNI_R;
> +			omap_writel(l, USB_TRANSCEIVER_CTRL);
> +		}
>  		break;
>  	default:
>  bad:
> @@ -340,8 +371,13 @@ static u32 __init omap_usb2_init(unsigned nwires, unsigned alt_pingroup)
>  	if (alt_pingroup || nwires == 0)
>  		return 0;
>  
> -	if (cpu_class_is_omap1() && !cpu_is_omap15xx() && nwires != 6)
> -		USB_TRANSCEIVER_CTRL_REG &= ~CONF_USB2_UNI_R;
> +	if (cpu_class_is_omap1() && !cpu_is_omap15xx() && nwires != 6) {
> +		u32 l;
> +
> +		l = omap_readl(USB_TRANSCEIVER_CTRL);
> +		l &= ~CONF_USB2_UNI_R;
> +		omap_writel(l, USB_TRANSCEIVER_CTRL);
> +	}
>  
>  	/* external transceiver */
>  	if (cpu_is_omap15xx()) {
> @@ -410,9 +446,13 @@ static u32 __init omap_usb2_init(unsigned nwires, unsigned alt_pingroup)
>  			omap_cfg_reg(USB2_VP);
>  			omap_cfg_reg(USB2_VM);
>  		} else {
> +			u32 l;
> +
>  			omap_cfg_reg(AA9_USB2_VP);
>  			omap_cfg_reg(R9_USB2_VM);
> -			USB_TRANSCEIVER_CTRL_REG |= CONF_USB2_UNI_R;
> +			l = omap_readl(USB_TRANSCEIVER_CTRL);
> +			l |= CONF_USB2_UNI_R;
> +			omap_writel(l, USB_TRANSCEIVER_CTRL);
>  		}
>  		break;
>  	default:
> @@ -531,10 +571,6 @@ static struct platform_device otg_device = {
>  
>  /*-------------------------------------------------------------------------*/
>  
> -#define ULPD_CLOCK_CTRL_REG	__REG16(ULPD_CLOCK_CTRL)
> -#define ULPD_SOFT_REQ_REG	__REG16(ULPD_SOFT_REQ)
> -
> -
>  // FIXME correct answer depends on hmc_mode,
>  // as does (on omap1) any nonzero value for config->otg port number
>  #ifdef	CONFIG_USB_GADGET_OMAP
> @@ -550,17 +586,17 @@ static struct platform_device otg_device = {
>  void __init
>  omap_otg_init(struct omap_usb_config *config)
>  {
> -	u32		syscon = OTG_SYSCON_1_REG & 0xffff;
> +	u32		syscon;
>  	int		status;
>  	int		alt_pingroup = 0;
>  
>  	/* NOTE:  no bus or clock setup (yet?) */
>  
> -	syscon = OTG_SYSCON_1_REG & 0xffff;
> +	syscon = omap_readl(OTG_SYSCON_1) & 0xffff;
>  	if (!(syscon & OTG_RESET_DONE))
>  		pr_debug("USB resets not complete?\n");
>  
> -	// OTG_IRQ_EN_REG = 0;
> +	//omap_writew(0, OTG_IRQ_EN);
>  
>  	/* pin muxing and transceiver pinouts */
>  	if (config->pins[0] > 2)	/* alt pingroup 2 */
> @@ -568,8 +604,8 @@ omap_otg_init(struct omap_usb_config *config)
>  	syscon |= omap_usb0_init(config->pins[0], is_usb0_device(config));
>  	syscon |= omap_usb1_init(config->pins[1]);
>  	syscon |= omap_usb2_init(config->pins[2], alt_pingroup);
> -	pr_debug("OTG_SYSCON_1_REG = %08x\n", syscon);
> -	OTG_SYSCON_1_REG = syscon;
> +	pr_debug("OTG_SYSCON_1 = %08x\n", omap_readl(OTG_SYSCON_1));
> +	omap_writel(syscon, OTG_SYSCON_1);
>  
>  	syscon = config->hmc_mode;
>  	syscon |= USBX_SYNCHRO | (4 << 16) /* B_ASE0_BRST */;
> @@ -578,9 +614,10 @@ omap_otg_init(struct omap_usb_config *config)
>  		syscon |= OTG_EN;
>  #endif
>  	if (cpu_class_is_omap1())
> -		pr_debug("USB_TRANSCEIVER_CTRL_REG = %03x\n", USB_TRANSCEIVER_CTRL_REG);
> -	pr_debug("OTG_SYSCON_2_REG = %08x\n", syscon);
> -	OTG_SYSCON_2_REG = syscon;
> +		pr_debug("USB_TRANSCEIVER_CTRL = %03x\n",
> +			 omap_readl(USB_TRANSCEIVER_CTRL));
> +	pr_debug("OTG_SYSCON_2 = %08x\n", omap_readl(OTG_SYSCON_2));
> +	omap_writel(syscon, OTG_SYSCON_2);
>  
>  	printk("USB: hmc %d", config->hmc_mode);
>  	if (!alt_pingroup)
> @@ -597,12 +634,22 @@ omap_otg_init(struct omap_usb_config *config)
>  	printk("\n");
>  
>  	if (cpu_class_is_omap1()) {
> +		u16 w;
> +
>  		/* leave USB clocks/controllers off until needed */
> -		ULPD_SOFT_REQ_REG &= ~SOFT_USB_CLK_REQ;
> -		ULPD_CLOCK_CTRL_REG &= ~USB_MCLK_EN;
> -		ULPD_CLOCK_CTRL_REG |= DIS_USB_PVCI_CLK;
> +		w = omap_readw(ULPD_SOFT_REQ);
> +		w &= ~SOFT_USB_CLK_REQ;
> +		omap_writew(w, ULPD_SOFT_REQ);
> +
> +		w = omap_readw(ULPD_CLOCK_CTRL);
> +		w &= ~USB_MCLK_EN;
> +		omap_writew(w, ULPD_CLOCK_CTRL);
> +
> +		w = omap_readw(ULPD_CLOCK_CTRL);
> +		w |= DIS_USB_PVCI_CLK;
> +		omap_writew(w, ULPD_CLOCK_CTRL);
>  	}
> -	syscon = OTG_SYSCON_1_REG;
> +	syscon = omap_readl(OTG_SYSCON_1);
>  	syscon |= HST_IDLE_EN|DEV_IDLE_EN|OTG_IDLE_EN;
>  
>  #ifdef	CONFIG_USB_GADGET_OMAP
> @@ -639,8 +686,8 @@ omap_otg_init(struct omap_usb_config *config)
>  			pr_debug("can't register OTG device, %d\n", status);
>  	}
>  #endif
> -	pr_debug("OTG_SYSCON_1_REG = %08x\n", syscon);
> -	OTG_SYSCON_1_REG = syscon;
> +	pr_debug("OTG_SYSCON_1 = %08x\n", omap_readl(OTG_SYSCON_1));
> +	omap_writel(syscon, OTG_SYSCON_1);
>  
>  	status = 0;
>  }
> @@ -653,18 +700,19 @@ static inline void omap_otg_init(struct omap_usb_config *config) {}
>  
>  #ifdef	CONFIG_ARCH_OMAP15XX
>  
> -#define ULPD_DPLL_CTRL_REG	__REG16(ULPD_DPLL_CTRL)
> +/* ULPD_DPLL_CTRL */
>  #define DPLL_IOB		(1 << 13)
>  #define DPLL_PLL_ENABLE		(1 << 4)
>  #define DPLL_LOCK		(1 << 0)
>  
> -#define ULPD_APLL_CTRL_REG	__REG16(ULPD_APLL_CTRL)
> +/* ULPD_APLL_CTRL */
>  #define APLL_NDPLL_SWITCH	(1 << 0)
>  
>  
>  static void __init omap_1510_usb_init(struct omap_usb_config *config)
>  {
>  	unsigned int val;
> +	u16 w;
>  
>  	omap_usb0_init(config->pins[0], is_usb0_device(config));
>  	omap_usb1_init(config->pins[1]);
> @@ -685,12 +733,22 @@ static void __init omap_1510_usb_init(struct omap_usb_config *config)
>  	printk("\n");
>  
>  	/* use DPLL for 48 MHz function clock */
> -	pr_debug("APLL %04x DPLL %04x REQ %04x\n", ULPD_APLL_CTRL_REG,
> -			ULPD_DPLL_CTRL_REG, ULPD_SOFT_REQ_REG);
> -	ULPD_APLL_CTRL_REG &= ~APLL_NDPLL_SWITCH;
> -	ULPD_DPLL_CTRL_REG |= DPLL_IOB | DPLL_PLL_ENABLE;
> -	ULPD_SOFT_REQ_REG |= SOFT_UDC_REQ | SOFT_DPLL_REQ;
> -	while (!(ULPD_DPLL_CTRL_REG & DPLL_LOCK))
> +	pr_debug("APLL %04x DPLL %04x REQ %04x\n", omap_readw(ULPD_APLL_CTRL),
> +			omap_readw(ULPD_DPLL_CTRL), omap_readw(ULPD_SOFT_REQ));
> +
> +	w = omap_readw(ULPD_APLL_CTRL);
> +	w &= ~APLL_NDPLL_SWITCH;
> +	omap_writew(w, ULPD_APLL_CTRL);
> +
> +	w = omap_readw(ULPD_DPLL_CTRL);
> +	w |= DPLL_IOB | DPLL_PLL_ENABLE;
> +	omap_writew(w, ULPD_DPLL_CTRL);
> +
> +	w = omap_readw(ULPD_SOFT_REQ);
> +	w |= SOFT_UDC_REQ | SOFT_DPLL_REQ;
> +	omap_writew(w, ULPD_SOFT_REQ);
> +
> +	while (!(omap_readw(ULPD_DPLL_CTRL) & DPLL_LOCK))
>  		cpu_relax();
>  
>  #ifdef	CONFIG_USB_GADGET_OMAP
> diff --git a/drivers/cbus/tahvo-usb.c b/drivers/cbus/tahvo-usb.c
> index 11de42d..c3e1b38 100644
> --- a/drivers/cbus/tahvo-usb.c
> +++ b/drivers/cbus/tahvo-usb.c
> @@ -61,7 +61,7 @@
>  #define USBR_NSUSPEND		(1 << 1)
>  #define USBR_SEMODE		(1 << 0)
>  
> -/* bits in OTG_CTRL_REG */
> +/* bits in OTG_CTRL */
>  
>  /* Bits that are controlled by OMAP OTG and are read-only */
>  #define OTG_CTRL_OMAP_MASK	(OTG_PULLDOWN|OTG_PULLUP|OTG_DRV_VBUS|\
> @@ -117,27 +117,27 @@ static irqreturn_t omap_otg_irq(int irq, void *arg)
>  	struct tahvo_usb *tu = (struct tahvo_usb *) otg_dev->dev.driver_data;
>  	u16 otg_irq;
>  
> -	otg_irq = OTG_IRQ_SRC_REG;
> +	otg_irq = omap_readw(OTG_IRQ_SRC);
>  	if (otg_irq & OPRT_CHG) {
> -		OTG_IRQ_SRC_REG = OPRT_CHG;
> +		omap_writew(OPRT_CHG, OTG_IRQ_SRC);
>  	} else if (otg_irq & B_SRP_TMROUT) {
> -		OTG_IRQ_SRC_REG = B_SRP_TMROUT;
> +		omap_writew(B_SRP_TMROUT, OTG_IRQ_SRC);
>  	} else if (otg_irq & B_HNP_FAIL) {
> -		OTG_IRQ_SRC_REG = B_HNP_FAIL;
> +		omap_writew(B_HNP_FAIL, OTG_IRQ_SRC);
>  	} else if (otg_irq & A_SRP_DETECT) {
> -		OTG_IRQ_SRC_REG = A_SRP_DETECT;
> +		omap_writew(A_SRP_DETECT, OTG_IRQ_SRC);
>  	} else if (otg_irq & A_REQ_TMROUT) {
> -		OTG_IRQ_SRC_REG = A_REQ_TMROUT;
> +		omap_writew(A_REQ_TMROUT, OTG_IRQ_SRC);
>  	} else if (otg_irq & A_VBUS_ERR) {
> -		OTG_IRQ_SRC_REG = A_VBUS_ERR;
> +		omap_writew(A_VBUS_ERR, OTG_IRQ_SRC);
>  	} else if (otg_irq & DRIVER_SWITCH) {
> -		if ((!(OTG_CTRL_REG & OTG_DRIVER_SEL)) &&
> +		if ((!(omap_readl(OTG_CTRL) & OTG_DRIVER_SEL)) &&
>  		   tu->otg.host && tu->otg.state == OTG_STATE_A_HOST) {
>  			/* role is host */
>  			usb_bus_start_enum(tu->otg.host,
>  					   tu->otg.host->otg_port);
>  		}
> -		OTG_IRQ_SRC_REG = DRIVER_SWITCH;
> +		omap_writew(DRIVER_SWITCH, OTG_IRQ_SRC);
>  	} else
>  		return IRQ_NONE;
>  
> @@ -147,6 +147,7 @@ static irqreturn_t omap_otg_irq(int irq, void *arg)
>  
>  static int omap_otg_init(void)
>  {
> +	u32 l;
>  
>  #ifdef CONFIG_USB_OTG
>  	if (!tahvo_otg_dev) {
> @@ -154,11 +155,15 @@ static int omap_otg_init(void)
>  		return -ENODEV;
>  	}
>  #endif
> -	OTG_SYSCON_1_REG &= ~OTG_IDLE_EN;
> +
> +	l = omap_readl(OTG_SYSCON_1);
> +	l &= ~OTG_IDLE_EN;
> +	omap_writel(l, OTG_SYSCON_1);
>  	udelay(100);
>  
>  	/* some of these values are board-specific... */
> -	OTG_SYSCON_2_REG |= OTG_EN
> +	l = omap_readl(OTG_SYSCON_2);
> +	l |= OTG_EN
>  		/* for B-device: */
>  		| SRP_GPDATA		/* 9msec Bdev D+ pulse */
>  		| SRP_GPDVBUS		/* discharge after VBUS pulse */
> @@ -167,11 +172,15 @@ static int omap_otg_init(void)
>  		| (0 << 20)		/* 200ms nominal A_WAIT_VRISE timer */
>  		| SRP_DPW		/* detect 167+ns SRP pulses */
>  		| SRP_DATA | SRP_VBUS;	/* accept both kinds of SRP pulse */
> +	omap_writel(l, OTG_SYSCON_2);
>  
> -	OTG_IRQ_EN_REG = DRIVER_SWITCH | OPRT_CHG
> +	omap_writew(DRIVER_SWITCH | OPRT_CHG
>  			| B_SRP_TMROUT | B_HNP_FAIL
> -			| A_VBUS_ERR | A_SRP_DETECT | A_REQ_TMROUT;
> -	OTG_SYSCON_2_REG |= OTG_EN;
> +				  | A_VBUS_ERR | A_SRP_DETECT | A_REQ_TMROUT,
> +					OTG_IRQ_EN);
> +	l = omap_readl(OTG_SYSCON_2);
> +	l |= OTG_EN;
> +	omap_writel(l, OTG_SYSCON_2);
>  
>  	return 0;
>  }
> @@ -271,6 +280,8 @@ static void check_vbus_state(struct tahvo_usb *tu)
>  
>  	reg = tahvo_read_reg(TAHVO_REG_IDSR);
>  	if (reg & 0x01) {
> +		u32 l;
> +
>  		vbus_active = 1;
>  		switch (tu->otg.state) {
>  		case OTG_STATE_B_IDLE:
> @@ -279,7 +290,10 @@ static void check_vbus_state(struct tahvo_usb *tu)
>  				usb_gadget_vbus_connect(tu->otg.gadget);
>  			/* Set B-session valid and not B-sessio ended to indicate
>  			 * Vbus to be ok. */
> -			OTG_CTRL_REG = (OTG_CTRL_REG & ~OTG_BSESSEND) | OTG_BSESSVLD;
> +			l = omap_readl(OTG_CTRL);
> +			l &= ~OTG_BSESSEND;
> +			l |= OTG_BSESSVLD;
> +			omap_writel(l, OTG_CTRL);
>  
>  			tu->otg.state = OTG_STATE_B_PERIPHERAL;
>  			break;
> @@ -323,10 +337,10 @@ static void tahvo_usb_become_host(struct tahvo_usb *tu)
>  	 * also mark the A-session is always valid */
>  	omap_otg_init();
>  
> -	l = OTG_CTRL_REG;
> -	l &= ~(OTG_CTRL_XCVR_MASK|OTG_CTRL_SYS_MASK);
> +	l = omap_readl(OTG_CTRL);
> +	l &= ~(OTG_CTRL_XCVR_MASK | OTG_CTRL_SYS_MASK);
>  	l |= OTG_ASESSVLD;
> -	OTG_CTRL_REG = l;
> +	omap_writel(l, OTG_CTRL);
>  
>  	/* Power up the transceiver in USB host mode */
>  	tahvo_write_reg(TAHVO_REG_USBR, USBR_REGOUT | USBR_NSUSPEND |
> @@ -344,12 +358,16 @@ static void tahvo_usb_stop_host(struct tahvo_usb *tu)
>  
>  static void tahvo_usb_become_peripheral(struct tahvo_usb *tu)
>  {
> +	u32 l;
> +
>  	/* Clear system and transceiver controlled bits
>  	 * and enable ID to mark peripheral mode and
>  	 * BSESSEND to mark no Vbus */
>  	omap_otg_init();
> -	OTG_CTRL_REG = (OTG_CTRL_REG & ~(OTG_CTRL_XCVR_MASK|OTG_CTRL_SYS_MASK|OTG_BSESSVLD))
> -		| OTG_ID | OTG_BSESSEND;
> +	l = omap_readl(OTG_CTRL);
> +	l &= ~(OTG_CTRL_XCVR_MASK | OTG_CTRL_SYS_MASK | OTG_BSESSVLD);
> +	l |= OTG_ID | OTG_BSESSEND;
> +	omap_writel(l, OTG_CTRL);
>  
>  	/* Power up transceiver and set it in USB perhiperal mode */
>  	tahvo_write_reg(TAHVO_REG_USBR, USBR_SLAVE_CONTROL | USBR_REGOUT | USBR_NSUSPEND | USBR_SLAVE_SW);
> @@ -360,7 +378,13 @@ static void tahvo_usb_become_peripheral(struct tahvo_usb *tu)
>  
>  static void tahvo_usb_stop_peripheral(struct tahvo_usb *tu)
>  {
> -	OTG_CTRL_REG = (OTG_CTRL_REG & ~OTG_BSESSVLD) | OTG_BSESSEND;
> +	u32 l;
> +
> +	l = omap_readl(OTG_CTRL);
> +	l &= ~OTG_BSESSVLD;
> +	l |= OTG_BSESSEND;
> +	omap_writel(l, OTG_CTRL);
> +
>  	if (tu->otg.gadget)
>  		usb_gadget_vbus_disconnect(tu->otg.gadget);
>  	tu->otg.state = OTG_STATE_B_IDLE;
> @@ -383,15 +407,19 @@ static void tahvo_usb_power_off(struct tahvo_usb *tu)
>  		id = OTG_ID;
>  	else
>  		id = 0;
> -	l = OTG_CTRL_REG;
> +	l = omap_readl(OTG_CTRL);
>  	l &= ~(OTG_CTRL_XCVR_MASK | OTG_CTRL_SYS_MASK | OTG_BSESSVLD);
>  	l |= id | OTG_BSESSEND;
> -	OTG_CTRL_REG = l;
> -	OTG_IRQ_EN_REG = 0;
> +	omap_writel(l, OTG_CTRL);
> +	omap_writew(0, OTG_IRQ_EN);
>  
> -	OTG_SYSCON_2_REG &= ~OTG_EN;
> +	l = omap_readl(OTG_SYSCON_2);
> +	l &= ~OTG_EN;
> +	omap_writel(l, OTG_SYSCON_2);
>  
> -	OTG_SYSCON_1_REG |= OTG_IDLE_EN;
> +	l = omap_readl(OTG_SYSCON_1);
> +	l |= OTG_IDLE_EN;
> +	omap_writel(l, OTG_SYSCON_1);
>  
>  	/* Power off transceiver */
>  	tahvo_write_reg(TAHVO_REG_USBR, 0);
> @@ -438,13 +466,13 @@ static int tahvo_usb_start_srp(struct otg_transceiver *dev)
>  	if (!dev || tu->otg.state != OTG_STATE_B_IDLE)
>  		return -ENODEV;
>  
> -	otg_ctrl = OTG_CTRL_REG;
> +	otg_ctrl = omap_readl(OTG_CTRL);
>  	if (!(otg_ctrl & OTG_BSESSEND))
>  		return -EINVAL;
>  
>  	otg_ctrl |= OTG_B_BUSREQ;
>  	otg_ctrl &= ~OTG_A_BUSREQ & OTG_CTRL_SYS_MASK;
> -	OTG_CTRL_REG = otg_ctrl;
> +	omap_writel(otg_ctrl, OTG_CTRL);
>  	tu->otg.state = OTG_STATE_B_SRP_INIT;
>  
>  	return 0;
> @@ -464,6 +492,7 @@ static int tahvo_usb_start_hnp(struct otg_transceiver *otg)
>  static int tahvo_usb_set_host(struct otg_transceiver *otg, struct usb_bus *host)
>  {
>  	struct tahvo_usb *tu = container_of(otg, struct tahvo_usb, otg);
> +	u32 l;
>  
>  	dev_dbg(&tu->pt_dev->dev, "set_host %p\n", host);
>  
> @@ -482,7 +511,9 @@ static int tahvo_usb_set_host(struct otg_transceiver *otg, struct usb_bus *host)
>  		return 0;
>  	}
>  
> -	OTG_SYSCON_1_REG &= ~(OTG_IDLE_EN | HST_IDLE_EN | DEV_IDLE_EN);
> +	l = omap_readl(OTG_SYSCON_1);
> +	l &= ~(OTG_IDLE_EN | HST_IDLE_EN | DEV_IDLE_EN);
> +	omap_writel(l, OTG_SYSCON_1);
>  
>  	if (TAHVO_MODE(tu) == TAHVO_MODE_HOST) {
>  		tu->otg.host = NULL;
> diff --git a/drivers/i2c/chips/isp1301_omap.c b/drivers/i2c/chips/isp1301_omap.c
> index 1525543..c198426 100644
> --- a/drivers/i2c/chips/isp1301_omap.c
> +++ b/drivers/i2c/chips/isp1301_omap.c
> @@ -69,7 +69,7 @@ struct isp1301 {
>  };
>  
>  
> -/* bits in OTG_CTRL_REG */
> +/* bits in OTG_CTRL */
>  
>  #define	OTG_XCEIV_OUTPUTS \
>  	(OTG_ASESSVLD|OTG_BSESSEND|OTG_BSESSVLD|OTG_VBUSVLD|OTG_ID)
> @@ -186,8 +186,8 @@ isp1301_clear_bits(struct isp1301 *isp, u8 reg, u8 bits)
>  
>  /* operational registers */
>  #define	ISP1301_MODE_CONTROL_1		0x04	/* u8 read, set, +1 clear */
> -#	define	MC1_SPEED_REG		(1 << 0)
> -#	define	MC1_SUSPEND_REG		(1 << 1)
> +#	define	MC1_SPEED		(1 << 0)
> +#	define	MC1_SUSPEND		(1 << 1)
>  #	define	MC1_DAT_SE0		(1 << 2)
>  #	define	MC1_TRANSPARENT		(1 << 3)
>  #	define	MC1_BDIS_ACON_EN	(1 << 4)
> @@ -274,7 +274,7 @@ static void power_down(struct isp1301 *isp)
>  	isp->otg.state = OTG_STATE_UNDEFINED;
>  
>  	// isp1301_set_bits(isp, ISP1301_MODE_CONTROL_2, MC2_GLOBAL_PWR_DN);
> -	isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_SUSPEND_REG);
> +	isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_SUSPEND);
>  
>  	isp1301_clear_bits(isp, ISP1301_OTG_CONTROL_1, OTG1_ID_PULLDOWN);
>  	isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0);
> @@ -283,7 +283,7 @@ static void power_down(struct isp1301 *isp)
>  static void power_up(struct isp1301 *isp)
>  {
>  	// isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_2, MC2_GLOBAL_PWR_DN);
> -	isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1, MC1_SUSPEND_REG);
> +	isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1, MC1_SUSPEND);
>  
>  	/* do this only when cpu is driving transceiver,
>  	 * so host won't see a low speed device...
> @@ -360,6 +360,8 @@ isp1301_defer_work(struct isp1301 *isp, int work)
>  /* called from irq handlers */
>  static void a_idle(struct isp1301 *isp, const char *tag)
>  {
> +	u32 l;
> +
>  	if (isp->otg.state == OTG_STATE_A_IDLE)
>  		return;
>  
> @@ -373,13 +375,17 @@ static void a_idle(struct isp1301 *isp, const char *tag)
>  		gadget_suspend(isp);
>  	}
>  	isp->otg.state = OTG_STATE_A_IDLE;
> -	isp->last_otg_ctrl = OTG_CTRL_REG = OTG_CTRL_REG & OTG_XCEIV_OUTPUTS;
> +	l = omap_readl(OTG_CTRL) & OTG_XCEIV_OUTPUTS;
> +	omap_writel(l, OTG_CTRL);
> +	isp->last_otg_ctrl = l;
>  	pr_debug("  --> %s/%s\n", state_name(isp), tag);
>  }
>  
>  /* called from irq handlers */
>  static void b_idle(struct isp1301 *isp, const char *tag)
>  {
> +	u32 l;
> +
>  	if (isp->otg.state == OTG_STATE_B_IDLE)
>  		return;
>  
> @@ -393,7 +399,9 @@ static void b_idle(struct isp1301 *isp, const char *tag)
>  		gadget_suspend(isp);
>  	}
>  	isp->otg.state = OTG_STATE_B_IDLE;
> -	isp->last_otg_ctrl = OTG_CTRL_REG = OTG_CTRL_REG & OTG_XCEIV_OUTPUTS;
> +	l = omap_readl(OTG_CTRL) & OTG_XCEIV_OUTPUTS;
> +	omap_writel(l, OTG_CTRL);
> +	isp->last_otg_ctrl = l;
>  	pr_debug("  --> %s/%s\n", state_name(isp), tag);
>  }
>  
> @@ -406,7 +414,7 @@ dump_regs(struct isp1301 *isp, const char *label)
>  	u8	src = isp1301_get_u8(isp, ISP1301_INTERRUPT_SOURCE);
>  
>  	pr_debug("otg: %06x, %s %s, otg/%02x stat/%02x.%02x\n",
> -		OTG_CTRL_REG, label, state_name(isp),
> +		omap_readl(OTG_CTRL), label, state_name(isp),
>  		ctrl, status, src);
>  	/* mode control and irq enables don't change much */
>  #endif
> @@ -429,7 +437,7 @@ dump_regs(struct isp1301 *isp, const char *label)
>  static void check_state(struct isp1301 *isp, const char *tag)
>  {
>  	enum usb_otg_state	state = OTG_STATE_UNDEFINED;
> -	u8			fsm = OTG_TEST_REG & 0x0ff;
> +	u8			fsm = omap_readw(OTG_TEST) & 0x0ff;
>  	unsigned		extra = 0;
>  
>  	switch (fsm) {
> @@ -494,7 +502,8 @@ static void check_state(struct isp1301 *isp, const char *tag)
>  	if (isp->otg.state == state && !extra)
>  		return;
>  	pr_debug("otg: %s FSM %s/%02x, %s, %06x\n", tag,
> -		state_string(state), fsm, state_name(isp), OTG_CTRL_REG);
> +		state_string(state), fsm, state_name(isp),
> +		omap_readl(OTG_CTRL));
>  }
>  
>  #else
> @@ -509,10 +518,11 @@ static void update_otg1(struct isp1301 *isp, u8 int_src)
>  	u32	otg_ctrl;
>  	u8      int_id;
>  
> -	otg_ctrl = OTG_CTRL_REG
> -			& OTG_CTRL_MASK
> -			& ~OTG_XCEIV_INPUTS
> -			& ~(OTG_ID|OTG_ASESSVLD|OTG_VBUSVLD);
> +	otg_ctrl = omap_readl(OTG_CTRL) & OTG_CTRL_MASK;
> +	otg_ctrl &= ~OTG_XCEIV_INPUTS;
> +	otg_ctrl &= (OTG_ID|OTG_ASESSVLD|OTG_VBUSVLD);
> +
> +
>  	if (int_src & INTR_SESS_VLD)
>  		otg_ctrl |= OTG_ASESSVLD;
>  	else if (isp->otg.state == OTG_STATE_A_WAIT_VFALL) {
> @@ -538,7 +548,7 @@ static void update_otg1(struct isp1301 *isp, u8 int_src)
>  			return;
>  		}
>  	}
> -	OTG_CTRL_REG = otg_ctrl;
> +	omap_writel(otg_ctrl, OTG_CTRL);
>  }
>  
>  /* outputs from ISP1301_OTG_STATUS */
> @@ -546,15 +556,14 @@ static void update_otg2(struct isp1301 *isp, u8 otg_status)
>  {
>  	u32	otg_ctrl;
>  
> -	otg_ctrl = OTG_CTRL_REG
> -			& OTG_CTRL_MASK
> -			& ~OTG_XCEIV_INPUTS
> -			& ~(OTG_BSESSVLD|OTG_BSESSEND);
> +	otg_ctrl = omap_readl(OTG_CTRL) & OTG_CTRL_MASK;
> +	otg_ctrl &= ~OTG_XCEIV_INPUTS;
> +	otg_ctrl &= ~(OTG_BSESSVLD | OTG_BSESSEND);
>  	if (otg_status & OTG_B_SESS_VLD)
>  		otg_ctrl |= OTG_BSESSVLD;
>  	else if (otg_status & OTG_B_SESS_END)
>  		otg_ctrl |= OTG_BSESSEND;
> -	OTG_CTRL_REG = otg_ctrl;
> +	omap_writel(otg_ctrl, OTG_CTRL);
>  }
>  
>  /* inputs going to ISP1301 */
> @@ -563,7 +572,7 @@ static void otg_update_isp(struct isp1301 *isp)
>  	u32	otg_ctrl, otg_change;
>  	u8	set = OTG1_DM_PULLDOWN, clr = OTG1_DM_PULLUP;
>  
> -	otg_ctrl = OTG_CTRL_REG;
> +	otg_ctrl = omap_readl(OTG_CTRL);
>  	otg_change = otg_ctrl ^ isp->last_otg_ctrl;
>  	isp->last_otg_ctrl = otg_ctrl;
>  	otg_ctrl = otg_ctrl & OTG_XCEIV_INPUTS;
> @@ -643,6 +652,8 @@ pulldown:
>  
>  	/* HNP switch to host or peripheral; and SRP */
>  	if (otg_change & OTG_PULLUP) {
> +		u32 l;
> +
>  		switch (isp->otg.state) {
>  		case OTG_STATE_B_IDLE:
>  			if (clr & OTG1_DP_PULLUP)
> @@ -659,7 +670,9 @@ pulldown:
>  		default:
>  			break;
>  		}
> -		OTG_CTRL_REG |= OTG_PULLUP;
> +		l = omap_readl(OTG_CTRL);
> +		l |= OTG_PULLUP;
> +		omap_writel(l, OTG_CTRL);
>  	}
>  
>  	check_state(isp, __func__);
> @@ -668,20 +681,20 @@ pulldown:
>  
>  static irqreturn_t omap_otg_irq(int irq, void *_isp)
>  {
> -	u16		otg_irq = OTG_IRQ_SRC_REG;
> +	u16		otg_irq = omap_readw(OTG_IRQ_SRC);
>  	u32		otg_ctrl;
>  	int		ret = IRQ_NONE;
>  	struct isp1301	*isp = _isp;
>  
>  	/* update ISP1301 transciever from OTG controller */
>  	if (otg_irq & OPRT_CHG) {
> -		OTG_IRQ_SRC_REG = OPRT_CHG;
> +		omap_writew(OPRT_CHG, OTG_IRQ_SRC);
>  		isp1301_defer_work(isp, WORK_UPDATE_ISP);
>  		ret = IRQ_HANDLED;
>  
>  	/* SRP to become b_peripheral failed */
>  	} else if (otg_irq & B_SRP_TMROUT) {
> -		pr_debug("otg: B_SRP_TIMEOUT, %06x\n", OTG_CTRL_REG);
> +		pr_debug("otg: B_SRP_TIMEOUT, %06x\n", omap_readl(OTG_CTRL));
>  		notresponding(isp);
>  
>  		/* gadget drivers that care should monitor all kinds of
> @@ -691,31 +704,31 @@ static irqreturn_t omap_otg_irq(int irq, void *_isp)
>  		if (isp->otg.state == OTG_STATE_B_SRP_INIT)
>  			b_idle(isp, "srp_timeout");
>  
> -		OTG_IRQ_SRC_REG = B_SRP_TMROUT;
> +		omap_writew(B_SRP_TMROUT, OTG_IRQ_SRC);
>  		ret = IRQ_HANDLED;
>  
>  	/* HNP to become b_host failed */
>  	} else if (otg_irq & B_HNP_FAIL) {
>  		pr_debug("otg: %s B_HNP_FAIL, %06x\n",
> -				state_name(isp), OTG_CTRL_REG);
> +				state_name(isp), omap_readl(OTG_CTRL));
>  		notresponding(isp);
>  
> -		otg_ctrl = OTG_CTRL_REG;
> +		otg_ctrl = omap_readl(OTG_CTRL);
>  		otg_ctrl |= OTG_BUSDROP;
>  		otg_ctrl &= OTG_CTRL_MASK & ~OTG_XCEIV_INPUTS;
> -		OTG_CTRL_REG = otg_ctrl;
> +		omap_writel(otg_ctrl, OTG_CTRL);
>  
>  		/* subset of b_peripheral()... */
>  		isp->otg.state = OTG_STATE_B_PERIPHERAL;
>  		pr_debug("  --> b_peripheral\n");
>  
> -		OTG_IRQ_SRC_REG = B_HNP_FAIL;
> +		omap_writew(B_HNP_FAIL, OTG_IRQ_SRC);
>  		ret = IRQ_HANDLED;
>  
>  	/* detect SRP from B-device ... */
>  	} else if (otg_irq & A_SRP_DETECT) {
>  		pr_debug("otg: %s SRP_DETECT, %06x\n",
> -				state_name(isp), OTG_CTRL_REG);
> +				state_name(isp), omap_readl(OTG_CTRL));
>  
>  		isp1301_defer_work(isp, WORK_UPDATE_OTG);
>  		switch (isp->otg.state) {
> @@ -723,49 +736,49 @@ static irqreturn_t omap_otg_irq(int irq, void *_isp)
>  			if (!isp->otg.host)
>  				break;
>  			isp1301_defer_work(isp, WORK_HOST_RESUME);
> -			otg_ctrl = OTG_CTRL_REG;
> +			otg_ctrl = omap_readl(OTG_CTRL);
>  			otg_ctrl |= OTG_A_BUSREQ;
>  			otg_ctrl &= ~(OTG_BUSDROP|OTG_B_BUSREQ)
>  					& ~OTG_XCEIV_INPUTS
>  					& OTG_CTRL_MASK;
> -			OTG_CTRL_REG = otg_ctrl;
> +			omap_writel(otg_ctrl, OTG_CTRL);
>  			break;
>  		default:
>  			break;
>  		}
>  
> -		OTG_IRQ_SRC_REG = A_SRP_DETECT;
> +		omap_writew(A_SRP_DETECT, OTG_IRQ_SRC);
>  		ret = IRQ_HANDLED;
>  
>  	/* timer expired:  T(a_wait_bcon) and maybe T(a_wait_vrise)
>  	 * we don't track them separately
>  	 */
>  	} else if (otg_irq & A_REQ_TMROUT) {
> -		otg_ctrl = OTG_CTRL_REG;
> +		otg_ctrl = omap_readl(OTG_CTRL);
>  		pr_info("otg: BCON_TMOUT from %s, %06x\n",
>  				state_name(isp), otg_ctrl);
>  		notresponding(isp);
>  
>  		otg_ctrl |= OTG_BUSDROP;
>  		otg_ctrl &= ~OTG_A_BUSREQ & OTG_CTRL_MASK & ~OTG_XCEIV_INPUTS;
> -		OTG_CTRL_REG = otg_ctrl;
> +		omap_writel(otg_ctrl, OTG_CTRL);
>  		isp->otg.state = OTG_STATE_A_WAIT_VFALL;
>  
> -		OTG_IRQ_SRC_REG = A_REQ_TMROUT;
> +		omap_writew(A_REQ_TMROUT, OTG_IRQ_SRC);
>  		ret = IRQ_HANDLED;
>  
>  	/* A-supplied voltage fell too low; overcurrent */
>  	} else if (otg_irq & A_VBUS_ERR) {
> -		otg_ctrl = OTG_CTRL_REG;
> +		otg_ctrl = omap_readl(OTG_CTRL);
>  		printk(KERN_ERR "otg: %s, VBUS_ERR %04x ctrl %06x\n",
>  			state_name(isp), otg_irq, otg_ctrl);
>  
>  		otg_ctrl |= OTG_BUSDROP;
>  		otg_ctrl &= ~OTG_A_BUSREQ & OTG_CTRL_MASK & ~OTG_XCEIV_INPUTS;
> -		OTG_CTRL_REG = otg_ctrl;
> +		omap_writel(otg_ctrl, OTG_CTRL);
>  		isp->otg.state = OTG_STATE_A_VBUS_ERR;
>  
> -		OTG_IRQ_SRC_REG = A_VBUS_ERR;
> +		omap_writew(A_VBUS_ERR, OTG_IRQ_SRC);
>  		ret = IRQ_HANDLED;
>  
>  	/* switch driver; the transciever code activates it,
> @@ -774,7 +787,7 @@ static irqreturn_t omap_otg_irq(int irq, void *_isp)
>  	} else if (otg_irq & DRIVER_SWITCH) {
>  		int	kick = 0;
>  
> -		otg_ctrl = OTG_CTRL_REG;
> +		otg_ctrl = omap_readl(OTG_CTRL);
>  		printk(KERN_NOTICE "otg: %s, SWITCH to %s, ctrl %06x\n",
>  				state_name(isp),
>  				(otg_ctrl & OTG_DRIVER_SEL)
> @@ -797,7 +810,7 @@ static irqreturn_t omap_otg_irq(int irq, void *_isp)
>  		} else {
>  			if (!(otg_ctrl & OTG_ID)) {
>  				otg_ctrl &= OTG_CTRL_MASK & ~OTG_XCEIV_INPUTS;
> -				OTG_CTRL_REG = otg_ctrl | OTG_A_BUSREQ;
> +				omap_writel(otg_ctrl | OTG_A_BUSREQ, OTG_CTRL);
>  			}
>  
>  			if (isp->otg.host) {
> @@ -822,7 +835,7 @@ static irqreturn_t omap_otg_irq(int irq, void *_isp)
>  			}
>  		}
>  
> -		OTG_IRQ_SRC_REG = DRIVER_SWITCH;
> +		omap_writew(DRIVER_SWITCH, OTG_IRQ_SRC);
>  		ret = IRQ_HANDLED;
>  
>  		if (kick)
> @@ -838,12 +851,15 @@ static struct platform_device *otg_dev;
>  
>  static int otg_init(struct isp1301 *isp)
>  {
> +	u32 l;
> +
>  	if (!otg_dev)
>  		return -ENODEV;
>  
>  	dump_regs(isp, __func__);
>  	/* some of these values are board-specific... */
> -	OTG_SYSCON_2_REG |= OTG_EN
> +	l = omap_readl(OTG_SYSCON_2);
> +	l |= OTG_EN
>  		/* for B-device: */
>  		| SRP_GPDATA		/* 9msec Bdev D+ pulse */
>  		| SRP_GPDVBUS		/* discharge after VBUS pulse */
> @@ -853,18 +869,22 @@ static int otg_init(struct isp1301 *isp)
>  		| SRP_DPW		/* detect 167+ns SRP pulses */
>  		| SRP_DATA | SRP_VBUS	/* accept both kinds of SRP pulse */
>  		;
> +	omap_writel(l, OTG_SYSCON_2);
>  
>  	update_otg1(isp, isp1301_get_u8(isp, ISP1301_INTERRUPT_SOURCE));
>  	update_otg2(isp, isp1301_get_u8(isp, ISP1301_OTG_STATUS));
>  
>  	check_state(isp, __func__);
>  	pr_debug("otg: %s, %s %06x\n",
> -			state_name(isp), __func__, OTG_CTRL_REG);
> +			state_name(isp), __func__, omap_readl(OTG_CTRL));
>  
> -	OTG_IRQ_EN_REG = DRIVER_SWITCH | OPRT_CHG
> +	omap_writew(DRIVER_SWITCH | OPRT_CHG
>  			| B_SRP_TMROUT | B_HNP_FAIL
> -			| A_VBUS_ERR | A_SRP_DETECT | A_REQ_TMROUT;
> -	OTG_SYSCON_2_REG |= OTG_EN;
> +			| A_VBUS_ERR | A_SRP_DETECT | A_REQ_TMROUT, OTG_IRQ_EN);
> +
> +	l = omap_readl(OTG_SYSCON_2);
> +	l |= OTG_EN;
> +	omap_writel(l, OTG_SYSCON_2);
>  
>  	return 0;
>  }
> @@ -931,7 +951,11 @@ static void otg_unbind(struct isp1301 *isp)
>  
>  static void b_peripheral(struct isp1301 *isp)
>  {
> -	OTG_CTRL_REG = OTG_CTRL_REG & OTG_XCEIV_OUTPUTS;
> +	u32 l;
> +
> +	l = omap_readl(OTG_CTRL) & OTG_XCEIV_OUTPUTS;
> +	omap_writel(l, OTG_CTRL);
> +
>  	usb_gadget_vbus_connect(isp->otg.gadget);
>  
>  #ifdef	CONFIG_USB_OTG
> @@ -1003,6 +1027,8 @@ static void isp_update_otg(struct isp1301 *isp, u8 stat)
>  			isp_bstat = 0;
>  		}
>  	} else {
> +		u32 l;
> +
>  		/* if user unplugged mini-A end of cable,
>  		 * don't bypass A_WAIT_VFALL.
>  		 */
> @@ -1023,8 +1049,9 @@ static void isp_update_otg(struct isp1301 *isp, u8 stat)
>  				isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1,
>  						MC1_BDIS_ACON_EN);
>  				isp->otg.state = OTG_STATE_B_IDLE;
> -				OTG_CTRL_REG &= OTG_CTRL_REG & OTG_CTRL_MASK
> -						& ~OTG_CTRL_BITS;
> +				l = omap_readl(OTG_CTRL) & OTG_CTRL_MASK;
> +				l &= ~OTG_CTRL_BITS;
> +				omap_writel(l, OTG_CTRL);
>  				break;
>  			case OTG_STATE_B_IDLE:
>  				break;
> @@ -1050,7 +1077,8 @@ static void isp_update_otg(struct isp1301 *isp, u8 stat)
>  			/* FALLTHROUGH */
>  		case OTG_STATE_B_SRP_INIT:
>  			b_idle(isp, __func__);
> -			OTG_CTRL_REG &= OTG_CTRL_REG & OTG_XCEIV_OUTPUTS;
> +			l = omap_readl(OTG_CTRL) & OTG_XCEIV_OUTPUTS;
> +			omap_writel(l, OTG_CTRL);
>  			/* FALLTHROUGH */
>  		case OTG_STATE_B_IDLE:
>  			if (isp->otg.gadget && (isp_bstat & OTG_B_SESS_VLD)) {
> @@ -1134,11 +1162,11 @@ isp1301_work(struct work_struct *work)
>  			case OTG_STATE_A_WAIT_VRISE:
>  				isp->otg.state = OTG_STATE_A_HOST;
>  				pr_debug("  --> a_host\n");
> -				otg_ctrl = OTG_CTRL_REG;
> +				otg_ctrl = omap_readl(OTG_CTRL);
>  				otg_ctrl |= OTG_A_BUSREQ;
>  				otg_ctrl &= ~(OTG_BUSDROP|OTG_B_BUSREQ)
>  						& OTG_CTRL_MASK;
> -				OTG_CTRL_REG = otg_ctrl;
> +				omap_writel(otg_ctrl, OTG_CTRL);
>  				break;
>  			case OTG_STATE_B_WAIT_ACON:
>  				isp->otg.state = OTG_STATE_B_HOST;
> @@ -1277,7 +1305,7 @@ isp1301_set_host(struct otg_transceiver *otg, struct usb_bus *host)
>  		return -ENODEV;
>  
>  	if (!host) {
> -		OTG_IRQ_EN_REG = 0;
> +		omap_writew(0, OTG_IRQ_EN);
>  		power_down(isp);
>  		isp->otg.host = 0;
>  		return 0;
> @@ -1325,12 +1353,13 @@ static int
>  isp1301_set_peripheral(struct otg_transceiver *otg, struct usb_gadget *gadget)
>  {
>  	struct isp1301	*isp = container_of(otg, struct isp1301, otg);
> +	u32 l;
>  
>  	if (!otg || isp != the_transceiver)
>  		return -ENODEV;
>  
>  	if (!gadget) {
> -		OTG_IRQ_EN_REG = 0;
> +		omap_writew(0, OTG_IRQ_EN);
>  		if (!isp->otg.default_a)
>  			enable_vbus_draw(isp, 0);
>  		usb_gadget_vbus_disconnect(isp->otg.gadget);
> @@ -1351,9 +1380,11 @@ isp1301_set_peripheral(struct otg_transceiver *otg, struct usb_gadget *gadget)
>  	isp->otg.gadget = gadget;
>  	// FIXME update its refcount
>  
> -	OTG_CTRL_REG = (OTG_CTRL_REG & OTG_CTRL_MASK
> -				& ~(OTG_XCEIV_OUTPUTS|OTG_CTRL_BITS))
> -			| OTG_ID;
> +	l = omap_readl(OTG_CTRL) & OTG_CTRL_MASK;
> +	l &= ~(OTG_XCEIV_OUTPUTS|OTG_CTRL_BITS);
> +	l |= OTG_ID;
> +	omap_writel(l, OTG_CTRL);
> +
>  	power_up(isp);
>  	isp->otg.state = OTG_STATE_B_IDLE;
>  
> @@ -1406,16 +1437,17 @@ isp1301_start_srp(struct otg_transceiver *dev)
>  			|| isp->otg.state != OTG_STATE_B_IDLE)
>  		return -ENODEV;
>  
> -	otg_ctrl = OTG_CTRL_REG;
> +	otg_ctrl = omap_readl(OTG_CTRL);
>  	if (!(otg_ctrl & OTG_BSESSEND))
>  		return -EINVAL;
>  
>  	otg_ctrl |= OTG_B_BUSREQ;
>  	otg_ctrl &= ~OTG_A_BUSREQ & OTG_CTRL_MASK;
> -	OTG_CTRL_REG = otg_ctrl;
> +	omap_writel(otg_ctrl, OTG_CTRL);
>  	isp->otg.state = OTG_STATE_B_SRP_INIT;
>  
> -	pr_debug("otg: SRP, %s ... %06x\n", state_name(isp), OTG_CTRL_REG);
> +	pr_debug("otg: SRP, %s ... %06x\n", state_name(isp),
> +			omap_readl(OTG_CTRL));
>  #ifdef	CONFIG_USB_OTG
>  	check_state(isp, __func__);
>  #endif
> @@ -1427,6 +1459,7 @@ isp1301_start_hnp(struct otg_transceiver *dev)
>  {
>  #ifdef	CONFIG_USB_OTG
>  	struct isp1301	*isp = container_of(dev, struct isp1301, otg);
> +	u32 l;
>  
>  	if (!dev || isp != the_transceiver)
>  		return -ENODEV;
> @@ -1457,7 +1490,9 @@ isp1301_start_hnp(struct otg_transceiver *dev)
>  #endif
>  		/* caller must suspend then clear A_BUSREQ */
>  		usb_gadget_vbus_connect(isp->otg.gadget);
> -		OTG_CTRL_REG |= OTG_A_SETB_HNPEN;
> +		l = omap_readl(OTG_CTRL);
> +		l |= OTG_A_SETB_HNPEN;
> +		omap_writel(l, OTG_CTRL);
>  
>  		break;
>  	case OTG_STATE_A_PERIPHERAL:
> @@ -1467,7 +1502,7 @@ isp1301_start_hnp(struct otg_transceiver *dev)
>  		return -EILSEQ;
>  	}
>  	pr_debug("otg: HNP %s, %06x ...\n",
> -		state_name(isp), OTG_CTRL_REG);
> +		state_name(isp), omap_readl(OTG_CTRL));
>  	check_state(isp, __func__);
>  	return 0;
>  #else
> diff --git a/drivers/i2c/chips/twl4030-usb.c b/drivers/i2c/chips/twl4030-usb.c
> index 5cf1c5c..099a882 100644
> --- a/drivers/i2c/chips/twl4030-usb.c
> +++ b/drivers/i2c/chips/twl4030-usb.c
> @@ -66,15 +66,15 @@
>  #define IFC_CTRL_CARKITMODE		(1 << 2)
>  #define IFC_CTRL_FSLSSERIALMODE_3PIN	(1 << 1)
>  
> -#define OTG_CTRL			0x0A
> -#define OTG_CTRL_SET			0x0B
> -#define OTG_CTRL_CLR			0x0C
> -#define OTG_CTRL_DRVVBUS		(1 << 5)
> -#define OTG_CTRL_CHRGVBUS		(1 << 4)
> -#define OTG_CTRL_DISCHRGVBUS		(1 << 3)
> -#define OTG_CTRL_DMPULLDOWN		(1 << 2)
> -#define OTG_CTRL_DPPULLDOWN		(1 << 1)
> -#define OTG_CTRL_IDPULLUP		(1 << 0)
> +#define TWL4030_OTG_CTRL		0x0A
> +#define TWL4030_OTG_CTRL_SET		0x0B
> +#define TWL4030_OTG_CTRL_CLR		0x0C
> +#define TWL4030_OTG_CTRL_DRVVBUS	(1 << 5)
> +#define TWL4030_OTG_CTRL_CHRGVBUS	(1 << 4)
> +#define TWL4030_OTG_CTRL_DISCHRGVBUS	(1 << 3)
> +#define TWL4030_OTG_CTRL_DMPULLDOWN	(1 << 2)
> +#define TWL4030_OTG_CTRL_DPPULLDOWN	(1 << 1)
> +#define TWL4030_OTG_CTRL_IDPULLUP	(1 << 0)
>  
>  #define USB_INT_EN_RISE			0x0D
>  #define USB_INT_EN_RISE_SET		0x0E
> @@ -252,7 +252,7 @@
>  /* internal define on top of container_of */
>  #define xceiv_to_twl(x)		container_of((x), struct twl4030_usb, otg);
>  
> -/* bits in OTG_CTRL_REG */
> +/* bits in OTG_CTRL */
>  
>  #define	OTG_XCEIV_OUTPUTS \
>  	(OTG_ASESSVLD|OTG_BSESSEND|OTG_BSESSVLD|OTG_VBUSVLD|OTG_ID)
> @@ -625,12 +625,13 @@ static int twl4030_set_peripheral(struct otg_transceiver *xceiv,
>  		struct usb_gadget *gadget)
>  {
>  	struct twl4030_usb *twl = xceiv_to_twl(xceiv);
> +	u32 l;
>  
>  	if (!xceiv)
>  		return -ENODEV;
>  
>  	if (!gadget) {
> -		OTG_IRQ_EN_REG = 0;
> +		omap_writew(0, OTG_IRQ_EN);
>  		twl4030_phy_suspend(1);
>  		twl->otg.gadget = NULL;
>  
> @@ -640,9 +641,10 @@ static int twl4030_set_peripheral(struct otg_transceiver *xceiv,
>  	twl->otg.gadget = gadget;
>  	twl4030_phy_resume();
>  
> -	OTG_CTRL_REG = (OTG_CTRL_REG & OTG_CTRL_MASK
> -			& ~(OTG_XCEIV_OUTPUTS|OTG_CTRL_BITS))
> -			| OTG_ID;
> +	l = omap_readl(OTG_CTRL) & OTG_CTRL_MASK;
> +	l &= ~(OTG_XCEIV_OUTPUTS|OTG_CTRL_BITS);
> +	l |= OTG_ID;
> +	omap_writel(l, OTG_CTRL);
>  
>  	twl->otg.state = OTG_STATE_B_IDLE;
>  
> @@ -662,7 +664,7 @@ static int twl4030_set_host(struct otg_transceiver *xceiv, struct usb_bus *host)
>  		return -ENODEV;
>  
>  	if (!host) {
> -		OTG_IRQ_EN_REG = 0;
> +		omap_writew(0, OTG_IRQ_EN);
>  		twl4030_phy_suspend(1);
>  		twl->otg.host = NULL;
>  
> @@ -672,12 +674,13 @@ static int twl4030_set_host(struct otg_transceiver *xceiv, struct usb_bus *host)
>  	twl->otg.host = host;
>  	twl4030_phy_resume();
>  
> -	twl4030_usb_set_bits(twl, OTG_CTRL,
> -			OTG_CTRL_DMPULLDOWN | OTG_CTRL_DPPULLDOWN);
> +	twl4030_usb_set_bits(twl, TWL4030_OTG_CTRL,
> +			TWL4030_OTG_CTRL_DMPULLDOWN
> +				| TWL4030_OTG_CTRL_DPPULLDOWN);
>  	twl4030_usb_set_bits(twl, USB_INT_EN_RISE, USB_INT_IDGND);
>  	twl4030_usb_set_bits(twl, USB_INT_EN_FALL, USB_INT_IDGND);
>  	twl4030_usb_set_bits(twl, FUNC_CTRL, FUNC_CTRL_SUSPENDM);
> -	twl4030_usb_set_bits(twl, OTG_CTRL, OTG_CTRL_DRVVBUS);
> +	twl4030_usb_set_bits(twl, TWL4030_OTG_CTRL, TWL4030_OTG_CTRL_DRVVBUS);
>  
>  	return 0;
>  }
> diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
> index 9d274c9..b18447f 100644
> --- a/drivers/usb/gadget/omap_udc.c
> +++ b/drivers/usb/gadget/omap_udc.c
> @@ -136,13 +136,17 @@ static void use_ep(struct omap_ep *ep, u16 select)
>  
>  	if (ep->bEndpointAddress & USB_DIR_IN)
>  		num |= UDC_EP_DIR;
> -	UDC_EP_NUM_REG = num | select;
> +	omap_writew(num | select, UDC_EP_NUM);
>  	/* when select, MUST deselect later !! */
>  }
>  
>  static inline void deselect_ep(void)
>  {
> -	UDC_EP_NUM_REG &= ~UDC_EP_SEL;
> +	u16 w;
> +
> +	w = omap_readw(UDC_EP_NUM);
> +	w &= ~UDC_EP_SEL;
> +	omap_writew(w, UDC_EP_NUM);
>  	/* 6 wait states before TX will happen */
>  }
>  
> @@ -217,7 +221,7 @@ static int omap_ep_enable(struct usb_ep *_ep,
>  	ep->has_dma = 0;
>  	ep->lch = -1;
>  	use_ep(ep, UDC_EP_SEL);
> -	UDC_CTRL_REG = udc->clr_halt;
> +	omap_writew(udc->clr_halt, UDC_CTRL);
>  	ep->ackwait = 0;
>  	deselect_ep();
>  
> @@ -233,7 +237,7 @@ static int omap_ep_enable(struct usb_ep *_ep,
>  	if (desc->bmAttributes != USB_ENDPOINT_XFER_ISOC
>  			&& !ep->has_dma
>  			&& !(ep->bEndpointAddress & USB_DIR_IN)) {
> -		UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +		omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  		ep->ackwait = 1 + ep->double_buf;
>  	}
>  
> @@ -260,7 +264,7 @@ static int omap_ep_disable(struct usb_ep *_ep)
>  	nuke (ep, -ESHUTDOWN);
>  	ep->ep.maxpacket = ep->maxpacket;
>  	ep->has_dma = 0;
> -	UDC_CTRL_REG = UDC_SET_HALT;
> +	omap_writew(UDC_SET_HALT, UDC_CTRL);
>  	list_del_init(&ep->iso);
>  	del_timer(&ep->timer);
>  
> @@ -361,13 +365,13 @@ write_packet(u8 *buf, struct omap_req *req, unsigned max)
>  	if (likely((((int)buf) & 1) == 0)) {
>  		wp = (u16 *)buf;
>  		while (max >= 2) {
> -			UDC_DATA_REG = *wp++;
> +			omap_writew(*wp++, UDC_DATA);
>  			max -= 2;
>  		}
>  		buf = (u8 *)wp;
>  	}
>  	while (max--)
> -		*(volatile u8 *)&UDC_DATA_REG = *buf++;
> +		omap_writeb(*buf++, UDC_DATA);
>  	return len;
>  }
>  
> @@ -386,13 +390,13 @@ static int write_fifo(struct omap_ep *ep, struct omap_req *req)
>  	prefetch(buf);
>  
>  	/* PIO-IN isn't double buffered except for iso */
> -	ep_stat = UDC_STAT_FLG_REG;
> +	ep_stat = omap_readw(UDC_STAT_FLG);
>  	if (ep_stat & UDC_FIFO_UNWRITABLE)
>  		return 0;
>  
>  	count = ep->ep.maxpacket;
>  	count = write_packet(buf, req, count);
> -	UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +	omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  	ep->ackwait = 1;
>  
>  	/* last packet is often short (sometimes a zlp) */
> @@ -426,13 +430,13 @@ read_packet(u8 *buf, struct omap_req *req, unsigned avail)
>  	if (likely((((int)buf) & 1) == 0)) {
>  		wp = (u16 *)buf;
>  		while (avail >= 2) {
> -			*wp++ = UDC_DATA_REG;
> +			*wp++ = omap_readw(UDC_DATA);
>  			avail -= 2;
>  		}
>  		buf = (u8 *)wp;
>  	}
>  	while (avail--)
> -		*buf++ = *(volatile u8 *)&UDC_DATA_REG;
> +		*buf++ = omap_readb(UDC_DATA);
>  	return len;
>  }
>  
> @@ -447,7 +451,7 @@ static int read_fifo(struct omap_ep *ep, struct omap_req *req)
>  	prefetchw(buf);
>  
>  	for (;;) {
> -		u16	ep_stat = UDC_STAT_FLG_REG;
> +		u16	ep_stat = omap_readw(UDC_STAT_FLG);
>  
>  		is_last = 0;
>  		if (ep_stat & FIFO_EMPTY) {
> @@ -461,7 +465,7 @@ static int read_fifo(struct omap_ep *ep, struct omap_req *req)
>  		if (ep_stat & UDC_FIFO_FULL)
>  			avail = ep->ep.maxpacket;
>  		else  {
> -			avail = UDC_RXFSTAT_REG;
> +			avail = omap_readw(UDC_RXFSTAT);
>  			ep->fnf = ep->double_buf;
>  		}
>  		count = read_packet(buf, req, avail);
> @@ -474,7 +478,7 @@ static int read_fifo(struct omap_ep *ep, struct omap_req *req)
>  				req->req.status = -EOVERFLOW;
>  				avail -= count;
>  				while (avail--)
> -					(void) *(volatile u8 *)&UDC_DATA_REG;
> +					omap_readw(UDC_DATA);
>  			}
>  		} else if (req->req.length == req->req.actual)
>  			is_last = 1;
> @@ -536,7 +540,7 @@ static u16 dma_dest_len(struct omap_ep *ep, dma_addr_t start)
>  
>  static void next_in_dma(struct omap_ep *ep, struct omap_req *req)
>  {
> -	u16		txdma_ctrl;
> +	u16		txdma_ctrl, w;
>  	unsigned	length = req->req.length - req->req.actual;
>  	const int	sync_mode = cpu_is_omap15xx()
>  				? OMAP_DMA_SYNC_FRAME
> @@ -568,13 +572,17 @@ static void next_in_dma(struct omap_ep *ep, struct omap_req *req)
>  
>  	omap_start_dma(ep->lch);
>  	ep->dma_counter = omap_get_dma_src_pos(ep->lch);
> -	UDC_DMA_IRQ_EN_REG |= UDC_TX_DONE_IE(ep->dma_channel);
> -	UDC_TXDMA_REG(ep->dma_channel) = UDC_TXN_START | txdma_ctrl;
> +	w = omap_readw(UDC_DMA_IRQ_EN);
> +	w |= UDC_TX_DONE_IE(ep->dma_channel);
> +	omap_writew(w, UDC_DMA_IRQ_EN);
> +	omap_writew(UDC_TXN_START | txdma_ctrl, UDC_TXDMA(ep->dma_channel));
>  	req->dma_bytes = length;
>  }
>  
>  static void finish_in_dma(struct omap_ep *ep, struct omap_req *req, int status)
>  {
> +	u16 w;
> +
>  	if (status == 0) {
>  		req->req.actual += req->dma_bytes;
>  
> @@ -591,7 +599,9 @@ static void finish_in_dma(struct omap_ep *ep, struct omap_req *req, int status)
>  
>  	/* tx completion */
>  	omap_stop_dma(ep->lch);
> -	UDC_DMA_IRQ_EN_REG &= ~UDC_TX_DONE_IE(ep->dma_channel);
> +	w = omap_readw(UDC_DMA_IRQ_EN);
> +	w &= ~UDC_TX_DONE_IE(ep->dma_channel);
> +	omap_writew(w, UDC_DMA_IRQ_EN);
>  	done(ep, req, status);
>  }
>  
> @@ -599,6 +609,7 @@ static void next_out_dma(struct omap_ep *ep, struct omap_req *req)
>  {
>  	unsigned packets = req->req.length - req->req.actual;
>  	int dma_trigger = 0;
> +	u16 w;
>  
>  	if (cpu_is_omap24xx())
>  		dma_trigger = OMAP24XX_DMA(USB_W2FC_RX0, ep->dma_channel);
> @@ -627,10 +638,12 @@ static void next_out_dma(struct omap_ep *ep, struct omap_req *req)
>  		0, 0);
>  	ep->dma_counter = omap_get_dma_dst_pos(ep->lch);
>  
> -	UDC_RXDMA_REG(ep->dma_channel) = UDC_RXN_STOP | (packets - 1);
> -	UDC_DMA_IRQ_EN_REG |= UDC_RX_EOT_IE(ep->dma_channel);
> -	UDC_EP_NUM_REG = (ep->bEndpointAddress & 0xf);
> -	UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +	omap_writew(UDC_RXN_STOP | (packets - 1), UDC_RXDMA(ep->dma_channel));
> +	w = omap_readw(UDC_DMA_IRQ_EN);
> +	w |= UDC_RX_EOT_IE(ep->dma_channel);
> +	omap_writew(w, UDC_DMA_IRQ_EN);
> +	omap_writew(ep->bEndpointAddress & 0xf, UDC_EP_NUM);
> +	omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  
>  	omap_start_dma(ep->lch);
>  }
> @@ -638,7 +651,7 @@ static void next_out_dma(struct omap_ep *ep, struct omap_req *req)
>  static void
>  finish_out_dma(struct omap_ep *ep, struct omap_req *req, int status, int one)
>  {
> -	u16	count;
> +	u16	count, w;
>  
>  	if (status == 0)
>  		ep->dma_counter = (u16) (req->req.dma + req->req.actual);
> @@ -657,13 +670,15 @@ finish_out_dma(struct omap_ep *ep, struct omap_req *req, int status, int one)
>  		return;
>  
>  	/* rx completion */
> -	UDC_DMA_IRQ_EN_REG &= ~UDC_RX_EOT_IE(ep->dma_channel);
> +	w = omap_readw(UDC_DMA_IRQ_EN);
> +	w &= ~UDC_RX_EOT_IE(ep->dma_channel);
> +	omap_writew(w, UDC_DMA_IRQ_EN);
>  	done(ep, req, status);
>  }
>  
>  static void dma_irq(struct omap_udc *udc, u16 irq_src)
>  {
> -	u16		dman_stat = UDC_DMAN_STAT_REG;
> +	u16		dman_stat = omap_readw(UDC_DMAN_STAT);
>  	struct omap_ep	*ep;
>  	struct omap_req	*req;
>  
> @@ -677,7 +692,7 @@ static void dma_irq(struct omap_udc *udc, u16 irq_src)
>  						struct omap_req, queue);
>  			finish_in_dma(ep, req, 0);
>  		}
> -		UDC_IRQ_SRC_REG = UDC_TXN_DONE;
> +		omap_writew(UDC_TXN_DONE, UDC_IRQ_SRC);
>  
>  		if (!list_empty (&ep->queue)) {
>  			req = container_of(ep->queue.next,
> @@ -696,7 +711,7 @@ static void dma_irq(struct omap_udc *udc, u16 irq_src)
>  					struct omap_req, queue);
>  			finish_out_dma(ep, req, 0, dman_stat & UDC_DMA_RX_SB);
>  		}
> -		UDC_IRQ_SRC_REG = UDC_RXN_EOT;
> +		omap_writew(UDC_RXN_EOT, UDC_IRQ_SRC);
>  
>  		if (!list_empty (&ep->queue)) {
>  			req = container_of(ep->queue.next,
> @@ -710,7 +725,7 @@ static void dma_irq(struct omap_udc *udc, u16 irq_src)
>  		ep->irqs++;
>  		/* omap15xx does this unasked... */
>  		VDBG("%s, RX_CNT irq?\n", ep->ep.name);
> -		UDC_IRQ_SRC_REG = UDC_RXN_CNT;
> +		omap_writew(UDC_RXN_CNT, UDC_IRQ_SRC);
>  	}
>  }
>  
> @@ -733,9 +748,9 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
>  
>  	is_in = ep->bEndpointAddress & USB_DIR_IN;
>  	if (is_in)
> -		reg = UDC_TXDMA_CFG_REG;
> +		reg = omap_readw(UDC_TXDMA_CFG);
>  	else
> -		reg = UDC_RXDMA_CFG_REG;
> +		reg = omap_readw(UDC_RXDMA_CFG);
>  	reg |= UDC_DMA_REQ;		/* "pulse" activated */
>  
>  	ep->dma_channel = 0;
> @@ -763,7 +778,7 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
>  		status = omap_request_dma(dma_channel,
>  			ep->ep.name, dma_error, ep, &ep->lch);
>  		if (status == 0) {
> -			UDC_TXDMA_CFG_REG = reg;
> +			omap_writew(reg, UDC_TXDMA_CFG);
>  			/* EMIFF or SDRC */
>  			omap_set_dma_src_burst_mode(ep->lch,
>  						OMAP_DMA_DATA_BURST_4);
> @@ -772,7 +787,7 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
>  			omap_set_dma_dest_params(ep->lch,
>  				OMAP_DMA_PORT_TIPB,
>  				OMAP_DMA_AMODE_CONSTANT,
> -				(unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG),
> +				(unsigned long) io_v2p(UDC_DATA_DMA),
>  				0, 0);
>  		}
>  	} else {
> @@ -784,12 +799,12 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
>  		status = omap_request_dma(dma_channel,
>  			ep->ep.name, dma_error, ep, &ep->lch);
>  		if (status == 0) {
> -			UDC_RXDMA_CFG_REG = reg;
> +			omap_writew(reg, UDC_RXDMA_CFG);
>  			/* TIPB */
>  			omap_set_dma_src_params(ep->lch,
>  				OMAP_DMA_PORT_TIPB,
>  				OMAP_DMA_AMODE_CONSTANT,
> -				(unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG),
> +				(unsigned long) io_v2p(UDC_DATA_DMA),
>  				0, 0);
>  			/* EMIFF or SDRC */
>  			omap_set_dma_dest_burst_mode(ep->lch,
> @@ -832,7 +847,7 @@ just_restart:
>  			(is_in ? write_fifo : read_fifo)(ep, req);
>  			deselect_ep();
>  			if (!is_in) {
> -				UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +				omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  				ep->ackwait = 1 + ep->double_buf;
>  			}
>  			/* IN: 6 wait states before it'll tx */
> @@ -866,23 +881,25 @@ static void dma_channel_release(struct omap_ep *ep)
>  
>  	/* wait till current packet DMA finishes, and fifo empties */
>  	if (ep->bEndpointAddress & USB_DIR_IN) {
> -		UDC_TXDMA_CFG_REG = (UDC_TXDMA_CFG_REG & ~mask) | UDC_DMA_REQ;
> +		omap_writew((omap_readw(UDC_TXDMA_CFG) & ~mask) | UDC_DMA_REQ,
> +					UDC_TXDMA_CFG);
>  
>  		if (req) {
>  			finish_in_dma(ep, req, -ECONNRESET);
>  
>  			/* clear FIFO; hosts probably won't empty it */
>  			use_ep(ep, UDC_EP_SEL);
> -			UDC_CTRL_REG = UDC_CLR_EP;
> +			omap_writew(UDC_CLR_EP, UDC_CTRL);
>  			deselect_ep();
>  		}
> -		while (UDC_TXDMA_CFG_REG & mask)
> +		while (omap_readw(UDC_TXDMA_CFG) & mask)
>  			udelay(10);
>  	} else {
> -		UDC_RXDMA_CFG_REG = (UDC_RXDMA_CFG_REG & ~mask) | UDC_DMA_REQ;
> +		omap_writew((omap_readw(UDC_RXDMA_CFG) & ~mask) | UDC_DMA_REQ,
> +					UDC_RXDMA_CFG);
>  
>  		/* dma empties the fifo */
> -		while (UDC_RXDMA_CFG_REG & mask)
> +		while (omap_readw(UDC_RXDMA_CFG) & mask)
>  			udelay(10);
>  		if (req)
>  			finish_out_dma(ep, req, -ECONNRESET, 0);
> @@ -969,9 +986,13 @@ omap_ep_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags)
>  	req->req.actual = 0;
>  
>  	/* maybe kickstart non-iso i/o queues */
> -	if (is_iso)
> -		UDC_IRQ_EN_REG |= UDC_SOF_IE;
> -	else if (list_empty(&ep->queue) && !ep->stopped && !ep->ackwait) {
> +	if (is_iso) {
> +		u16 w;
> +
> +		w = omap_readw(UDC_IRQ_EN);
> +		w |= UDC_SOF_IE;
> +		omap_writew(w, UDC_IRQ_EN);
> +	} else if (list_empty(&ep->queue) && !ep->stopped && !ep->ackwait) {
>  		int	is_in;
>  
>  		if (ep->bEndpointAddress == 0) {
> @@ -989,23 +1010,23 @@ omap_ep_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags)
>  				 * requests to non-control endpoints
>  				 */
>  				if (udc->ep0_set_config) {
> -					u16	irq_en = UDC_IRQ_EN_REG;
> +					u16	irq_en = omap_readw(UDC_IRQ_EN);
>  
>  					irq_en |= UDC_DS_CHG_IE | UDC_EP0_IE;
>  					if (!udc->ep0_reset_config)
>  						irq_en |= UDC_EPN_RX_IE
>  							| UDC_EPN_TX_IE;
> -					UDC_IRQ_EN_REG = irq_en;
> +					omap_writew(irq_en, UDC_IRQ_EN);
>  				}
>  
>  				/* STATUS for zero length DATA stages is
>  				 * always an IN ... even for IN transfers,
>  				 * a weird case which seem to stall OMAP.
>  				 */
> -				UDC_EP_NUM_REG = (UDC_EP_SEL|UDC_EP_DIR);
> -				UDC_CTRL_REG = UDC_CLR_EP;
> -				UDC_CTRL_REG = UDC_SET_FIFO_EN;
> -				UDC_EP_NUM_REG = UDC_EP_DIR;
> +				omap_writew(UDC_EP_SEL | UDC_EP_DIR, UDC_EP_NUM);
> +				omap_writew(UDC_CLR_EP, UDC_CTRL);
> +				omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
> +				omap_writew(UDC_EP_DIR, UDC_EP_NUM);
>  
>  				/* cleanup */
>  				udc->ep0_pending = 0;
> @@ -1014,11 +1035,11 @@ omap_ep_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags)
>  
>  			/* non-empty DATA stage */
>  			} else if (is_in) {
> -				UDC_EP_NUM_REG = UDC_EP_SEL|UDC_EP_DIR;
> +				omap_writew(UDC_EP_SEL | UDC_EP_DIR, UDC_EP_NUM);
>  			} else {
>  				if (udc->ep0_setup)
>  					goto irq_wait;
> -				UDC_EP_NUM_REG = UDC_EP_SEL;
> +				omap_writew(UDC_EP_SEL, UDC_EP_NUM);
>  			}
>  		} else {
>  			is_in = ep->bEndpointAddress & USB_DIR_IN;
> @@ -1034,7 +1055,7 @@ omap_ep_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags)
>  				req = NULL;
>  			deselect_ep();
>  			if (!is_in) {
> -				UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +				omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  				ep->ackwait = 1 + ep->double_buf;
>  			}
>  			/* IN: 6 wait states before it'll tx */
> @@ -1102,9 +1123,9 @@ static int omap_ep_set_halt(struct usb_ep *_ep, int value)
>  		else if (value) {
>  			if (ep->udc->ep0_set_config) {
>  				WARN("error changing config?\n");
> -				UDC_SYSCON2_REG = UDC_CLR_CFG;
> +				omap_writew(UDC_CLR_CFG, UDC_SYSCON2);
>  			}
> -			UDC_SYSCON2_REG = UDC_STALL_CMD;
> +			omap_writew(UDC_STALL_CMD, UDC_SYSCON2);
>  			ep->udc->ep0_pending = 0;
>  			status = 0;
>  		} else /* NOP */
> @@ -1131,8 +1152,8 @@ static int omap_ep_set_halt(struct usb_ep *_ep, int value)
>  				channel = 0;
>  
>  			use_ep(ep, UDC_EP_SEL);
> -			if (UDC_STAT_FLG_REG & UDC_NON_ISO_FIFO_EMPTY) {
> -				UDC_CTRL_REG = UDC_SET_HALT;
> +			if (omap_readw(UDC_STAT_FLG) & UDC_NON_ISO_FIFO_EMPTY) {
> +				omap_writew(UDC_SET_HALT, UDC_CTRL);
>  				status = 0;
>  			} else
>  				status = -EAGAIN;
> @@ -1142,10 +1163,10 @@ static int omap_ep_set_halt(struct usb_ep *_ep, int value)
>  				dma_channel_claim(ep, channel);
>  		} else {
>  			use_ep(ep, 0);
> -			UDC_CTRL_REG = ep->udc->clr_halt;
> +			omap_writew(ep->udc->clr_halt, UDC_CTRL);
>  			ep->ackwait = 0;
>  			if (!(ep->bEndpointAddress & USB_DIR_IN)) {
> -				UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +				omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  				ep->ackwait = 1 + ep->double_buf;
>  			}
>  		}
> @@ -1177,7 +1198,7 @@ static struct usb_ep_ops omap_ep_ops = {
>  
>  static int omap_get_frame(struct usb_gadget *gadget)
>  {
> -	u16	sof = UDC_SOF_REG;
> +	u16	sof = omap_readw(UDC_SOF);
>  	return (sof & UDC_TS_OK) ? (sof & UDC_TS) : -EL2NSYNC;
>  }
>  
> @@ -1196,7 +1217,7 @@ static int omap_wakeup(struct usb_gadget *gadget)
>  		 */
>  		if (udc->devstat & (UDC_B_HNP_ENABLE|UDC_R_WK_OK)) {
>  			DBG("remote wakeup...\n");
> -			UDC_SYSCON2_REG = UDC_RMT_WKP;
> +			omap_writew(UDC_RMT_WKP, UDC_SYSCON2);
>  			retval = 0;
>  		}
>  
> @@ -1219,12 +1240,12 @@ omap_set_selfpowered(struct usb_gadget *gadget, int is_selfpowered)
>  
>  	udc = container_of(gadget, struct omap_udc, gadget);
>  	spin_lock_irqsave(&udc->lock, flags);
> -	syscon1 = UDC_SYSCON1_REG;
> +	syscon1 = omap_readw(UDC_SYSCON1);
>  	if (is_selfpowered)
>  		syscon1 |= UDC_SELF_PWR;
>  	else
>  		syscon1 &= ~UDC_SELF_PWR;
> -	UDC_SYSCON1_REG = syscon1;
> +	omap_writew(syscon1, UDC_SYSCON1);
>  	spin_unlock_irqrestore(&udc->lock, flags);
>  
>  	return 0;
> @@ -1237,18 +1258,36 @@ static int can_pullup(struct omap_udc *udc)
>  
>  static void pullup_enable(struct omap_udc *udc)
>  {
> -	UDC_SYSCON1_REG |= UDC_PULLUP_EN;
> -	if (!gadget_is_otg(&udc->gadget) && !cpu_is_omap15xx())
> -		OTG_CTRL_REG |= OTG_BSESSVLD;
> -	UDC_IRQ_EN_REG = UDC_DS_CHG_IE;
> +	u16 w;
> +
> +	w = omap_readw(UDC_SYSCON1);
> +	w |= UDC_PULLUP_EN;
> +	omap_writew(w, UDC_SYSCON1);
> +	if (!gadget_is_otg(&udc->gadget) && !cpu_is_omap15xx()) {
> +		u32 l;
> +
> +		l = omap_readl(OTG_CTRL);
> +		l |= OTG_BSESSVLD;
> +		omap_writel(l, OTG_CTRL);
> +	}
> +	omap_writew(UDC_DS_CHG_IE, UDC_IRQ_EN);
>  }
>  
>  static void pullup_disable(struct omap_udc *udc)
>  {
> -	if (!gadget_is_otg(&udc->gadget) && !cpu_is_omap15xx())
> -		OTG_CTRL_REG &= ~OTG_BSESSVLD;
> -	UDC_IRQ_EN_REG = UDC_DS_CHG_IE;
> -	UDC_SYSCON1_REG &= ~UDC_PULLUP_EN;
> +	u16 w;
> +
> +	if (!gadget_is_otg(&udc->gadget) && !cpu_is_omap15xx()) {
> +		u32 l;
> +
> +		l = omap_readl(OTG_CTRL);
> +		l &= ~OTG_BSESSVLD;
> +		omap_writel(l, OTG_CTRL);
> +	}
> +	omap_writew(UDC_DS_CHG_IE, UDC_IRQ_EN);
> +	w = omap_readw(UDC_SYSCON1);
> +	w &= ~UDC_PULLUP_EN;
> +	omap_writew(w, UDC_SYSCON1);
>  }
>  
>  static struct omap_udc *udc;
> @@ -1276,6 +1315,7 @@ static int omap_vbus_session(struct usb_gadget *gadget, int is_active)
>  {
>  	struct omap_udc	*udc;
>  	unsigned long	flags;
> +	u32 l;
>  
>  	udc = container_of(gadget, struct omap_udc, gadget);
>  	spin_lock_irqsave(&udc->lock, flags);
> @@ -1283,10 +1323,12 @@ static int omap_vbus_session(struct usb_gadget *gadget, int is_active)
>  	udc->vbus_active = (is_active != 0);
>  	if (cpu_is_omap15xx()) {
>  		/* "software" detect, ignored if !VBUS_MODE_1510 */
> +		l = omap_readl(FUNC_MUX_CTRL_0);
>  		if (is_active)
> -			FUNC_MUX_CTRL_0_REG |= VBUS_CTRL_1510;
> +			l |= VBUS_CTRL_1510;
>  		else
> -			FUNC_MUX_CTRL_0_REG &= ~VBUS_CTRL_1510;
> +			l &= ~VBUS_CTRL_1510;
> +		omap_writel(l, FUNC_MUX_CTRL_0);
>  	}
>  	if (udc->dc_clk != NULL && is_active) {
>  		if (!udc->clk_requested) {
> @@ -1356,9 +1398,9 @@ static void nuke(struct omap_ep *ep, int status)
>  		dma_channel_release(ep);
>  
>  	use_ep(ep, 0);
> -	UDC_CTRL_REG = UDC_CLR_EP;
> +	omap_writew(UDC_CLR_EP, UDC_CTRL);
>  	if (ep->bEndpointAddress && ep->bmAttributes != USB_ENDPOINT_XFER_ISOC)
> -		UDC_CTRL_REG = UDC_SET_HALT;
> +		omap_writew(UDC_SET_HALT, UDC_CTRL);
>  
>  	while (!list_empty(&ep->queue)) {
>  		req = list_entry(ep->queue.next, struct omap_req, queue);
> @@ -1386,8 +1428,8 @@ static void update_otg(struct omap_udc *udc)
>  	if (!gadget_is_otg(&udc->gadget))
>  		return;
>  
> -	if (OTG_CTRL_REG & OTG_ID)
> -		devstat = UDC_DEVSTAT_REG;
> +	if (omap_readl(OTG_CTRL) & OTG_ID)
> +		devstat = omap_readw(UDC_DEVSTAT);
>  	else
>  		devstat = 0;
>  
> @@ -1398,9 +1440,14 @@ static void update_otg(struct omap_udc *udc)
>  	/* Enable HNP early, avoiding races on suspend irq path.
>  	 * ASSUMES OTG state machine B_BUS_REQ input is true.
>  	 */
> -	if (udc->gadget.b_hnp_enable)
> -		OTG_CTRL_REG = (OTG_CTRL_REG | OTG_B_HNPEN | OTG_B_BUSREQ)
> -				& ~OTG_PULLUP;
> +	if (udc->gadget.b_hnp_enable) {
> +		u32 l;
> +
> +		l = omap_readl(OTG_CTRL);
> +		l |= OTG_B_HNPEN | OTG_B_BUSREQ;
> +		l &= ~OTG_PULLUP;
> +		omap_writel(l, OTG_CTRL);
> +	}
>  }
>  
>  static void ep0_irq(struct omap_udc *udc, u16 irq_src)
> @@ -1418,7 +1465,7 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
>  
>  		nuke(ep0, 0);
>  		if (ack) {
> -			UDC_IRQ_SRC_REG = ack;
> +			omap_writew(ack, UDC_IRQ_SRC);
>  			irq_src = UDC_SETUP;
>  		}
>  	}
> @@ -1438,9 +1485,9 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
>  	if (irq_src & UDC_EP0_TX) {
>  		int	stat;
>  
> -		UDC_IRQ_SRC_REG = UDC_EP0_TX;
> -		UDC_EP_NUM_REG = UDC_EP_SEL|UDC_EP_DIR;
> -		stat = UDC_STAT_FLG_REG;
> +		omap_writew(UDC_EP0_TX, UDC_IRQ_SRC);
> +		omap_writew(UDC_EP_SEL|UDC_EP_DIR, UDC_EP_NUM);
> +		stat = omap_readw(UDC_STAT_FLG);
>  		if (stat & UDC_ACK) {
>  			if (udc->ep0_in) {
>  				/* write next IN packet from response,
> @@ -1448,26 +1495,26 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
>  				 */
>  				if (req)
>  					stat = write_fifo(ep0, req);
> -				UDC_EP_NUM_REG = UDC_EP_DIR;
> +				omap_writew(UDC_EP_DIR, UDC_EP_NUM);
>  				if (!req && udc->ep0_pending) {
> -					UDC_EP_NUM_REG = UDC_EP_SEL;
> -					UDC_CTRL_REG = UDC_CLR_EP;
> -					UDC_CTRL_REG = UDC_SET_FIFO_EN;
> -					UDC_EP_NUM_REG = 0;
> +					omap_writew(UDC_EP_SEL, UDC_EP_NUM);
> +					omap_writew(UDC_CLR_EP, UDC_CTRL);
> +					omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
> +					omap_writew(0, UDC_EP_NUM);
>  					udc->ep0_pending = 0;
>  				} /* else:  6 wait states before it'll tx */
>  			} else {
>  				/* ack status stage of OUT transfer */
> -				UDC_EP_NUM_REG = UDC_EP_DIR;
> +				omap_writew(UDC_EP_DIR, UDC_EP_NUM);
>  				if (req)
>  					done(ep0, req, 0);
>  			}
>  			req = NULL;
>  		} else if (stat & UDC_STALL) {
> -			UDC_CTRL_REG = UDC_CLR_HALT;
> -			UDC_EP_NUM_REG = UDC_EP_DIR;
> +			omap_writew(UDC_CLR_HALT, UDC_CTRL);
> +			omap_writew(UDC_EP_DIR, UDC_EP_NUM);
>  		} else {
> -			UDC_EP_NUM_REG = UDC_EP_DIR;
> +			omap_writew(UDC_EP_DIR, UDC_EP_NUM);
>  		}
>  	}
>  
> @@ -1475,9 +1522,9 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
>  	if (irq_src & UDC_EP0_RX) {
>  		int	stat;
>  
> -		UDC_IRQ_SRC_REG = UDC_EP0_RX;
> -		UDC_EP_NUM_REG = UDC_EP_SEL;
> -		stat = UDC_STAT_FLG_REG;
> +		omap_writew(UDC_EP0_RX, UDC_IRQ_SRC);
> +		omap_writew(UDC_EP_SEL, UDC_EP_NUM);
> +		stat = omap_readw(UDC_STAT_FLG);
>  		if (stat & UDC_ACK) {
>  			if (!udc->ep0_in) {
>  				stat = 0;
> @@ -1485,34 +1532,35 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
>  				 * reactiviting the fifo; stall on errors.
>  				 */
>  				if (!req || (stat = read_fifo(ep0, req)) < 0) {
> -					UDC_SYSCON2_REG = UDC_STALL_CMD;
> +					omap_writew(UDC_STALL_CMD, UDC_SYSCON2);
>  					udc->ep0_pending = 0;
>  					stat = 0;
>  				} else if (stat == 0)
> -					UDC_CTRL_REG = UDC_SET_FIFO_EN;
> -				UDC_EP_NUM_REG = 0;
> +					omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
> +				omap_writew(0, UDC_EP_NUM);
>  
>  				/* activate status stage */
>  				if (stat == 1) {
>  					done(ep0, req, 0);
>  					/* that may have STALLed ep0... */
> -					UDC_EP_NUM_REG = UDC_EP_SEL|UDC_EP_DIR;
> -					UDC_CTRL_REG = UDC_CLR_EP;
> -					UDC_CTRL_REG = UDC_SET_FIFO_EN;
> -					UDC_EP_NUM_REG = UDC_EP_DIR;
> +					omap_writew(UDC_EP_SEL | UDC_EP_DIR,
> +							UDC_EP_NUM);
> +					omap_writew(UDC_CLR_EP, UDC_CTRL);
> +					omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
> +					omap_writew(UDC_EP_DIR, UDC_EP_NUM);
>  					udc->ep0_pending = 0;
>  				}
>  			} else {
>  				/* ack status stage of IN transfer */
> -				UDC_EP_NUM_REG = 0;
> +				omap_writew(0, UDC_EP_NUM);
>  				if (req)
>  					done(ep0, req, 0);
>  			}
>  		} else if (stat & UDC_STALL) {
> -			UDC_CTRL_REG = UDC_CLR_HALT;
> -			UDC_EP_NUM_REG = 0;
> +			omap_writew(UDC_CLR_HALT, UDC_CTRL);
> +			omap_writew(0, UDC_EP_NUM);
>  		} else {
> -			UDC_EP_NUM_REG = 0;
> +			omap_writew(0, UDC_EP_NUM);
>  		}
>  	}
>  
> @@ -1527,14 +1575,14 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
>  
>  		/* read the (latest) SETUP message */
>  		do {
> -			UDC_EP_NUM_REG = UDC_SETUP_SEL;
> +			omap_writew(UDC_SETUP_SEL, UDC_EP_NUM);
>  			/* two bytes at a time */
> -			u.word[0] = UDC_DATA_REG;
> -			u.word[1] = UDC_DATA_REG;
> -			u.word[2] = UDC_DATA_REG;
> -			u.word[3] = UDC_DATA_REG;
> -			UDC_EP_NUM_REG = 0;
> -		} while (UDC_IRQ_SRC_REG & UDC_SETUP);
> +			u.word[0] = omap_readw(UDC_DATA);
> +			u.word[1] = omap_readw(UDC_DATA);
> +			u.word[2] = omap_readw(UDC_DATA);
> +			u.word[3] = omap_readw(UDC_DATA);
> +			omap_writew(0, UDC_EP_NUM);
> +		} while (omap_readw(UDC_IRQ_SRC) & UDC_SETUP);
>  
>  #define	w_value		le16_to_cpu(u.r.wValue)
>  #define	w_index		le16_to_cpu(u.r.wIndex)
> @@ -1565,9 +1613,9 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
>  			 * later if it fails the request.
>  			 */
>  			if (udc->ep0_reset_config)
> -				UDC_SYSCON2_REG = UDC_CLR_CFG;
> +				omap_writew(UDC_CLR_CFG, UDC_SYSCON2);
>  			else
> -				UDC_SYSCON2_REG = UDC_DEV_CFG;
> +				omap_writew(UDC_DEV_CFG, UDC_SYSCON2);
>  			update_otg(udc);
>  			goto delegate;
>  		case USB_REQ_CLEAR_FEATURE:
> @@ -1585,10 +1633,10 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
>  						|| !ep->desc)
>  					goto do_stall;
>  				use_ep(ep, 0);
> -				UDC_CTRL_REG = udc->clr_halt;
> +				omap_writew(udc->clr_halt, UDC_CTRL);
>  				ep->ackwait = 0;
>  				if (!(ep->bEndpointAddress & USB_DIR_IN)) {
> -					UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +					omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  					ep->ackwait = 1 + ep->double_buf;
>  				}
>  				/* NOTE:  assumes the host behaves sanely,
> @@ -1621,15 +1669,15 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
>  			}
>  			use_ep(ep, 0);
>  			/* can't halt if fifo isn't empty... */
> -			UDC_CTRL_REG = UDC_CLR_EP;
> -			UDC_CTRL_REG = UDC_SET_HALT;
> +			omap_writew(UDC_CLR_EP, UDC_CTRL);
> +			omap_writew(UDC_SET_HALT, UDC_CTRL);
>  			VDBG("%s halted by host\n", ep->name);
>  ep0out_status_stage:
>  			status = 0;
> -			UDC_EP_NUM_REG = UDC_EP_SEL|UDC_EP_DIR;
> -			UDC_CTRL_REG = UDC_CLR_EP;
> -			UDC_CTRL_REG = UDC_SET_FIFO_EN;
> -			UDC_EP_NUM_REG = UDC_EP_DIR;
> +			omap_writew(UDC_EP_SEL|UDC_EP_DIR, UDC_EP_NUM);
> +			omap_writew(UDC_CLR_EP, UDC_CTRL);
> +			omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
> +			omap_writew(UDC_EP_DIR, UDC_EP_NUM);
>  			udc->ep0_pending = 0;
>  			break;
>  		case USB_REQ_GET_STATUS:
> @@ -1666,10 +1714,10 @@ intf_status:
>  
>  zero_status:
>  			/* return two zero bytes */
> -			UDC_EP_NUM_REG = UDC_EP_SEL|UDC_EP_DIR;
> -			UDC_DATA_REG = 0;
> -			UDC_CTRL_REG = UDC_SET_FIFO_EN;
> -			UDC_EP_NUM_REG = UDC_EP_DIR;
> +			omap_writew(UDC_EP_SEL|UDC_EP_DIR, UDC_EP_NUM);
> +			omap_writew(0, UDC_DATA);
> +			omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
> +			omap_writew(UDC_EP_DIR, UDC_EP_NUM);
>  			status = 0;
>  			VDBG("GET_STATUS, interface %d\n", w_index);
>  			/* next, status stage */
> @@ -1678,8 +1726,8 @@ zero_status:
>  delegate:
>  			/* activate the ep0out fifo right away */
>  			if (!udc->ep0_in && w_length) {
> -				UDC_EP_NUM_REG = 0;
> -				UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +				omap_writew(0, UDC_EP_NUM);
> +				omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  			}
>  
>  			/* gadget drivers see class/vendor specific requests,
> @@ -1720,9 +1768,9 @@ do_stall:
>  				if (udc->ep0_reset_config)
>  					WARN("error resetting config?\n");
>  				else
> -					UDC_SYSCON2_REG = UDC_CLR_CFG;
> +					omap_writew(UDC_CLR_CFG, UDC_SYSCON2);
>  			}
> -			UDC_SYSCON2_REG = UDC_STALL_CMD;
> +			omap_writew(UDC_STALL_CMD, UDC_SYSCON2);
>  			udc->ep0_pending = 0;
>  		}
>  	}
> @@ -1736,7 +1784,7 @@ static void devstate_irq(struct omap_udc *udc, u16 irq_src)
>  {
>  	u16	devstat, change;
>  
> -	devstat = UDC_DEVSTAT_REG;
> +	devstat = omap_readw(UDC_DEVSTAT);
>  	change = devstat ^ udc->devstat;
>  	udc->devstat = devstat;
>  
> @@ -1776,7 +1824,8 @@ static void devstate_irq(struct omap_udc *udc, u16 irq_src)
>  				INFO("USB reset done, gadget %s\n",
>  					udc->driver->driver.name);
>  				/* ep0 traffic is legal from now on */
> -				UDC_IRQ_EN_REG = UDC_DS_CHG_IE | UDC_EP0_IE;
> +				omap_writew(UDC_DS_CHG_IE | UDC_EP0_IE,
> +						UDC_IRQ_EN);
>  			}
>  			change &= ~UDC_USB_RESET;
>  		}
> @@ -1820,7 +1869,7 @@ static void devstate_irq(struct omap_udc *udc, u16 irq_src)
>  		VDBG("devstat %03x, ignore change %03x\n",
>  			devstat,  change);
>  
> -	UDC_IRQ_SRC_REG = UDC_DS_CHG;
> +	omap_writew(UDC_DS_CHG, UDC_IRQ_SRC);
>  }
>  
>  static irqreturn_t omap_udc_irq(int irq, void *_udc)
> @@ -1831,7 +1880,7 @@ static irqreturn_t omap_udc_irq(int irq, void *_udc)
>  	unsigned long	flags;
>  
>  	spin_lock_irqsave(&udc->lock, flags);
> -	irq_src = UDC_IRQ_SRC_REG;
> +	irq_src = omap_readw(UDC_IRQ_SRC);
>  
>  	/* Device state change (usb ch9 stuff) */
>  	if (irq_src & UDC_DS_CHG) {
> @@ -1854,7 +1903,7 @@ static irqreturn_t omap_udc_irq(int irq, void *_udc)
>  		irq_src &= ~(UDC_TXN_DONE|UDC_RXN_CNT|UDC_RXN_EOT);
>  	}
>  
> -	irq_src &= ~(UDC_SOF|UDC_EPN_TX|UDC_EPN_RX);
> +	irq_src &= ~(UDC_IRQ_SOF | UDC_EPN_TX|UDC_EPN_RX);
>  	if (irq_src)
>  		DBG("udc_irq, unhandled %03x\n", irq_src);
>  	spin_unlock_irqrestore(&udc->lock, flags);
> @@ -1875,7 +1924,7 @@ static void pio_out_timer(unsigned long _ep)
>  	spin_lock_irqsave(&ep->udc->lock, flags);
>  	if (!list_empty(&ep->queue) && ep->ackwait) {
>  		use_ep(ep, UDC_EP_SEL);
> -		stat_flg = UDC_STAT_FLG_REG;
> +		stat_flg = omap_readw(UDC_STAT_FLG);
>  
>  		if ((stat_flg & UDC_ACK) && (!(stat_flg & UDC_FIFO_EN)
>  				|| (ep->double_buf && HALF_FULL(stat_flg)))) {
> @@ -1885,8 +1934,8 @@ static void pio_out_timer(unsigned long _ep)
>  			req = container_of(ep->queue.next,
>  					struct omap_req, queue);
>  			(void) read_fifo(ep, req);
> -			UDC_EP_NUM_REG = ep->bEndpointAddress;
> -			UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +			omap_writew(ep->bEndpointAddress, UDC_EP_NUM);
> +			omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  			ep->ackwait = 1 + ep->double_buf;
>  		} else
>  			deselect_ep();
> @@ -1906,20 +1955,20 @@ static irqreturn_t omap_udc_pio_irq(int irq, void *_dev)
>  	unsigned long	flags;
>  
>  	spin_lock_irqsave(&udc->lock, flags);
> -	epn_stat = UDC_EPN_STAT_REG;
> -	irq_src = UDC_IRQ_SRC_REG;
> +	epn_stat = omap_readw(UDC_EPN_STAT);
> +	irq_src = omap_readw(UDC_IRQ_SRC);
>  
>  	/* handle OUT first, to avoid some wasteful NAKs */
>  	if (irq_src & UDC_EPN_RX) {
>  		epnum = (epn_stat >> 8) & 0x0f;
> -		UDC_IRQ_SRC_REG = UDC_EPN_RX;
> +		omap_writew(UDC_EPN_RX, UDC_IRQ_SRC);
>  		status = IRQ_HANDLED;
>  		ep = &udc->ep[epnum];
>  		ep->irqs++;
>  
> -		UDC_EP_NUM_REG = epnum | UDC_EP_SEL;
> +		omap_writew(epnum | UDC_EP_SEL, UDC_EP_NUM);
>  		ep->fnf = 0;
> -		if ((UDC_STAT_FLG_REG & UDC_ACK)) {
> +		if (omap_readw(UDC_STAT_FLG) & UDC_ACK) {
>  			ep->ackwait--;
>  			if (!list_empty(&ep->queue)) {
>  				int stat;
> @@ -1931,15 +1980,15 @@ static irqreturn_t omap_udc_pio_irq(int irq, void *_dev)
>  			}
>  		}
>  		/* min 6 clock delay before clearing EP_SEL ... */
> -		epn_stat = UDC_EPN_STAT_REG;
> -		epn_stat = UDC_EPN_STAT_REG;
> -		UDC_EP_NUM_REG = epnum;
> +		epn_stat = omap_readw(UDC_EPN_STAT);
> +		epn_stat = omap_readw(UDC_EPN_STAT);
> +		omap_writew(epnum, UDC_EP_NUM);
>  
>  		/* enabling fifo _after_ clearing ACK, contrary to docs,
>  		 * reduces lossage; timer still needed though (sigh).
>  		 */
>  		if (ep->fnf) {
> -			UDC_CTRL_REG = UDC_SET_FIFO_EN;
> +			omap_writew(UDC_SET_FIFO_EN, UDC_CTRL);
>  			ep->ackwait = 1 + ep->double_buf;
>  		}
>  		mod_timer(&ep->timer, PIO_OUT_TIMEOUT);
> @@ -1948,13 +1997,13 @@ static irqreturn_t omap_udc_pio_irq(int irq, void *_dev)
>  	/* then IN transfers */
>  	else if (irq_src & UDC_EPN_TX) {
>  		epnum = epn_stat & 0x0f;
> -		UDC_IRQ_SRC_REG = UDC_EPN_TX;
> +		omap_writew(UDC_EPN_TX, UDC_IRQ_SRC);
>  		status = IRQ_HANDLED;
>  		ep = &udc->ep[16 + epnum];
>  		ep->irqs++;
>  
> -		UDC_EP_NUM_REG = epnum | UDC_EP_DIR | UDC_EP_SEL;
> -		if ((UDC_STAT_FLG_REG & UDC_ACK)) {
> +		omap_writew(epnum | UDC_EP_DIR | UDC_EP_SEL, UDC_EP_NUM);
> +		if (omap_readw(UDC_STAT_FLG & UDC_ACK)) {
>  			ep->ackwait = 0;
>  			if (!list_empty(&ep->queue)) {
>  				req = container_of(ep->queue.next,
> @@ -1963,9 +2012,9 @@ static irqreturn_t omap_udc_pio_irq(int irq, void *_dev)
>  			}
>  		}
>  		/* min 6 clock delay before clearing EP_SEL ... */
> -		epn_stat = UDC_EPN_STAT_REG;
> -		epn_stat = UDC_EPN_STAT_REG;
> -		UDC_EP_NUM_REG = epnum | UDC_EP_DIR;
> +		epn_stat = omap_readw(UDC_EPN_STAT);
> +		epn_stat = omap_readw(UDC_EPN_STAT);
> +		omap_writew(epnum | UDC_EP_DIR, UDC_EP_NUM);
>  		/* then 6 clocks before it'd tx */
>  	}
>  
> @@ -1993,7 +2042,7 @@ static irqreturn_t omap_udc_iso_irq(int irq, void *_dev)
>  		req = list_entry(ep->queue.next, struct omap_req, queue);
>  
>  		use_ep(ep, UDC_EP_SEL);
> -		stat = UDC_STAT_FLG_REG;
> +		stat = omap_readw(UDC_STAT_FLG);
>  
>  		/* NOTE: like the other controller drivers, this isn't
>  		 * currently reporting lost or damaged frames.
> @@ -2025,9 +2074,14 @@ static irqreturn_t omap_udc_iso_irq(int irq, void *_dev)
>  		if (!list_empty(&ep->queue))
>  			pending = 1;
>  	}
> -	if (!pending)
> -		UDC_IRQ_EN_REG &= ~UDC_SOF_IE;
> -	UDC_IRQ_SRC_REG = UDC_SOF;
> +	if (!pending) {
> +		u16 w;
> +
> +		w = omap_readw(UDC_IRQ_EN);
> +		w &= ~UDC_SOF_IE;
> +		omap_writew(w, UDC_IRQ_EN);
> +	}
> +	omap_writew(UDC_IRQ_SOF, UDC_IRQ_SRC);
>  
>  	spin_unlock_irqrestore(&udc->lock, flags);
>  	return IRQ_HANDLED;
> @@ -2076,7 +2130,7 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver)
>  		if (ep->bmAttributes == USB_ENDPOINT_XFER_ISOC)
>  			continue;
>  		use_ep(ep, 0);
> -		UDC_CTRL_REG = UDC_SET_HALT;
> +		omap_writew(UDC_SET_HALT, UDC_CTRL);
>  	}
>  	udc->ep0_pending = 0;
>  	udc->ep[0].irqs = 0;
> @@ -2100,7 +2154,7 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver)
>  	}
>  	DBG("bound to driver %s\n", driver->driver.name);
>  
> -	UDC_IRQ_SRC_REG = UDC_IRQ_SRC_MASK;
> +	omap_writew(UDC_IRQ_SRC_MASK, UDC_IRQ_SRC);
>  
>  	/* connect to bus through transceiver */
>  	if (udc->transceiver) {
> @@ -2197,7 +2251,7 @@ static void proc_ep_show(struct seq_file *s, struct omap_ep *ep)
>  	else
>  		buf[0] = 0;
>  
> -	stat_flg = UDC_STAT_FLG_REG;
> +	stat_flg = omap_readw(UDC_STAT_FLG);
>  	seq_printf(s,
>  		"\n%s %s%s%sirqs %ld stat %04x " EIGHTBITS FOURBITS "%s\n",
>  		ep->name, buf,
> @@ -2258,12 +2312,12 @@ static int proc_otg_show(struct seq_file *s)
>  	u32		trans;
>  	char		*ctrl_name;
>  
> -	tmp = OTG_REV_REG;
> +	tmp = omap_readw(OTG_REV);
>  	if (cpu_is_omap24xx()) {
>  		/*
>  		 * REVISIT: Not clear how this works on OMAP2.  trans
>  		 * is ANDed to produce bits 7 and 8, which might make
> -		 * sense for USB_TRANSCEIVER_CTRL_REG on OMAP1,
> +		 * sense for USB_TRANSCEIVER_CTRL on OMAP1,
>  		 * but with CONTROL_DEVCONF, these bits have something to
>  		 * do with the frame adjustment counter and McBSP2.
>  		 */
> @@ -2271,11 +2325,11 @@ static int proc_otg_show(struct seq_file *s)
>  		trans = omap_ctrl_readb(OMAP2_CONTROL_DEVCONF0);
>  	} else {
>  		ctrl_name = "tranceiver_ctrl";
> -		trans = USB_TRANSCEIVER_CTRL_REG;
> +		trans = omap_readw(USB_TRANSCEIVER_CTRL);
>  	}
>  	seq_printf(s, "\nOTG rev %d.%d, %s %05x\n",
>  		tmp >> 4, tmp & 0xf, ctrl_name, trans);
> -	tmp = OTG_SYSCON_1_REG;
> +	tmp = omap_readw(OTG_SYSCON_1);
>  	seq_printf(s, "otg_syscon1 %08x usb2 %s, usb1 %s, usb0 %s,"
>  			FOURBITS "\n", tmp,
>  		trx_mode(USB2_TRX_MODE(tmp), trans & CONF_USB2_UNI_R),
> @@ -2287,7 +2341,7 @@ static int proc_otg_show(struct seq_file *s)
>  		(tmp & HST_IDLE_EN) ? " !host" : "",
>  		(tmp & DEV_IDLE_EN) ? " !dev" : "",
>  		(tmp & OTG_RESET_DONE) ? " reset_done" : " reset_active");
> -	tmp = OTG_SYSCON_2_REG;
> +	tmp = omap_readl(OTG_SYSCON_2);
>  	seq_printf(s, "otg_syscon2 %08x%s" EIGHTBITS
>  			" b_ase_brst=%d hmc=%d\n", tmp,
>  		(tmp & OTG_EN) ? " otg_en" : "",
> @@ -2302,7 +2356,7 @@ static int proc_otg_show(struct seq_file *s)
>  		(tmp & HMC_TLLATTACH) ? " tllattach" : "",
>  		B_ASE_BRST(tmp),
>  		OTG_HMC(tmp));
> -	tmp = OTG_CTRL_REG;
> +	tmp = omap_readl(OTG_CTRL);
>  	seq_printf(s, "otg_ctrl    %06x" EIGHTBITS EIGHTBITS "%s\n", tmp,
>  		(tmp & OTG_ASESSVLD) ? " asess" : "",
>  		(tmp & OTG_BSESSEND) ? " bsess_end" : "",
> @@ -2322,13 +2376,13 @@ static int proc_otg_show(struct seq_file *s)
>  		(tmp & OTG_PU_VBUS) ? " pu_vb" : "",
>  		(tmp & OTG_PU_ID) ? " pu_id" : ""
>  		);
> -	tmp = OTG_IRQ_EN_REG;
> +	tmp = omap_readw(OTG_IRQ_EN);
>  	seq_printf(s, "otg_irq_en  %04x" "\n", tmp);
> -	tmp = OTG_IRQ_SRC_REG;
> +	tmp = omap_readw(OTG_IRQ_SRC);
>  	seq_printf(s, "otg_irq_src %04x" "\n", tmp);
> -	tmp = OTG_OUTCTRL_REG;
> +	tmp = omap_readw(OTG_OUTCTRL);
>  	seq_printf(s, "otg_outctrl %04x" "\n", tmp);
> -	tmp = OTG_TEST_REG;
> +	tmp = omap_readw(OTG_TEST);
>  	seq_printf(s, "otg_test    %04x" "\n", tmp);
>  	return 0;
>  }
> @@ -2349,7 +2403,7 @@ static int proc_udc_show(struct seq_file *s, void *_)
>  		driver_desc,
>  		use_dma ?  " (dma)" : "");
>  
> -	tmp = UDC_REV_REG & 0xff;
> +	tmp = omap_readw(UDC_REV) & 0xff;
>  	seq_printf(s,
>  		"UDC rev %d.%d, fifo mode %d, gadget %s\n"
>  		"hmc %d, transceiver %s\n",
> @@ -2363,16 +2417,16 @@ static int proc_udc_show(struct seq_file *s, void *_)
>  				? "external" : "(none)"));
>  	if (cpu_class_is_omap1()) {
>  		seq_printf(s, "ULPD control %04x req %04x status %04x\n",
> -			__REG16(ULPD_CLOCK_CTRL),
> -			__REG16(ULPD_SOFT_REQ),
> -			__REG16(ULPD_STATUS_REQ));
> +			omap_readw(ULPD_CLOCK_CTRL),
> +			omap_readw(ULPD_SOFT_REQ),
> +			omap_readw(ULPD_STATUS_REQ));
>  	}
>  
>  	/* OTG controller registers */
>  	if (!cpu_is_omap15xx())
>  		proc_otg_show(s);
>  
> -	tmp = UDC_SYSCON1_REG;
> +	tmp = omap_readw(UDC_SYSCON1);
>  	seq_printf(s, "\nsyscon1     %04x" EIGHTBITS "\n", tmp,
>  		(tmp & UDC_CFG_LOCK) ? " cfg_lock" : "",
>  		(tmp & UDC_DATA_ENDIAN) ? " data_endian" : "",
> @@ -2391,7 +2445,7 @@ static int proc_udc_show(struct seq_file *s, void *_)
>  		return 0;
>  	}
>  
> -	tmp = UDC_DEVSTAT_REG;
> +	tmp = omap_readw(UDC_DEVSTAT);
>  	seq_printf(s, "devstat     %04x" EIGHTBITS "%s%s\n", tmp,
>  		(tmp & UDC_B_HNP_ENABLE) ? " b_hnp" : "",
>  		(tmp & UDC_A_HNP_SUPPORT) ? " a_hnp" : "",
> @@ -2403,20 +2457,20 @@ static int proc_udc_show(struct seq_file *s, void *_)
>  		(tmp & UDC_ADD) ? " ADD" : "",
>  		(tmp & UDC_DEF) ? " DEF" : "",
>  		(tmp & UDC_ATT) ? " ATT" : "");
> -	seq_printf(s, "sof         %04x\n", UDC_SOF_REG);
> -	tmp = UDC_IRQ_EN_REG;
> +	seq_printf(s, "sof         %04x\n", omap_readw(UDC_SOF));
> +	tmp = omap_readw(UDC_IRQ_EN);
>  	seq_printf(s, "irq_en      %04x" FOURBITS "%s\n", tmp,
>  		(tmp & UDC_SOF_IE) ? " sof" : "",
>  		(tmp & UDC_EPN_RX_IE) ? " epn_rx" : "",
>  		(tmp & UDC_EPN_TX_IE) ? " epn_tx" : "",
>  		(tmp & UDC_DS_CHG_IE) ? " ds_chg" : "",
>  		(tmp & UDC_EP0_IE) ? " ep0" : "");
> -	tmp = UDC_IRQ_SRC_REG;
> +	tmp = omap_readw(UDC_IRQ_SRC);
>  	seq_printf(s, "irq_src     %04x" EIGHTBITS "%s%s\n", tmp,
>  		(tmp & UDC_TXN_DONE) ? " txn_done" : "",
>  		(tmp & UDC_RXN_CNT) ? " rxn_cnt" : "",
>  		(tmp & UDC_RXN_EOT) ? " rxn_eot" : "",
> -		(tmp & UDC_SOF) ? " sof" : "",
> +		(tmp & UDC_IRQ_SOF) ? " sof" : "",
>  		(tmp & UDC_EPN_RX) ? " epn_rx" : "",
>  		(tmp & UDC_EPN_TX) ? " epn_tx" : "",
>  		(tmp & UDC_DS_CHG) ? " ds_chg" : "",
> @@ -2426,7 +2480,7 @@ static int proc_udc_show(struct seq_file *s, void *_)
>  	if (use_dma) {
>  		unsigned i;
>  
> -		tmp = UDC_DMA_IRQ_EN_REG;
> +		tmp = omap_readw(UDC_DMA_IRQ_EN);
>  		seq_printf(s, "dma_irq_en  %04x%s" EIGHTBITS "\n", tmp,
>  			(tmp & UDC_TX_DONE_IE(3)) ? " tx2_done" : "",
>  			(tmp & UDC_RX_CNT_IE(3)) ? " rx2_cnt" : "",
> @@ -2440,29 +2494,29 @@ static int proc_udc_show(struct seq_file *s, void *_)
>  			(tmp & UDC_RX_CNT_IE(1)) ? " rx0_cnt" : "",
>  			(tmp & UDC_RX_EOT_IE(1)) ? " rx0_eot" : "");
>  
> -		tmp = UDC_RXDMA_CFG_REG;
> +		tmp = omap_readw(UDC_RXDMA_CFG);
>  		seq_printf(s, "rxdma_cfg   %04x\n", tmp);
>  		if (tmp) {
>  			for (i = 0; i < 3; i++) {
>  				if ((tmp & (0x0f << (i * 4))) == 0)
>  					continue;
>  				seq_printf(s, "rxdma[%d]    %04x\n", i,
> -						UDC_RXDMA_REG(i + 1));
> +						omap_readw(UDC_RXDMA(i + 1)));
>  			}
>  		}
> -		tmp = UDC_TXDMA_CFG_REG;
> +		tmp = omap_readw(UDC_TXDMA_CFG);
>  		seq_printf(s, "txdma_cfg   %04x\n", tmp);
>  		if (tmp) {
>  			for (i = 0; i < 3; i++) {
>  				if (!(tmp & (0x0f << (i * 4))))
>  					continue;
>  				seq_printf(s, "txdma[%d]    %04x\n", i,
> -						UDC_TXDMA_REG(i + 1));
> +						omap_readw(UDC_TXDMA(i + 1)));
>  			}
>  		}
>  	}
>  
> -	tmp = UDC_DEVSTAT_REG;
> +	tmp = omap_readw(UDC_DEVSTAT);
>  	if (tmp & UDC_ATT) {
>  		proc_ep_show(s, &udc->ep[0]);
>  		if (tmp & UDC_ADD) {
> @@ -2514,7 +2568,7 @@ static inline void remove_proc_file(void) {}
>   * buffer space among the endpoints we'll be operating.
>   *
>   * NOTE: as of OMAP 1710 ES2.0, writing a new endpoint config when
> - * UDC_SYSCON_1_REG.CFG_LOCK is set can now work.  We won't use that
> + * UDC_SYSCON_1.CFG_LOCK is set can now work.  We won't use that
>   * capability yet though.
>   */
>  static unsigned __init
> @@ -2578,9 +2632,9 @@ omap_ep_setup(char *name, u8 addr, u8 type,
>  		name, addr, epn_rxtx, maxp, dbuf ? "x2" : "", buf);
>  
>  	if (addr & USB_DIR_IN)
> -		UDC_EP_TX_REG(addr & 0xf) = epn_rxtx;
> +		omap_writew(epn_rxtx, UDC_EP_TX(addr & 0xf));
>  	else
> -		UDC_EP_RX_REG(addr) = epn_rxtx;
> +		omap_writew(epn_rxtx, UDC_EP_RX(addr));
>  
>  	/* next endpoint's buffer starts after this one's */
>  	buf += maxp;
> @@ -2619,15 +2673,15 @@ omap_udc_setup(struct platform_device *odev, struct otg_transceiver *xceiv)
>  	unsigned	tmp, buf;
>  
>  	/* abolish any previous hardware state */
> -	UDC_SYSCON1_REG = 0;
> -	UDC_IRQ_EN_REG = 0;
> -	UDC_IRQ_SRC_REG = UDC_IRQ_SRC_MASK;
> -	UDC_DMA_IRQ_EN_REG = 0;
> -	UDC_RXDMA_CFG_REG = 0;
> -	UDC_TXDMA_CFG_REG = 0;
> +	omap_writew(0, UDC_SYSCON1);
> +	omap_writew(0, UDC_IRQ_EN);
> +	omap_writew(UDC_IRQ_SRC_MASK, UDC_IRQ_SRC);
> +	omap_writew(0, UDC_DMA_IRQ_EN);
> +	omap_writew(0, UDC_RXDMA_CFG);
> +	omap_writew(0, UDC_TXDMA_CFG);
>  
>  	/* UDC_PULLUP_EN gates the chip clock */
> -	// OTG_SYSCON_1_REG |= DEV_IDLE_EN;
> +	// OTG_SYSCON_1 |= DEV_IDLE_EN;
>  
>  	udc = kzalloc(sizeof(*udc), GFP_KERNEL);
>  	if (!udc)
> @@ -2658,8 +2712,8 @@ omap_udc_setup(struct platform_device *odev, struct otg_transceiver *xceiv)
>  
>  	/* initially disable all non-ep0 endpoints */
>  	for (tmp = 1; tmp < 15; tmp++) {
> -		UDC_EP_RX_REG(tmp) = 0;
> -		UDC_EP_TX_REG(tmp) = 0;
> +		omap_writew(0, UDC_EP_RX(tmp));
> +		omap_writew(0, UDC_EP_TX(tmp));
>  	}
>  
>  #define OMAP_BULK_EP(name,addr) \
> @@ -2744,7 +2798,7 @@ omap_udc_setup(struct platform_device *odev, struct otg_transceiver *xceiv)
>  		ERR("unsupported fifo_mode #%d\n", fifo_mode);
>  		return -ENODEV;
>  	}
> -	UDC_SYSCON1_REG = UDC_CFG_LOCK|UDC_SELF_PWR;
> +	omap_writew(UDC_CFG_LOCK|UDC_SELF_PWR, UDC_SYSCON1);
>  	INFO("fifo mode %d, %d bytes not used\n", fifo_mode, 2048 - buf);
>  	return 0;
>  }
> @@ -2788,7 +2842,7 @@ static int __init omap_udc_probe(struct platform_device *pdev)
>  	}
>  
>  	INFO("OMAP UDC rev %d.%d%s\n",
> -		UDC_REV_REG >> 4, UDC_REV_REG & 0xf,
> +		omap_readw(UDC_REV) >> 4, omap_readw(UDC_REV) & 0xf,
>  		config->otg ? ", Mini-AB" : "");
>  
>  	/* use the mode given to us by board init code */
> @@ -2803,12 +2857,13 @@ static int __init omap_udc_probe(struct platform_device *pdev)
>  			 * know when to turn PULLUP_EN on/off; and that
>  			 * means we always "need" the 48MHz clock.
>  			 */
> -			u32 tmp = FUNC_MUX_CTRL_0_REG;
> +			u32 tmp = omap_readl(FUNC_MUX_CTRL_0);
>  
> -			FUNC_MUX_CTRL_0_REG &= ~VBUS_CTRL_1510;
> +			tmp &= ~VBUS_CTRL_1510;
> +			omap_writel(tmp, FUNC_MUX_CTRL_0);
>  			tmp |= VBUS_MODE_1510;
>  			tmp &= ~VBUS_CTRL_1510;
> -			FUNC_MUX_CTRL_0_REG = tmp;
> +			omap_writel(tmp, FUNC_MUX_CTRL_0);
>  		}
>  	} else {
>  		/* The transceiver may package some GPIO logic or handle
> @@ -2888,7 +2943,7 @@ known:
>  #endif
>  
>  	/* starting with omap1710 es2.0, clear toggle is a separate bit */
> -	if (UDC_REV_REG >= 0x61)
> +	if (omap_readw(UDC_REV) >= 0x61)
>  		udc->clr_halt = UDC_RESET_EP | UDC_CLRDATA_TOGGLE;
>  	else
>  		udc->clr_halt = UDC_RESET_EP;
> @@ -2986,7 +3041,7 @@ static int __exit omap_udc_remove(struct platform_device *pdev)
>  		put_device(udc->transceiver->dev);
>  		udc->transceiver = NULL;
>  	}
> -	UDC_SYSCON1_REG = 0;
> +	omap_writew(0, UDC_SYSCON1);
>  
>  	remove_proc_file();
>  
> @@ -3017,7 +3072,7 @@ static int __exit omap_udc_remove(struct platform_device *pdev)
>   *
>   * REVISIT we should probably reject suspend requests when there's a host
>   * session active, rather than disconnecting, at least on boards that can
> - * report VBUS irqs (UDC_DEVSTAT_REG.UDC_ATT).  And in any case, we need to
> + * report VBUS irqs (UDC_DEVSTAT.UDC_ATT).  And in any case, we need to
>   * make host resumes and VBUS detection trigger OMAP wakeup events; that
>   * may involve talking to an external transceiver (e.g. isp1301).
>   */
> @@ -3026,7 +3081,7 @@ static int omap_udc_suspend(struct platform_device *dev, pm_message_t message)
>  {
>  	u32	devstat;
>  
> -	devstat = UDC_DEVSTAT_REG;
> +	devstat = omap_readw(UDC_DEVSTAT);
>  
>  	/* we're requesting 48 MHz clock if the pullup is enabled
>  	 * (== we're attached to the host) and we're not suspended,
> diff --git a/drivers/usb/gadget/omap_udc.h b/drivers/usb/gadget/omap_udc.h
> index c6b9cbc..67993d9 100644
> --- a/drivers/usb/gadget/omap_udc.h
> +++ b/drivers/usb/gadget/omap_udc.h
> @@ -8,23 +8,22 @@
>  /*
>   * USB device/endpoint management registers
>   */
> -#define UDC_REG(offset)              __REG16(UDC_BASE + (offset))
>  
> -#define	UDC_REV_REG			UDC_REG(0x0)	/* Revision */
> -#define	UDC_EP_NUM_REG			UDC_REG(0x4)	/* Which endpoint */
> +#define	UDC_REV				(UDC_BASE + 0x0)	/* Revision */
> +#define	UDC_EP_NUM			(UDC_BASE + 0x4)	/* Which endpoint */
>  #	define	UDC_SETUP_SEL		(1 << 6)
>  #	define	UDC_EP_SEL		(1 << 5)
>  #	define	UDC_EP_DIR		(1 << 4)
>  	/* low 4 bits for endpoint number */
> -#define	UDC_DATA_REG			UDC_REG(0x08)	/* Endpoint FIFO */
> -#define	UDC_CTRL_REG			UDC_REG(0x0C)	/* Endpoint control */
> +#define	UDC_DATA			(UDC_BASE + 0x08)	/* Endpoint FIFO */
> +#define	UDC_CTRL			(UDC_BASE + 0x0C)	/* Endpoint control */
>  #	define	UDC_CLR_HALT		(1 << 7)
>  #	define	UDC_SET_HALT		(1 << 6)
>  #	define	UDC_CLRDATA_TOGGLE	(1 << 3)
>  #	define	UDC_SET_FIFO_EN		(1 << 2)
>  #	define	UDC_CLR_EP		(1 << 1)
>  #	define	UDC_RESET_EP		(1 << 0)
> -#define	UDC_STAT_FLG_REG		UDC_REG(0x10)	/* Endpoint status */
> +#define	UDC_STAT_FLG			(UDC_BASE + 0x10)	/* Endpoint status */
>  #	define	UDC_NO_RXPACKET		(1 << 15)
>  #	define	UDC_MISS_IN		(1 << 14)
>  #	define	UDC_DATA_FLUSH		(1 << 13)
> @@ -38,8 +37,8 @@
>  #	define	UDC_FIFO_EN		(1 << 2)
>  #	define	UDC_NON_ISO_FIFO_EMPTY	(1 << 1)
>  #	define	UDC_NON_ISO_FIFO_FULL	(1 << 0)
> -#define	UDC_RXFSTAT_REG			UDC_REG(0x14)	/* OUT bytecount */
> -#define	UDC_SYSCON1_REG			UDC_REG(0x18)	/* System config 1 */
> +#define	UDC_RXFSTAT			(UDC_BASE + 0x14)	/* OUT bytecount */
> +#define	UDC_SYSCON1			(UDC_BASE + 0x18)	/* System config 1 */
>  #	define	UDC_CFG_LOCK		(1 << 8)
>  #	define	UDC_DATA_ENDIAN		(1 << 7)
>  #	define	UDC_DMA_ENDIAN		(1 << 6)
> @@ -48,12 +47,12 @@
>  #	define	UDC_SELF_PWR		(1 << 2)
>  #	define	UDC_SOFF_DIS		(1 << 1)
>  #	define	UDC_PULLUP_EN		(1 << 0)
> -#define	UDC_SYSCON2_REG			UDC_REG(0x1C)	/* System config 2 */
> +#define	UDC_SYSCON2			(UDC_BASE + 0x1C)	/* System config 2 */
>  #	define	UDC_RMT_WKP		(1 << 6)
>  #	define	UDC_STALL_CMD		(1 << 5)
>  #	define	UDC_DEV_CFG		(1 << 3)
>  #	define	UDC_CLR_CFG		(1 << 2)
> -#define	UDC_DEVSTAT_REG			UDC_REG(0x20)	/* Device status */
> +#define	UDC_DEVSTAT			(UDC_BASE + 0x20)	/* Device status */
>  #	define	UDC_B_HNP_ENABLE	(1 << 9)
>  #	define	UDC_A_HNP_SUPPORT	(1 << 8)
>  #	define	UDC_A_ALT_HNP_SUPPORT	(1 << 7)
> @@ -64,26 +63,26 @@
>  #	define	UDC_ADD			(1 << 2)
>  #	define	UDC_DEF			(1 << 1)
>  #	define	UDC_ATT			(1 << 0)
> -#define	UDC_SOF_REG			UDC_REG(0x24)	/* Start of frame */
> +#define	UDC_SOF				(UDC_BASE + 0x24)	/* Start of frame */
>  #	define	UDC_FT_LOCK		(1 << 12)
>  #	define	UDC_TS_OK		(1 << 11)
>  #	define	UDC_TS			0x03ff
> -#define	UDC_IRQ_EN_REG			UDC_REG(0x28)	/* Interrupt enable */
> +#define	UDC_IRQ_EN			(UDC_BASE + 0x28)	/* Interrupt enable */
>  #	define	UDC_SOF_IE		(1 << 7)
>  #	define	UDC_EPN_RX_IE		(1 << 5)
>  #	define	UDC_EPN_TX_IE		(1 << 4)
>  #	define	UDC_DS_CHG_IE		(1 << 3)
>  #	define	UDC_EP0_IE		(1 << 0)
> -#define	UDC_DMA_IRQ_EN_REG		UDC_REG(0x2C)	/* DMA irq enable */
> +#define	UDC_DMA_IRQ_EN			(UDC_BASE + 0x2C)	/* DMA irq enable */
>  	/* rx/tx dma channels numbered 1-3 not 0-2 */
>  #	define	UDC_TX_DONE_IE(n)	(1 << (4 * (n) - 2))
>  #	define	UDC_RX_CNT_IE(n)	(1 << (4 * (n) - 3))
>  #	define	UDC_RX_EOT_IE(n)	(1 << (4 * (n) - 4))
> -#define	UDC_IRQ_SRC_REG			UDC_REG(0x30)	/* Interrupt source */
> +#define	UDC_IRQ_SRC			(UDC_BASE + 0x30)	/* Interrupt source */
>  #	define	UDC_TXN_DONE		(1 << 10)
>  #	define	UDC_RXN_CNT		(1 << 9)
>  #	define	UDC_RXN_EOT		(1 << 8)
> -#	define	UDC_SOF			(1 << 7)
> +#	define	UDC_IRQ_SOF		(1 << 7)
>  #	define	UDC_EPN_RX		(1 << 5)
>  #	define	UDC_EPN_TX		(1 << 4)
>  #	define	UDC_DS_CHG		(1 << 3)
> @@ -91,41 +90,41 @@
>  #	define	UDC_EP0_RX		(1 << 1)
>  #	define	UDC_EP0_TX		(1 << 0)
>  #	define	UDC_IRQ_SRC_MASK	0x7bf
> -#define	UDC_EPN_STAT_REG		UDC_REG(0x34)	/* EP irq status */
> -#define	UDC_DMAN_STAT_REG		UDC_REG(0x38)	/* DMA irq status */
> +#define	UDC_EPN_STAT			(UDC_BASE + 0x34)	/* EP irq status */
> +#define	UDC_DMAN_STAT			(UDC_BASE + 0x38)	/* DMA irq status */
>  #	define	UDC_DMA_RX_SB		(1 << 12)
>  #	define	UDC_DMA_RX_SRC(x)	(((x)>>8) & 0xf)
>  #	define	UDC_DMA_TX_SRC(x)	(((x)>>0) & 0xf)
>  
>  
>  /* DMA configuration registers:  up to three channels in each direction.  */
> -#define	UDC_RXDMA_CFG_REG		UDC_REG(0x40)	/* 3 eps for RX DMA */
> +#define	UDC_RXDMA_CFG			(UDC_BASE + 0x40)	/* 3 eps for RX DMA */
>  #	define	UDC_DMA_REQ		(1 << 12)
> -#define	UDC_TXDMA_CFG_REG		UDC_REG(0x44)	/* 3 eps for TX DMA */
> -#define	UDC_DATA_DMA_REG		UDC_REG(0x48)	/* rx/tx fifo addr */
> +#define	UDC_TXDMA_CFG			(UDC_BASE + 0x44)	/* 3 eps for TX DMA */
> +#define	UDC_DATA_DMA			(UDC_BASE + 0x48)	/* rx/tx fifo addr */
>  
>  /* rx/tx dma control, numbering channels 1-3 not 0-2 */
> -#define	UDC_TXDMA_REG(chan)		UDC_REG(0x50 - 4 + 4 * (chan))
> +#define	UDC_TXDMA(chan)			(UDC_BASE + 0x50 - 4 + 4 * (chan))
>  #	define UDC_TXN_EOT		(1 << 15)	/* bytes vs packets */
>  #	define UDC_TXN_START		(1 << 14)	/* start transfer */
>  #	define UDC_TXN_TSC		0x03ff		/* units in xfer */
> -#define	UDC_RXDMA_REG(chan)		UDC_REG(0x60 - 4 + 4 * (chan))
> +#define	UDC_RXDMA(chan)			(UDC_BASE + 0x60 - 4 + 4 * (chan))
>  #	define UDC_RXN_STOP		(1 << 15)	/* enable EOT irq */
>  #	define UDC_RXN_TC		0x00ff		/* packets in xfer */
>  
>  
>  /*
>   * Endpoint configuration registers (used before CFG_LOCK is set)
> - * UDC_EP_TX_REG(0) is unused
> + * UDC_EP_TX(0) is unused
>   */
> -#define	UDC_EP_RX_REG(endpoint)		UDC_REG(0x80 + (endpoint)*4)
> +#define	UDC_EP_RX(endpoint)		(UDC_BASE + 0x80 + (endpoint)*4)
>  #	define	UDC_EPN_RX_VALID	(1 << 15)
>  #	define	UDC_EPN_RX_DB		(1 << 14)
>  	/* buffer size in bits 13, 12 */
>  #	define	UDC_EPN_RX_ISO		(1 << 11)
>  	/* buffer pointer in low 11 bits */
> -#define	UDC_EP_TX_REG(endpoint)		UDC_REG(0xc0 + (endpoint)*4)
> -	/* same bitfields as in RX_REG */
> +#define	UDC_EP_TX(endpoint)		(UDC_BASE + 0xc0 + (endpoint)*4)
> +	/* same bitfields as in RX */
>  
>  /*-------------------------------------------------------------------------*/
>  
> @@ -195,14 +194,14 @@ struct omap_udc {
>  
>  /*-------------------------------------------------------------------------*/
>  
> -#define	MOD_CONF_CTRL_0_REG	__REG32(MOD_CONF_CTRL_0)
> -#define	VBUS_W2FC_1510		(1 << 17)	/* 0 gpio0, 1 dvdd2 pin */
> +/* MOD_CONF_CTRL_0 */
> +#define VBUS_W2FC_1510		(1 << 17)	/* 0 gpio0, 1 dvdd2 pin */
>  
> -#define	FUNC_MUX_CTRL_0_REG	__REG32(FUNC_MUX_CTRL_0)
> +/* FUNC_MUX_CTRL_0 */
>  #define	VBUS_CTRL_1510		(1 << 19)	/* 1 connected (software) */
>  #define	VBUS_MODE_1510		(1 << 18)	/* 0 hardware, 1 software */
>  
> -#define	HMC_1510	((MOD_CONF_CTRL_0_REG >> 1) & 0x3f)
> -#define	HMC_1610	(OTG_SYSCON_2_REG & 0x3f)
> +#define	HMC_1510	((omap_readl(MOD_CONF_CTRL_0) >> 1) & 0x3f)
> +#define	HMC_1610	omap_readl(OTG_SYSCON_2 & 0x3f)
>  #define	HMC		(cpu_is_omap15xx() ? HMC_1510 : HMC_1610)
>  
> diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
> index f14be49..c23caf6 100644
> --- a/drivers/usb/host/ohci-omap.c
> +++ b/drivers/usb/host/ohci-omap.c
> @@ -169,13 +169,16 @@ static void start_hnp(struct ohci_hcd *ohci)
>  {
>  	const unsigned	port = ohci_to_hcd(ohci)->self.otg_port - 1;
>  	unsigned long	flags;
> +	u32 l;
>  
>  	otg_start_hnp(ohci->transceiver);
>  
>  	local_irq_save(flags);
>  	ohci->transceiver->state = OTG_STATE_A_SUSPEND;
>  	writel (RH_PS_PSS, &ohci->regs->roothub.portstatus [port]);
> -	OTG_CTRL_REG &= ~OTG_A_BUSREQ;
> +	l = omap_readl(OTG_CTRL);
> +	l &= ~OTG_A_BUSREQ;
> +	omap_writel(l, OTG_CTRL);
>  	local_irq_restore(flags);
>  }
>  
> diff --git a/include/asm-arm/arch-omap/usb.h b/include/asm-arm/arch-omap/usb.h
> index 580a718..7a0967b 100644
> --- a/include/asm-arm/arch-omap/usb.h
> +++ b/include/asm-arm/arch-omap/usb.h
> @@ -37,11 +37,8 @@ void __init usb_ehci_init(void);
>  /*
>   * OTG and transceiver registers, for OMAPs starting with ARM926
>   */
> -#define OTG_REG32(offset)		__REG32(OTG_BASE + (offset))
> -#define OTG_REG16(offset)		__REG16(OTG_BASE + (offset))
> -
> -#define OTG_REV_REG			OTG_REG32(0x00)
> -#define OTG_SYSCON_1_REG		OTG_REG32(0x04)
> +#define OTG_REV				(OTG_BASE + 0x00)
> +#define OTG_SYSCON_1			(OTG_BASE + 0x04)
>  #	define	 USB2_TRX_MODE(w)	(((w)>>24)&0x07)
>  #	define	 USB1_TRX_MODE(w)	(((w)>>20)&0x07)
>  #	define	 USB0_TRX_MODE(w)	(((w)>>16)&0x07)
> @@ -50,7 +47,7 @@ void __init usb_ehci_init(void);
>  #	define	 DEV_IDLE_EN		(1 << 13)
>  #	define	 OTG_RESET_DONE		(1 << 2)
>  #	define	 OTG_SOFT_RESET		(1 << 1)
> -#define OTG_SYSCON_2_REG		OTG_REG32(0x08)
> +#define OTG_SYSCON_2			(OTG_BASE + 0x08)
>  #	define	 OTG_EN			(1 << 31)
>  #	define	 USBX_SYNCHRO		(1 << 30)
>  #	define	 OTG_MST16		(1 << 29)
> @@ -68,7 +65,7 @@ void __init usb_ehci_init(void);
>  #	define	 HMC_TLLSPEED		(1 << 7)
>  #	define	 HMC_TLLATTACH		(1 << 6)
>  #	define	 OTG_HMC(w)		(((w)>>0)&0x3f)
> -#define OTG_CTRL_REG			OTG_REG32(0x0c)
> +#define OTG_CTRL			(OTG_BASE + 0x0c)
>  #	define	 OTG_USB2_EN		(1 << 29)
>  #	define	 OTG_USB2_DP		(1 << 28)
>  #	define	 OTG_USB2_DM		(1 << 27)
> @@ -95,7 +92,7 @@ void __init usb_ehci_init(void);
>  #	define	 OTG_PD_VBUS		(1 << 2)
>  #	define	 OTG_PU_VBUS		(1 << 1)
>  #	define	 OTG_PU_ID		(1 << 0)
> -#define OTG_IRQ_EN_REG			OTG_REG16(0x10)
> +#define OTG_IRQ_EN			(OTG_BASE + 0x10)	/* 16-bit */
>  #	define	 DRIVER_SWITCH		(1 << 15)
>  #	define	 A_VBUS_ERR		(1 << 13)
>  #	define	 A_REQ_TMROUT		(1 << 12)
> @@ -105,9 +102,9 @@ void __init usb_ehci_init(void);
>  #	define	 B_SRP_DONE		(1 << 8)
>  #	define	 B_SRP_STARTED		(1 << 7)
>  #	define	 OPRT_CHG		(1 << 0)
> -#define OTG_IRQ_SRC_REG			OTG_REG16(0x14)
> +#define OTG_IRQ_SRC			(OTG_BASE + 0x14)	/* 16-bit */
>  	// same bits as in IRQ_EN
> -#define OTG_OUTCTRL_REG			OTG_REG16(0x18)
> +#define OTG_OUTCTRL			(OTG_BASE + 0x18)	/* 16-bit */
>  #	define	 OTGVPD			(1 << 14)
>  #	define	 OTGVPU			(1 << 13)
>  #	define	 OTGPUID		(1 << 12)
> @@ -120,13 +117,13 @@ void __init usb_ehci_init(void);
>  #	define	 USB0VDR		(1 << 2)
>  #	define	 USB0PDEN		(1 << 1)
>  #	define	 USB0PUEN		(1 << 0)
> -#define OTG_TEST_REG			OTG_REG16(0x20)
> -#define OTG_VENDOR_CODE_REG		OTG_REG32(0xfc)
> +#define OTG_TEST			(OTG_BASE + 0x20)	/* 16-bit */
> +#define OTG_VENDOR_CODE			(OTG_BASE + 0xfc)	/* 16-bit */
>  
>  /*-------------------------------------------------------------------------*/
>  
>  /* OMAP1 */
> -#define	USB_TRANSCEIVER_CTRL_REG	__REG32(0xfffe1000 + 0x0064)
> +#define	USB_TRANSCEIVER_CTRL		(0xfffe1000 + 0x0064)
>  #	define	CONF_USB2_UNI_R		(1 << 8)
>  #	define	CONF_USB1_UNI_R		(1 << 7)
>  #	define	CONF_USB_PORT0_R(x)	(((x)>>4)&0x7)
> -- 
> 1.5.3.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Best Regards,

Felipe Balbi
me@xxxxxxxxxxxxxxx
http://blog.felipebalbi.com
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux