diff options
author | Ben Dooks <ben.dooks@codethink.co.uk> | 2015-03-18 11:53:09 -0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2015-03-19 12:28:16 -0400 |
commit | a3dd3befd7cb7d445fcb7c51cd922bf89afe0762 (patch) | |
tree | a8b9bb36f55d07c9451e69891762f7a23b2a6fec /drivers/usb/gadget | |
parent | b48cb02de37976ad2ebef201ad40aa40156f6daa (diff) |
usb: gadget: atmel_usba: use endian agnostic IO on ARM
Change from using the __raw IO accesors to the endian agnostic versions
of readl/writel_relaxed when not on AVR32. This fixes issues with running
big endian on ARMv7.
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
--
CC: Nicolas Ferre <nicolas.ferre@atmel.com>
CC: Felipe Balbi <balbi@ti.com>
CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
CC: linux-usb@vger.kernel.org
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r-- | drivers/usb/gadget/udc/atmel_usba_udc.c | 4 | ||||
-rw-r--r-- | drivers/usb/gadget/udc/atmel_usba_udc.h | 22 |
2 files changed, 18 insertions, 8 deletions
diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c index d019b6c9d74d..4c01953a0869 100644 --- a/drivers/usb/gadget/udc/atmel_usba_udc.c +++ b/drivers/usb/gadget/udc/atmel_usba_udc.c | |||
@@ -152,7 +152,7 @@ static int regs_dbg_open(struct inode *inode, struct file *file) | |||
152 | 152 | ||
153 | spin_lock_irq(&udc->lock); | 153 | spin_lock_irq(&udc->lock); |
154 | for (i = 0; i < inode->i_size / 4; i++) | 154 | for (i = 0; i < inode->i_size / 4; i++) |
155 | data[i] = __raw_readl(udc->regs + i * 4); | 155 | data[i] = usba_io_readl(udc->regs + i * 4); |
156 | spin_unlock_irq(&udc->lock); | 156 | spin_unlock_irq(&udc->lock); |
157 | 157 | ||
158 | file->private_data = data; | 158 | file->private_data = data; |
@@ -1249,7 +1249,7 @@ static int handle_ep0_setup(struct usba_udc *udc, struct usba_ep *ep, | |||
1249 | if (crq->wLength != cpu_to_le16(sizeof(status))) | 1249 | if (crq->wLength != cpu_to_le16(sizeof(status))) |
1250 | goto stall; | 1250 | goto stall; |
1251 | ep->state = DATA_STAGE_IN; | 1251 | ep->state = DATA_STAGE_IN; |
1252 | __raw_writew(status, ep->fifo); | 1252 | usba_io_writew(status, ep->fifo); |
1253 | usba_ep_writel(ep, SET_STA, USBA_TX_PK_RDY); | 1253 | usba_ep_writel(ep, SET_STA, USBA_TX_PK_RDY); |
1254 | break; | 1254 | break; |
1255 | } | 1255 | } |
diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.h b/drivers/usb/gadget/udc/atmel_usba_udc.h index 085749a649e1..ea448a344767 100644 --- a/drivers/usb/gadget/udc/atmel_usba_udc.h +++ b/drivers/usb/gadget/udc/atmel_usba_udc.h | |||
@@ -191,18 +191,28 @@ | |||
191 | | USBA_BF(name, value)) | 191 | | USBA_BF(name, value)) |
192 | 192 | ||
193 | /* Register access macros */ | 193 | /* Register access macros */ |
194 | #ifdef CONFIG_AVR32 | ||
195 | #define usba_io_readl __raw_readl | ||
196 | #define usba_io_writel __raw_writel | ||
197 | #define usba_io_writew __raw_writew | ||
198 | #else | ||
199 | #define usba_io_readl readl_relaxed | ||
200 | #define usba_io_writel writel_relaxed | ||
201 | #define usba_io_writew writew_relaxed | ||
202 | #endif | ||
203 | |||
194 | #define usba_readl(udc, reg) \ | 204 | #define usba_readl(udc, reg) \ |
195 | __raw_readl((udc)->regs + USBA_##reg) | 205 | usba_io_readl((udc)->regs + USBA_##reg) |
196 | #define usba_writel(udc, reg, value) \ | 206 | #define usba_writel(udc, reg, value) \ |
197 | __raw_writel((value), (udc)->regs + USBA_##reg) | 207 | usba_io_writel((value), (udc)->regs + USBA_##reg) |
198 | #define usba_ep_readl(ep, reg) \ | 208 | #define usba_ep_readl(ep, reg) \ |
199 | __raw_readl((ep)->ep_regs + USBA_EPT_##reg) | 209 | usba_io_readl((ep)->ep_regs + USBA_EPT_##reg) |
200 | #define usba_ep_writel(ep, reg, value) \ | 210 | #define usba_ep_writel(ep, reg, value) \ |
201 | __raw_writel((value), (ep)->ep_regs + USBA_EPT_##reg) | 211 | usba_io_writel((value), (ep)->ep_regs + USBA_EPT_##reg) |
202 | #define usba_dma_readl(ep, reg) \ | 212 | #define usba_dma_readl(ep, reg) \ |
203 | __raw_readl((ep)->dma_regs + USBA_DMA_##reg) | 213 | usba_io_readl((ep)->dma_regs + USBA_DMA_##reg) |
204 | #define usba_dma_writel(ep, reg, value) \ | 214 | #define usba_dma_writel(ep, reg, value) \ |
205 | __raw_writel((value), (ep)->dma_regs + USBA_DMA_##reg) | 215 | usba_io_writel((value), (ep)->dma_regs + USBA_DMA_##reg) |
206 | 216 | ||
207 | /* Calculate base address for a given endpoint or DMA controller */ | 217 | /* Calculate base address for a given endpoint or DMA controller */ |
208 | #define USBA_EPT_BASE(x) (0x100 + (x) * 0x20) | 218 | #define USBA_EPT_BASE(x) (0x100 + (x) * 0x20) |