diff mbox

[v1,1/1] sst: replace custom implementation of readq / writeq

Message ID 1440677358-6681-1-git-send-email-andriy.shevchenko@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Andy Shevchenko Aug. 27, 2015, 12:09 p.m. UTC
The readq() and writeq() helpers are available in the
asm-generic/io-64-nonatomic-hi-lo.h and asm-generic/io-64-nonatomic-lo-hi.h
headers. Replace custom implementation by the generic helpers.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 sound/soc/intel/atom/sst/sst_pvt.c | 16 ++++++----------
 sound/soc/intel/common/sst-dsp.c   |  9 ++++-----
 2 files changed, 10 insertions(+), 15 deletions(-)

Comments

Andy Shevchenko Sept. 17, 2015, 8:57 a.m. UTC | #1
On Thu, 2015-08-27 at 15:09 +0300, Andy Shevchenko wrote:
> The readq() and writeq() helpers are available in the
> asm-generic/io-64-nonatomic-hi-lo.h and asm-generic/io-64-nonatomic
> -lo-hi.h
> headers. Replace custom implementation by the generic helpers.
> 

Liam, any comments on this?

> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  sound/soc/intel/atom/sst/sst_pvt.c | 16 ++++++----------
>  sound/soc/intel/common/sst-dsp.c   |  9 ++++-----
>  2 files changed, 10 insertions(+), 15 deletions(-)
> 
> diff --git a/sound/soc/intel/atom/sst/sst_pvt.c 
> b/sound/soc/intel/atom/sst/sst_pvt.c
> index adb32fe..6cc222d 100644
> --- a/sound/soc/intel/atom/sst/sst_pvt.c
> +++ b/sound/soc/intel/atom/sst/sst_pvt.c
> @@ -31,7 +31,10 @@
>  #include <sound/pcm.h>
>  #include <sound/soc.h>
>  #include <sound/compress_driver.h>
> +
> +#include <asm-generic/io-64-nonatomic-lo-hi.h>
>  #include <asm/platform_sst_audio.h>
> +
>  #include "../sst-mfld-platform.h"
>  #include "sst.h"
>  #include "../../common/sst-dsp.h"
> @@ -49,25 +52,18 @@ u32 sst_shim_read(void __iomem *addr, int offset)
>  
>  u64 sst_reg_read64(void __iomem *addr, int offset)
>  {
> -	u64 val = 0;
> -
> -	memcpy_fromio(&val, addr + offset, sizeof(val));
> -
> -	return val;
> +	return readq(addr + offset);
>  }
>  
>  int sst_shim_write64(void __iomem *addr, int offset, u64 value)
>  {
> -	memcpy_toio(addr + offset, &value, sizeof(value));
> +	writeq(value, addr + offset);
>  	return 0;
>  }
>  
>  u64 sst_shim_read64(void __iomem *addr, int offset)
>  {
> -	u64 val = 0;
> -
> -	memcpy_fromio(&val, addr + offset, sizeof(val));
> -	return val;
> +	return readq(addr + offset);
>  }
>  
>  void sst_set_fw_state_locked(
> diff --git a/sound/soc/intel/common/sst-dsp.c 
> b/sound/soc/intel/common/sst-dsp.c
> index a627236..5274482 100644
> --- a/sound/soc/intel/common/sst-dsp.c
> +++ b/sound/soc/intel/common/sst-dsp.c
> @@ -22,6 +22,8 @@
>  #include <linux/io.h>
>  #include <linux/delay.h>
>  
> +#include <asm-generic/io-64-nonatomic-lo-hi.h>
> +
>  #include "sst-dsp.h"
>  #include "sst-dsp-priv.h"
>  
> @@ -43,16 +45,13 @@ EXPORT_SYMBOL_GPL(sst_shim32_read);
>  
>  void sst_shim32_write64(void __iomem *addr, u32 offset, u64 value)
>  {
> -	memcpy_toio(addr + offset, &value, sizeof(value));
> +	writeq(value, addr + offset);
>  }
>  EXPORT_SYMBOL_GPL(sst_shim32_write64);
>  
>  u64 sst_shim32_read64(void __iomem *addr, u32 offset)
>  {
> -	u64 val;
> -
> -	memcpy_fromio(&val, addr + offset, sizeof(val));
> -	return val;
> +	return readq(addr + offset);
>  }
>  EXPORT_SYMBOL_GPL(sst_shim32_read64);
>
Liam Girdwood Sept. 17, 2015, 9:24 a.m. UTC | #2
On Thu, 2015-09-17 at 11:57 +0300, Andy Shevchenko wrote:
> On Thu, 2015-08-27 at 15:09 +0300, Andy Shevchenko wrote:
> > The readq() and writeq() helpers are available in the
> > asm-generic/io-64-nonatomic-hi-lo.h and asm-generic/io-64-nonatomic
> > -lo-hi.h
> > headers. Replace custom implementation by the generic helpers.
> > 
> 
> Liam, any comments on this?

Looks good from me, but it's one of Vinod's drivers (now added to CC).

Liam

> 
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > ---
> >  sound/soc/intel/atom/sst/sst_pvt.c | 16 ++++++----------
> >  sound/soc/intel/common/sst-dsp.c   |  9 ++++-----
> >  2 files changed, 10 insertions(+), 15 deletions(-)
> > 
> > diff --git a/sound/soc/intel/atom/sst/sst_pvt.c 
> > b/sound/soc/intel/atom/sst/sst_pvt.c
> > index adb32fe..6cc222d 100644
> > --- a/sound/soc/intel/atom/sst/sst_pvt.c
> > +++ b/sound/soc/intel/atom/sst/sst_pvt.c
> > @@ -31,7 +31,10 @@
> >  #include <sound/pcm.h>
> >  #include <sound/soc.h>
> >  #include <sound/compress_driver.h>
> > +
> > +#include <asm-generic/io-64-nonatomic-lo-hi.h>
> >  #include <asm/platform_sst_audio.h>
> > +
> >  #include "../sst-mfld-platform.h"
> >  #include "sst.h"
> >  #include "../../common/sst-dsp.h"
> > @@ -49,25 +52,18 @@ u32 sst_shim_read(void __iomem *addr, int offset)
> >  
> >  u64 sst_reg_read64(void __iomem *addr, int offset)
> >  {
> > -	u64 val = 0;
> > -
> > -	memcpy_fromio(&val, addr + offset, sizeof(val));
> > -
> > -	return val;
> > +	return readq(addr + offset);
> >  }
> >  
> >  int sst_shim_write64(void __iomem *addr, int offset, u64 value)
> >  {
> > -	memcpy_toio(addr + offset, &value, sizeof(value));
> > +	writeq(value, addr + offset);
> >  	return 0;
> >  }
> >  
> >  u64 sst_shim_read64(void __iomem *addr, int offset)
> >  {
> > -	u64 val = 0;
> > -
> > -	memcpy_fromio(&val, addr + offset, sizeof(val));
> > -	return val;
> > +	return readq(addr + offset);
> >  }
> >  
> >  void sst_set_fw_state_locked(
> > diff --git a/sound/soc/intel/common/sst-dsp.c 
> > b/sound/soc/intel/common/sst-dsp.c
> > index a627236..5274482 100644
> > --- a/sound/soc/intel/common/sst-dsp.c
> > +++ b/sound/soc/intel/common/sst-dsp.c
> > @@ -22,6 +22,8 @@
> >  #include <linux/io.h>
> >  #include <linux/delay.h>
> >  
> > +#include <asm-generic/io-64-nonatomic-lo-hi.h>
> > +
> >  #include "sst-dsp.h"
> >  #include "sst-dsp-priv.h"
> >  
> > @@ -43,16 +45,13 @@ EXPORT_SYMBOL_GPL(sst_shim32_read);
> >  
> >  void sst_shim32_write64(void __iomem *addr, u32 offset, u64 value)
> >  {
> > -	memcpy_toio(addr + offset, &value, sizeof(value));
> > +	writeq(value, addr + offset);
> >  }
> >  EXPORT_SYMBOL_GPL(sst_shim32_write64);
> >  
> >  u64 sst_shim32_read64(void __iomem *addr, u32 offset)
> >  {
> > -	u64 val;
> > -
> > -	memcpy_fromio(&val, addr + offset, sizeof(val));
> > -	return val;
> > +	return readq(addr + offset);
> >  }
> >  EXPORT_SYMBOL_GPL(sst_shim32_read64);
> >  
>
Vinod Koul Sept. 17, 2015, 11:41 a.m. UTC | #3
On Thu, Sep 17, 2015 at 10:24:04AM +0100, Liam Girdwood wrote:
> On Thu, 2015-09-17 at 11:57 +0300, Andy Shevchenko wrote:
> > On Thu, 2015-08-27 at 15:09 +0300, Andy Shevchenko wrote:
> > > The readq() and writeq() helpers are available in the
> > > asm-generic/io-64-nonatomic-hi-lo.h and asm-generic/io-64-nonatomic
> > > -lo-hi.h
> > > headers. Replace custom implementation by the generic helpers.
> > > 
> > 
> > Liam, any comments on this?
> 
> Looks good from me, but it's one of Vinod's drivers (now added to CC).

Please do test this on BYT/BSW as well, otherwise looks good

Acked-by: Vinod Koul <vinod.koul@intel.com>
Andy Shevchenko Sept. 18, 2015, 12:07 p.m. UTC | #4
On Thu, 2015-09-17 at 17:11 +0530, Vinod Koul wrote:
> On Thu, Sep 17, 2015 at 10:24:04AM +0100, Liam Girdwood wrote:
> > On Thu, 2015-09-17 at 11:57 +0300, Andy Shevchenko wrote:
> > > On Thu, 2015-08-27 at 15:09 +0300, Andy Shevchenko wrote:
> > > > The readq() and writeq() helpers are available in the
> > > > asm-generic/io-64-nonatomic-hi-lo.h and asm-generic/io-64
> > > > -nonatomic
> > > > -lo-hi.h
> > > > headers. Replace custom implementation by the generic helpers.
> > > > 
> > > 
> > > Liam, any comments on this?
> > 
> > Looks good from me, but it's one of Vinod's drivers (now added to 
> > CC).
> 
> Please do test this on BYT/BSW as well, otherwise looks good

Tested both patches (another one just recently sent) on ASuS T100TA.

> 
> Acked-by: Vinod Koul <vinod.koul@intel.com>
>
Andy Shevchenko Nov. 24, 2015, 10:25 a.m. UTC | #5
On Fri, 2015-09-18 at 15:07 +0300, Andy Shevchenko wrote:
> On Thu, 2015-09-17 at 17:11 +0530, Vinod Koul wrote:
> > On Thu, Sep 17, 2015 at 10:24:04AM +0100, Liam Girdwood wrote:
> > > On Thu, 2015-09-17 at 11:57 +0300, Andy Shevchenko wrote:
> > > > On Thu, 2015-08-27 at 15:09 +0300, Andy Shevchenko wrote:
> > > > > The readq() and writeq() helpers are available in the
> > > > > asm-generic/io-64-nonatomic-hi-lo.h and asm-generic/io-64
> > > > > -nonatomic
> > > > > -lo-hi.h
> > > > > headers. Replace custom implementation by the generic
> > > > > helpers.
> > > > > 
> > > > 
> > > > Liam, any comments on this?
> > > 
> > > Looks good from me, but it's one of Vinod's drivers (now added to
> > > CC).
> > 
> > Please do test this on BYT/BSW as well, otherwise looks good
> 
> Tested both patches (another one just recently sent) on ASuS T100TA.

Do I understand correctly I have to resend with Mark in Cc?

> 
> > 
> > Acked-by: Vinod Koul <vinod.koul@intel.com>
> > 
>
diff mbox

Patch

diff --git a/sound/soc/intel/atom/sst/sst_pvt.c b/sound/soc/intel/atom/sst/sst_pvt.c
index adb32fe..6cc222d 100644
--- a/sound/soc/intel/atom/sst/sst_pvt.c
+++ b/sound/soc/intel/atom/sst/sst_pvt.c
@@ -31,7 +31,10 @@ 
 #include <sound/pcm.h>
 #include <sound/soc.h>
 #include <sound/compress_driver.h>
+
+#include <asm-generic/io-64-nonatomic-lo-hi.h>
 #include <asm/platform_sst_audio.h>
+
 #include "../sst-mfld-platform.h"
 #include "sst.h"
 #include "../../common/sst-dsp.h"
@@ -49,25 +52,18 @@  u32 sst_shim_read(void __iomem *addr, int offset)
 
 u64 sst_reg_read64(void __iomem *addr, int offset)
 {
-	u64 val = 0;
-
-	memcpy_fromio(&val, addr + offset, sizeof(val));
-
-	return val;
+	return readq(addr + offset);
 }
 
 int sst_shim_write64(void __iomem *addr, int offset, u64 value)
 {
-	memcpy_toio(addr + offset, &value, sizeof(value));
+	writeq(value, addr + offset);
 	return 0;
 }
 
 u64 sst_shim_read64(void __iomem *addr, int offset)
 {
-	u64 val = 0;
-
-	memcpy_fromio(&val, addr + offset, sizeof(val));
-	return val;
+	return readq(addr + offset);
 }
 
 void sst_set_fw_state_locked(
diff --git a/sound/soc/intel/common/sst-dsp.c b/sound/soc/intel/common/sst-dsp.c
index a627236..5274482 100644
--- a/sound/soc/intel/common/sst-dsp.c
+++ b/sound/soc/intel/common/sst-dsp.c
@@ -22,6 +22,8 @@ 
 #include <linux/io.h>
 #include <linux/delay.h>
 
+#include <asm-generic/io-64-nonatomic-lo-hi.h>
+
 #include "sst-dsp.h"
 #include "sst-dsp-priv.h"
 
@@ -43,16 +45,13 @@  EXPORT_SYMBOL_GPL(sst_shim32_read);
 
 void sst_shim32_write64(void __iomem *addr, u32 offset, u64 value)
 {
-	memcpy_toio(addr + offset, &value, sizeof(value));
+	writeq(value, addr + offset);
 }
 EXPORT_SYMBOL_GPL(sst_shim32_write64);
 
 u64 sst_shim32_read64(void __iomem *addr, u32 offset)
 {
-	u64 val;
-
-	memcpy_fromio(&val, addr + offset, sizeof(val));
-	return val;
+	return readq(addr + offset);
 }
 EXPORT_SYMBOL_GPL(sst_shim32_read64);