mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-03 01:36:52 +09:00
ALSA: lx6464es - fix device communication via command bus
commita29878553aupstream. commit6175ddf06boptimized 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: Tim Blechmann <tim@klingt.org> LKML-Reference: <4ECB5257.4040600@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
341f278d7b
commit
5599ae9741
@@ -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 __iomem *address = lx_dsp_register(chip, port);
|
||||
memcpy_fromio(data, address, len*sizeof(u32));
|
||||
u32 __iomem *address = lx_dsp_register(chip, port);
|
||||
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)
|
||||
void lx_dsp_reg_writebuf(struct lx6464es *chip, int port, const u32 *data,
|
||||
u32 len)
|
||||
{
|
||||
void __iomem *address = lx_dsp_register(chip, port);
|
||||
memcpy_toio(address, data, len*sizeof(u32));
|
||||
u32 __iomem *address = lx_dsp_register(chip, port);
|
||||
int i;
|
||||
|
||||
/* we cannot use memcpy_to */
|
||||
for (i = 0; i != len; ++i)
|
||||
iowrite32(data[i], address + i);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user