Skip to content

Commit a3dd3be

Browse files
bjdooks-ctFelipe Balbi
authored andcommitted
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 <[email protected]> -- CC: Nicolas Ferre <[email protected]> CC: Felipe Balbi <[email protected]> CC: Greg Kroah-Hartman <[email protected]> CC: [email protected] Signed-off-by: Felipe Balbi <[email protected]>
1 parent b48cb02 commit a3dd3be

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

drivers/usb/gadget/udc/atmel_usba_udc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ static int regs_dbg_open(struct inode *inode, struct file *file)
152152

153153
spin_lock_irq(&udc->lock);
154154
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);
156156
spin_unlock_irq(&udc->lock);
157157

158158
file->private_data = data;
@@ -1249,7 +1249,7 @@ static int handle_ep0_setup(struct usba_udc *udc, struct usba_ep *ep,
12491249
if (crq->wLength != cpu_to_le16(sizeof(status)))
12501250
goto stall;
12511251
ep->state = DATA_STAGE_IN;
1252-
__raw_writew(status, ep->fifo);
1252+
usba_io_writew(status, ep->fifo);
12531253
usba_ep_writel(ep, SET_STA, USBA_TX_PK_RDY);
12541254
break;
12551255
}

drivers/usb/gadget/udc/atmel_usba_udc.h

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -191,18 +191,28 @@
191191
| USBA_BF(name, value))
192192

193193
/* 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+
194204
#define usba_readl(udc, reg) \
195-
__raw_readl((udc)->regs + USBA_##reg)
205+
usba_io_readl((udc)->regs + USBA_##reg)
196206
#define usba_writel(udc, reg, value) \
197-
__raw_writel((value), (udc)->regs + USBA_##reg)
207+
usba_io_writel((value), (udc)->regs + USBA_##reg)
198208
#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)
200210
#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)
202212
#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)
204214
#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)
206216

207217
/* Calculate base address for a given endpoint or DMA controller */
208218
#define USBA_EPT_BASE(x) (0x100 + (x) * 0x20)

0 commit comments

Comments
 (0)