[ALSA] CS5535: shorter delays when accessing AC'97 codec registers
Modules: CS5535 driver The 10 ms sleeps while waiting for AC'97 codec register reads/writes to complete are excessive given the maxmium time is one AC'97 frame (~21 us). With AC'97 codecs with integrated touchscreens (like the UCB1400) this improves the interactive performance of the touchscreen. Signed-off-by: David Vrabel <dvrabel@arcom.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
ae6b813a4d
commit
1037593c8b
@ -62,7 +62,7 @@ static void wait_till_cmd_acked(struct cs5535audio *cs5535au, unsigned long time
|
|||||||
tmp = cs_readl(cs5535au, ACC_CODEC_CNTL);
|
tmp = cs_readl(cs5535au, ACC_CODEC_CNTL);
|
||||||
if (!(tmp & CMD_NEW))
|
if (!(tmp & CMD_NEW))
|
||||||
break;
|
break;
|
||||||
msleep(10);
|
udelay(1);
|
||||||
} while (--timeout);
|
} while (--timeout);
|
||||||
if (!timeout)
|
if (!timeout)
|
||||||
snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
|
snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
|
||||||
@ -80,14 +80,14 @@ static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au,
|
|||||||
regdata |= CMD_NEW;
|
regdata |= CMD_NEW;
|
||||||
|
|
||||||
cs_writel(cs5535au, ACC_CODEC_CNTL, regdata);
|
cs_writel(cs5535au, ACC_CODEC_CNTL, regdata);
|
||||||
wait_till_cmd_acked(cs5535au, 500);
|
wait_till_cmd_acked(cs5535au, 50);
|
||||||
|
|
||||||
timeout = 50;
|
timeout = 50;
|
||||||
do {
|
do {
|
||||||
val = cs_readl(cs5535au, ACC_CODEC_STATUS);
|
val = cs_readl(cs5535au, ACC_CODEC_STATUS);
|
||||||
if ((val & STS_NEW) && reg == (val >> 24))
|
if ((val & STS_NEW) && reg == (val >> 24))
|
||||||
break;
|
break;
|
||||||
msleep(10);
|
udelay(1);
|
||||||
} while (--timeout);
|
} while (--timeout);
|
||||||
if (!timeout)
|
if (!timeout)
|
||||||
snd_printk(KERN_ERR "Failure reading cs5535 codec\n");
|
snd_printk(KERN_ERR "Failure reading cs5535 codec\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user