All of lore.kernel.org
 help / color / mirror / Atom feed
From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 10/13] usb: gadget: atmel_usba: use endian agnostic IO on ARM
Date: Thu, 19 Mar 2015 17:46:47 +0100	[thread overview]
Message-ID: <550AFD77.1080901@atmel.com> (raw)
In-Reply-To: <1426693992-31163-11-git-send-email-ben.dooks@codethink.co.uk>

Le 18/03/2015 16:53, Ben Dooks a ?crit :
> 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>

Felipe, for the record:
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

Thanks, bye.

> CC: Felipe Balbi <balbi@ti.com>
> CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> CC: linux-usb at vger.kernel.org
> ---
>  drivers/usb/gadget/udc/atmel_usba_udc.c |  4 ++--
>  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 d79cb35..be2f503 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)
>  
>  	spin_lock_irq(&udc->lock);
>  	for (i = 0; i < inode->i_size / 4; i++)
> -		data[i] = __raw_readl(udc->regs + i * 4);
> +		data[i] = usba_io_readl(udc->regs + i * 4);
>  	spin_unlock_irq(&udc->lock);
>  
>  	file->private_data = data;
> @@ -1249,7 +1249,7 @@ static int handle_ep0_setup(struct usba_udc *udc, struct usba_ep *ep,
>  		if (crq->wLength != cpu_to_le16(sizeof(status)))
>  			goto stall;
>  		ep->state = DATA_STAGE_IN;
> -		__raw_writew(status, ep->fifo);
> +		usba_io_writew(status, ep->fifo);
>  		usba_ep_writel(ep, SET_STA, USBA_TX_PK_RDY);
>  		break;
>  	}
> diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.h b/drivers/usb/gadget/udc/atmel_usba_udc.h
> index 497cd18..92bd486 100644
> --- a/drivers/usb/gadget/udc/atmel_usba_udc.h
> +++ b/drivers/usb/gadget/udc/atmel_usba_udc.h
> @@ -191,18 +191,28 @@
>  	 | USBA_BF(name, value))
>  
>  /* Register access macros */
> +#ifdef CONFIG_AVR32
> +#define usba_io_readl	__raw_readl
> +#define usba_io_writel	__raw_writel
> +#define usba_io_writew	__raw_writew
> +#else
> +#define usba_io_readl	readl_relaxed
> +#define usba_io_writel	writel_relaxed
> +#define usba_io_writew	writew_relaxed
> +#endif
> +
>  #define usba_readl(udc, reg)					\
> -	__raw_readl((udc)->regs + USBA_##reg)
> +	usba_io_readl((udc)->regs + USBA_##reg)
>  #define usba_writel(udc, reg, value)				\
> -	__raw_writel((value), (udc)->regs + USBA_##reg)
> +	usba_io_writel((value), (udc)->regs + USBA_##reg)
>  #define usba_ep_readl(ep, reg)					\
> -	__raw_readl((ep)->ep_regs + USBA_EPT_##reg)
> +	usba_io_readl((ep)->ep_regs + USBA_EPT_##reg)
>  #define usba_ep_writel(ep, reg, value)				\
> -	__raw_writel((value), (ep)->ep_regs + USBA_EPT_##reg)
> +	usba_io_writel((value), (ep)->ep_regs + USBA_EPT_##reg)
>  #define usba_dma_readl(ep, reg)					\
> -	__raw_readl((ep)->dma_regs + USBA_DMA_##reg)
> +	usba_io_readl((ep)->dma_regs + USBA_DMA_##reg)
>  #define usba_dma_writel(ep, reg, value)				\
> -	__raw_writel((value), (ep)->dma_regs + USBA_DMA_##reg)
> +	usba_io_writel((value), (ep)->dma_regs + USBA_DMA_##reg)
>  
>  /* Calculate base address for a given endpoint or DMA controller */
>  #define USBA_EPT_BASE(x)	(0x100 + (x) * 0x20)
> 


-- 
Nicolas Ferre

  reply	other threads:[~2015-03-19 16:46 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-18 15:52 ATSAMA5D big endian work Ben Dooks
2015-03-18 15:53 ` [PATCH 01/13] ARM: at91: Add big endian configuration for ATSAMA5D devices Ben Dooks
2015-03-19  9:03   ` Jean-Christophe PLAGNIOL-VILLARD
2015-03-18 15:53 ` [PATCH 02/13] tty: serial: atmel: fix big-endian on ARMv7 devices Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-26 21:46   ` Greg Kroah-Hartman
2015-03-26 21:46     ` Greg Kroah-Hartman
2015-03-18 15:53 ` [PATCH 03/13] ARM: at91: use readl/writel relaxed instead of __raw for big endian Ben Dooks
2015-03-18 15:53 ` [PATCH 04/13] ARM: at91: setup.c: use endian agnostic IO functions Ben Dooks
2015-03-18 15:53 ` [PATCH 05/13] ARM: at91: debug: fix debug in big endian mode Ben Dooks
2015-03-18 15:53 ` [PATCH 06/13] ARM: at91: PIT: make IO endian agnostic Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-23 11:27   ` Nicolas Ferre
2015-03-23 11:27     ` Nicolas Ferre
2015-03-26  9:54     ` Daniel Lezcano
2015-03-26  9:54       ` Daniel Lezcano
2015-03-18 15:53 ` [PATCH 07/13] clocksource: tcb_clksrc: " Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-26  9:55   ` Daniel Lezcano
2015-03-26  9:55     ` Daniel Lezcano
2015-03-26 11:08     ` Nicolas Ferre
2015-03-26 11:08       ` Nicolas Ferre
2015-03-26 11:38       ` Ben Dooks
2015-03-26 11:38         ` Ben Dooks
2015-03-18 15:53 ` [PATCH 08/13] rtc: at91rm9200: " Ben Dooks
2015-03-19  9:02   ` [rtc-linux] " Jean-Christophe PLAGNIOL-VILLARD
2015-03-19  9:34     ` Ben Dooks
2015-03-19 16:13   ` Nicolas Ferre
     [not found] ` <1426693992-31163-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
2015-03-18 15:53   ` [PATCH 09/13] spi: atmel: use endian agnostic IO Ben Dooks
2015-03-18 15:53     ` Ben Dooks
     [not found]     ` <1426693992-31163-10-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
2015-03-19  0:56       ` Mark Brown
2015-03-19  0:56         ` Mark Brown
2015-03-19  8:53       ` Nicolas Ferre
2015-03-19  8:53         ` Nicolas Ferre
2015-03-22 18:01       ` Mark Brown
2015-03-22 18:01         ` Mark Brown
2015-03-18 15:53 ` [PATCH 10/13] usb: gadget: atmel_usba: use endian agnostic IO on ARM Ben Dooks
2015-03-19 16:46   ` Nicolas Ferre [this message]
2015-03-19 18:50     ` Felipe Balbi
2015-03-18 15:53 ` [PATCH 11/13] can: at91_can: use endian agnostic IO accessors Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-19 16:47   ` Nicolas Ferre
2015-03-19 16:47     ` Nicolas Ferre
2015-03-20  9:06   ` Marc Kleine-Budde
2015-03-20  9:06     ` Marc Kleine-Budde
2015-03-18 15:53 ` [PATCH 12/13] mmc: atmel-mci: use endian agnostic IO Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-19 14:22   ` [Linux-kernel] " Ben Hutchings
2015-03-19 14:22     ` Ben Hutchings
2015-03-24 12:53     ` Ben Dooks
2015-03-24 12:53       ` Ben Dooks
2015-03-25  6:14       ` Hans-Christian Egtvedt
2015-03-25  6:14         ` Hans-Christian Egtvedt
2015-03-24 14:08   ` Ludovic Desroches
2015-03-24 14:08     ` Ludovic Desroches
2015-03-25  8:52   ` Ulf Hansson
2015-03-25  8:52     ` Ulf Hansson
2015-03-18 18:30 ` ATSAMA5D big endian work Alexandre Belloni
2015-03-19  9:34   ` Ben Dooks
2015-03-19 13:30     ` Alexandre Belloni
2015-03-20 16:58       ` Ben Dooks
2015-03-20 17:19         ` Alexandre Belloni
2015-03-20 17:29           ` Ben Dooks
2015-03-23 11:31             ` Nicolas Ferre
2015-03-19  9:42 ` [Linux-kernel] " Ben Dooks

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=550AFD77.1080901@atmel.com \
    --to=nicolas.ferre@atmel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.