All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Ujfalusi <peter.ujfalusi@ti.com>
To: Taras Kondratiuk <taras.kondratiuk@linaro.org>,
	linux-omap@vger.kernel.org
Cc: alsa-devel@alsa-project.org,
	Victor Kamensky <victor.kamensky@linaro.org>,
	Takashi Iwai <tiwai@suse.de>,
	linux-kernel@vger.kernel.org, Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>,
	linaro-networking@linaro.org,
	Jarkko Nikula <jarkko.nikula@bitmer.com>
Subject: Re: [RFC 16/23] ASoC: omap: mcbsp, mcpdm, dmic: raw read and write endian fix
Date: Mon, 18 Nov 2013 12:30:42 +0200	[thread overview]
Message-ID: <5289EC52.2060803@ti.com> (raw)
In-Reply-To: <1384560086-11994-17-git-send-email-taras.kondratiuk@linaro.org>

On 11/16/2013 02:01 AM, Taras Kondratiuk wrote:
> From: Victor Kamensky <victor.kamensky@linaro.org>
> 
> All OMAP IP blocks expect LE data, but CPU may operate in BE mode.
> Need to use endian neutral functions to read/write h/w registers.
> I.e instead of __raw_read[lw] and __raw_write[lw] functions code
> need to use read[lw]_relaxed and write[lw]_relaxed functions.
> If the first simply reads/writes register, the second will byteswap
> it if host operates in BE mode.
> 
> Changes are trivial sed like replacement of __raw_xxx functions
> with xxx_relaxed variant.
> 
> Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
> Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org>

Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> ---
>  sound/soc/omap/mcbsp.c      |   12 ++++++------
>  sound/soc/omap/omap-dmic.c  |    4 ++--
>  sound/soc/omap/omap-mcpdm.c |    4 ++--
>  3 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/sound/soc/omap/mcbsp.c b/sound/soc/omap/mcbsp.c
> index 83433fd..86c7538 100644
> --- a/sound/soc/omap/mcbsp.c
> +++ b/sound/soc/omap/mcbsp.c
> @@ -36,10 +36,10 @@ static void omap_mcbsp_write(struct omap_mcbsp *mcbsp, u16 reg, u32 val)
>  
>  	if (mcbsp->pdata->reg_size == 2) {
>  		((u16 *)mcbsp->reg_cache)[reg] = (u16)val;
> -		__raw_writew((u16)val, addr);
> +		writew_relaxed((u16)val, addr);
>  	} else {
>  		((u32 *)mcbsp->reg_cache)[reg] = val;
> -		__raw_writel(val, addr);
> +		writel_relaxed(val, addr);
>  	}
>  }
>  
> @@ -48,22 +48,22 @@ static int omap_mcbsp_read(struct omap_mcbsp *mcbsp, u16 reg, bool from_cache)
>  	void __iomem *addr = mcbsp->io_base + reg * mcbsp->pdata->reg_step;
>  
>  	if (mcbsp->pdata->reg_size == 2) {
> -		return !from_cache ? __raw_readw(addr) :
> +		return !from_cache ? readw_relaxed(addr) :
>  				     ((u16 *)mcbsp->reg_cache)[reg];
>  	} else {
> -		return !from_cache ? __raw_readl(addr) :
> +		return !from_cache ? readl_relaxed(addr) :
>  				     ((u32 *)mcbsp->reg_cache)[reg];
>  	}
>  }
>  
>  static void omap_mcbsp_st_write(struct omap_mcbsp *mcbsp, u16 reg, u32 val)
>  {
> -	__raw_writel(val, mcbsp->st_data->io_base_st + reg);
> +	writel_relaxed(val, mcbsp->st_data->io_base_st + reg);
>  }
>  
>  static int omap_mcbsp_st_read(struct omap_mcbsp *mcbsp, u16 reg)
>  {
> -	return __raw_readl(mcbsp->st_data->io_base_st + reg);
> +	return readl_relaxed(mcbsp->st_data->io_base_st + reg);
>  }
>  
>  #define MCBSP_READ(mcbsp, reg) \
> diff --git a/sound/soc/omap/omap-dmic.c b/sound/soc/omap/omap-dmic.c
> index 12e566b..1bd531d 100644
> --- a/sound/soc/omap/omap-dmic.c
> +++ b/sound/soc/omap/omap-dmic.c
> @@ -61,12 +61,12 @@ struct omap_dmic {
>  
>  static inline void omap_dmic_write(struct omap_dmic *dmic, u16 reg, u32 val)
>  {
> -	__raw_writel(val, dmic->io_base + reg);
> +	writel_relaxed(val, dmic->io_base + reg);
>  }
>  
>  static inline int omap_dmic_read(struct omap_dmic *dmic, u16 reg)
>  {
> -	return __raw_readl(dmic->io_base + reg);
> +	return readl_relaxed(dmic->io_base + reg);
>  }
>  
>  static inline void omap_dmic_start(struct omap_dmic *dmic)
> diff --git a/sound/soc/omap/omap-mcpdm.c b/sound/soc/omap/omap-mcpdm.c
> index 90d2a7c..653ba1c 100644
> --- a/sound/soc/omap/omap-mcpdm.c
> +++ b/sound/soc/omap/omap-mcpdm.c
> @@ -74,12 +74,12 @@ struct omap_mcpdm {
>  
>  static inline void omap_mcpdm_write(struct omap_mcpdm *mcpdm, u16 reg, u32 val)
>  {
> -	__raw_writel(val, mcpdm->io_base + reg);
> +	writel_relaxed(val, mcpdm->io_base + reg);
>  }
>  
>  static inline int omap_mcpdm_read(struct omap_mcpdm *mcpdm, u16 reg)
>  {
> -	return __raw_readl(mcpdm->io_base + reg);
> +	return readl_relaxed(mcpdm->io_base + reg);
>  }
>  
>  #ifdef DEBUG
> 


-- 
Péter

WARNING: multiple messages have this Message-ID (diff)
From: Peter Ujfalusi <peter.ujfalusi@ti.com>
To: Taras Kondratiuk <taras.kondratiuk@linaro.org>,
	<linux-omap@vger.kernel.org>
Cc: <linaro-networking@linaro.org>,
	Victor Kamensky <victor.kamensky@linaro.org>,
	Jarkko Nikula <jarkko.nikula@bitmer.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.de>, <alsa-devel@alsa-project.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [RFC 16/23] ASoC: omap: mcbsp, mcpdm, dmic: raw read and write endian fix
Date: Mon, 18 Nov 2013 12:30:42 +0200	[thread overview]
Message-ID: <5289EC52.2060803@ti.com> (raw)
In-Reply-To: <1384560086-11994-17-git-send-email-taras.kondratiuk@linaro.org>

On 11/16/2013 02:01 AM, Taras Kondratiuk wrote:
> From: Victor Kamensky <victor.kamensky@linaro.org>
> 
> All OMAP IP blocks expect LE data, but CPU may operate in BE mode.
> Need to use endian neutral functions to read/write h/w registers.
> I.e instead of __raw_read[lw] and __raw_write[lw] functions code
> need to use read[lw]_relaxed and write[lw]_relaxed functions.
> If the first simply reads/writes register, the second will byteswap
> it if host operates in BE mode.
> 
> Changes are trivial sed like replacement of __raw_xxx functions
> with xxx_relaxed variant.
> 
> Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
> Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org>

Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> ---
>  sound/soc/omap/mcbsp.c      |   12 ++++++------
>  sound/soc/omap/omap-dmic.c  |    4 ++--
>  sound/soc/omap/omap-mcpdm.c |    4 ++--
>  3 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/sound/soc/omap/mcbsp.c b/sound/soc/omap/mcbsp.c
> index 83433fd..86c7538 100644
> --- a/sound/soc/omap/mcbsp.c
> +++ b/sound/soc/omap/mcbsp.c
> @@ -36,10 +36,10 @@ static void omap_mcbsp_write(struct omap_mcbsp *mcbsp, u16 reg, u32 val)
>  
>  	if (mcbsp->pdata->reg_size == 2) {
>  		((u16 *)mcbsp->reg_cache)[reg] = (u16)val;
> -		__raw_writew((u16)val, addr);
> +		writew_relaxed((u16)val, addr);
>  	} else {
>  		((u32 *)mcbsp->reg_cache)[reg] = val;
> -		__raw_writel(val, addr);
> +		writel_relaxed(val, addr);
>  	}
>  }
>  
> @@ -48,22 +48,22 @@ static int omap_mcbsp_read(struct omap_mcbsp *mcbsp, u16 reg, bool from_cache)
>  	void __iomem *addr = mcbsp->io_base + reg * mcbsp->pdata->reg_step;
>  
>  	if (mcbsp->pdata->reg_size == 2) {
> -		return !from_cache ? __raw_readw(addr) :
> +		return !from_cache ? readw_relaxed(addr) :
>  				     ((u16 *)mcbsp->reg_cache)[reg];
>  	} else {
> -		return !from_cache ? __raw_readl(addr) :
> +		return !from_cache ? readl_relaxed(addr) :
>  				     ((u32 *)mcbsp->reg_cache)[reg];
>  	}
>  }
>  
>  static void omap_mcbsp_st_write(struct omap_mcbsp *mcbsp, u16 reg, u32 val)
>  {
> -	__raw_writel(val, mcbsp->st_data->io_base_st + reg);
> +	writel_relaxed(val, mcbsp->st_data->io_base_st + reg);
>  }
>  
>  static int omap_mcbsp_st_read(struct omap_mcbsp *mcbsp, u16 reg)
>  {
> -	return __raw_readl(mcbsp->st_data->io_base_st + reg);
> +	return readl_relaxed(mcbsp->st_data->io_base_st + reg);
>  }
>  
>  #define MCBSP_READ(mcbsp, reg) \
> diff --git a/sound/soc/omap/omap-dmic.c b/sound/soc/omap/omap-dmic.c
> index 12e566b..1bd531d 100644
> --- a/sound/soc/omap/omap-dmic.c
> +++ b/sound/soc/omap/omap-dmic.c
> @@ -61,12 +61,12 @@ struct omap_dmic {
>  
>  static inline void omap_dmic_write(struct omap_dmic *dmic, u16 reg, u32 val)
>  {
> -	__raw_writel(val, dmic->io_base + reg);
> +	writel_relaxed(val, dmic->io_base + reg);
>  }
>  
>  static inline int omap_dmic_read(struct omap_dmic *dmic, u16 reg)
>  {
> -	return __raw_readl(dmic->io_base + reg);
> +	return readl_relaxed(dmic->io_base + reg);
>  }
>  
>  static inline void omap_dmic_start(struct omap_dmic *dmic)
> diff --git a/sound/soc/omap/omap-mcpdm.c b/sound/soc/omap/omap-mcpdm.c
> index 90d2a7c..653ba1c 100644
> --- a/sound/soc/omap/omap-mcpdm.c
> +++ b/sound/soc/omap/omap-mcpdm.c
> @@ -74,12 +74,12 @@ struct omap_mcpdm {
>  
>  static inline void omap_mcpdm_write(struct omap_mcpdm *mcpdm, u16 reg, u32 val)
>  {
> -	__raw_writel(val, mcpdm->io_base + reg);
> +	writel_relaxed(val, mcpdm->io_base + reg);
>  }
>  
>  static inline int omap_mcpdm_read(struct omap_mcpdm *mcpdm, u16 reg)
>  {
> -	return __raw_readl(mcpdm->io_base + reg);
> +	return readl_relaxed(mcpdm->io_base + reg);
>  }
>  
>  #ifdef DEBUG
> 


-- 
Péter

  parent reply	other threads:[~2013-11-18 10:30 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-16  0:01 [RFC 00/23] OMAP4: big endian support and fixes Taras Kondratiuk
2013-11-16  0:01 ` [RFC 01/23] gpio/omap: raw read and write endian fix Taras Kondratiuk
2013-11-19  9:29   ` Linus Walleij
2013-11-19 15:43     ` Tony Lindgren
2013-11-19 16:51     ` Javier Martinez Canillas
2013-11-19 18:12     ` Kevin Hilman
2013-11-19 18:12       ` Kevin Hilman
2013-11-19 18:21   ` Santosh Shilimkar
2013-11-19 18:21     ` Santosh Shilimkar
2013-11-16  0:01 ` [RFC 02/23] watchdog: omap_wdt: " Taras Kondratiuk
2013-11-16  6:27   ` Guenter Roeck
2013-11-17 19:09   ` Wim Van Sebroeck
2013-11-16  0:01 ` [RFC 03/23] OMAPDSS: " Taras Kondratiuk
2013-11-16  0:01   ` Taras Kondratiuk
2013-11-18 13:13   ` Tomi Valkeinen
2013-11-18 13:13     ` Tomi Valkeinen
2013-11-18 13:13     ` Tomi Valkeinen
2013-11-16  0:01 ` [RFC 04/23] mmc: omap: " Taras Kondratiuk
     [not found] ` <1384560086-11994-1-git-send-email-taras.kondratiuk-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-11-16  0:01   ` [RFC 05/23] i2c: " Taras Kondratiuk
2013-11-16  0:01     ` Taras Kondratiuk
     [not found]     ` <1384560086-11994-6-git-send-email-taras.kondratiuk-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-11-26 12:42       ` Wolfram Sang
2013-11-26 12:42         ` Wolfram Sang
2013-11-27 13:48         ` [PATCH] " Taras Kondratiuk
2013-11-27 13:48           ` Taras Kondratiuk
2013-11-16  0:01   ` [RFC 15/23] usb: musb: " Taras Kondratiuk
2013-11-16  0:01     ` Taras Kondratiuk
2013-11-25 22:07     ` Felipe Balbi
2013-11-25 22:07       ` Felipe Balbi
2013-11-25 22:13       ` Felipe Balbi
2013-11-25 22:13         ` Felipe Balbi
2013-11-16  0:01 ` [RFC 06/23] drivers: bus: omap_l3: " Taras Kondratiuk
2013-11-16  0:01 ` [RFC 07/23] hwrng: omap - " Taras Kondratiuk
2013-11-16  0:01   ` Taras Kondratiuk
2013-11-16  0:01 ` [RFC 08/23] crypto: omap-aes " Taras Kondratiuk
2013-11-16  0:01   ` Taras Kondratiuk
2013-11-16  0:01 ` [RFC 09/23] crypto: omap-sham " Taras Kondratiuk
2013-11-16  0:01   ` Taras Kondratiuk
2013-11-16  0:01 ` [RFC 10/23] Input: omap-keypad " Taras Kondratiuk
2013-11-16  0:01 ` [RFC 11/23] mfd: omap-usb-host: " Taras Kondratiuk
2013-11-18 10:35   ` Lee Jones
2013-11-18 10:35     ` Lee Jones
2013-11-16  0:01 ` [RFC 12/23] mfd: omap-usb-tll: " Taras Kondratiuk
2013-11-18 10:35   ` Lee Jones
2013-11-16  0:01 ` [RFC 13/23] spi: omap2-mcspi: " Taras Kondratiuk
     [not found]   ` <1384560086-11994-14-git-send-email-taras.kondratiuk-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-11-16 10:19     ` Mark Brown
2013-11-16 10:19       ` Mark Brown
2013-11-16  0:01 ` [RFC 14/23] USB: ehci-omap: " Taras Kondratiuk
     [not found]   ` <1384560086-11994-15-git-send-email-taras.kondratiuk-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-11-18 22:46     ` Felipe Balbi
2013-11-18 22:46       ` Felipe Balbi
2013-11-16  0:01 ` [RFC 16/23] ASoC: omap: mcbsp, mcpdm, dmic: " Taras Kondratiuk
2013-11-16 16:09   ` Jarkko Nikula
2013-11-16 16:09     ` Jarkko Nikula
2013-11-16 17:23     ` Takashi Iwai
2013-11-16 17:23       ` Takashi Iwai
2013-11-18 10:30   ` Peter Ujfalusi [this message]
2013-11-18 10:30     ` Peter Ujfalusi
2013-11-18 11:15   ` Mark Brown
2013-11-18 11:15     ` Mark Brown
2013-11-16  0:01 ` [RFC 17/23] ARM: OMAP2+: " Taras Kondratiuk
2013-11-16  0:01 ` [RFC 18/23] ARM: OMAP: dmtimer: " Taras Kondratiuk
2013-11-16  0:01 ` [RFC 19/23] ARM: OMAP: counter-32k: " Taras Kondratiuk
2013-11-16  0:01 ` [RFC 20/23] ARM: OMAP: debug-leds: " Taras Kondratiuk
2013-11-16  0:01 ` [RFC 21/23] ARM: OMAP4: sleep: byteswap data for big-endian Taras Kondratiuk
2013-11-16  0:01 ` [RFC 22/23] ARM: OMAP4: sleep/smp: switch CPU to BE if compiled for BE Taras Kondratiuk
2013-11-16  0:01 ` [RFC 23/23] ARM: OMAP4: enable big endian support Taras Kondratiuk

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=5289EC52.2060803@ti.com \
    --to=peter.ujfalusi@ti.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=jarkko.nikula@bitmer.com \
    --cc=lgirdwood@gmail.com \
    --cc=linaro-networking@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=taras.kondratiuk@linaro.org \
    --cc=tiwai@suse.de \
    --cc=victor.kamensky@linaro.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.