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(-)
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);