Commit 30444a76 authored by Tim Blechmann's avatar Tim Blechmann Committed by Greg Kroah-Hartman

ALSA: lx6464es - fix device communication via command bus

commit a2987855 upstream.

commit 6175ddf0 optimized the mem*io
functions that have been used to send commands to the device. these
optimizations somehow corrupted the communication with the lx6464es,
that resulted the device to be unusable with kernels after 2.6.33.

this patch emulates the memcpy_*_io functions via a loop to avoid these
problems.
Signed-off-by: default avatarTim Blechmann <tim@klingt.org>
LKML-Reference: <4ECB5257.4040600@ladisch.de>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 9b8fd4ef
...@@ -80,8 +80,12 @@ unsigned long lx_dsp_reg_read(struct lx6464es *chip, int port) ...@@ -80,8 +80,12 @@ unsigned long lx_dsp_reg_read(struct lx6464es *chip, int port)
void lx_dsp_reg_readbuf(struct lx6464es *chip, int port, u32 *data, u32 len) void lx_dsp_reg_readbuf(struct lx6464es *chip, int port, u32 *data, u32 len)
{ {
void __iomem *address = lx_dsp_register(chip, port); u32 __iomem *address = lx_dsp_register(chip, port);
memcpy_fromio(data, address, len*sizeof(u32)); int i;
/* we cannot use memcpy_fromio */
for (i = 0; i != len; ++i)
data[i] = ioread32(address + i);
} }
...@@ -94,8 +98,12 @@ void lx_dsp_reg_write(struct lx6464es *chip, int port, unsigned data) ...@@ -94,8 +98,12 @@ void lx_dsp_reg_write(struct lx6464es *chip, int port, unsigned data)
void lx_dsp_reg_writebuf(struct lx6464es *chip, int port, const u32 *data, void lx_dsp_reg_writebuf(struct lx6464es *chip, int port, const u32 *data,
u32 len) u32 len)
{ {
void __iomem *address = lx_dsp_register(chip, port); u32 __iomem *address = lx_dsp_register(chip, port);
memcpy_toio(address, data, len*sizeof(u32)); int i;
/* we cannot use memcpy_to */
for (i = 0; i != len; ++i)
iowrite32(data[i], address + i);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment