[ALSA] CS5535: shorter delays when accessing AC'97 codec registers
authorDavid Vrabel <dvrabel@arcom.com>
Fri, 3 Mar 2006 17:01:57 +0000 (18:01 +0100)
committerJaroslav Kysela <perex@suse.cz>
Wed, 22 Mar 2006 09:34:45 +0000 (10:34 +0100)
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>
sound/pci/cs5535audio/cs5535audio.c

index 02e3721..9fc7f38 100644 (file)
@@ -62,7 +62,7 @@ static void wait_till_cmd_acked(struct cs5535audio *cs5535au, unsigned long time
                tmp = cs_readl(cs5535au, ACC_CODEC_CNTL);
                if (!(tmp & CMD_NEW))
                        break;
-               msleep(10);
+               udelay(1);
        } while (--timeout);
        if (!timeout)
                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;
 
        cs_writel(cs5535au, ACC_CODEC_CNTL, regdata);
-       wait_till_cmd_acked(cs5535au, 500);
+       wait_till_cmd_acked(cs5535au, 50);
 
        timeout = 50;
        do {
                val = cs_readl(cs5535au, ACC_CODEC_STATUS);
                if ((val & STS_NEW) && reg == (val >> 24))
                        break;
-               msleep(10);
+               udelay(1);
        } while (--timeout);
        if (!timeout)
                snd_printk(KERN_ERR "Failure reading cs5535 codec\n");