From 2f9d839a1dfe321c882841559112d07b66960a7a Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Tue, 8 Apr 2008 17:41:55 -0700 Subject: [PATCH] --- yaml --- r: 88203 b: refs/heads/master c: 4b47c971dc947cadecc20dc7681037e96ece520e h: refs/heads/master i: 88201: 39ee35a7e1e070a8bb250ccf6a106d54675b826c 88199: 3868f627639866b257daad1be3b612249e3efcad v: v3 --- [refs] | 2 +- trunk/sound/pci/es1968.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index d97cc7b8409d..4748d80b60f8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 41e3355de052693c7a0cad74b845148d262edadf +refs/heads/master: 4b47c971dc947cadecc20dc7681037e96ece520e diff --git a/trunk/sound/pci/es1968.c b/trunk/sound/pci/es1968.c index 25ccfce45759..7d911a18c082 100644 --- a/trunk/sound/pci/es1968.c +++ b/trunk/sound/pci/es1968.c @@ -617,6 +617,18 @@ static int snd_es1968_ac97_wait(struct es1968 *chip) return 1; /* timeout */ } +static int snd_es1968_ac97_wait_poll(struct es1968 *chip) +{ + int timeout = 100000; + + while (timeout-- > 0) { + if (!(inb(chip->io_port + ESM_AC97_INDEX) & 1)) + return 0; + } + snd_printd("es1968: ac97 timeout\n"); + return 1; /* timeout */ +} + static void snd_es1968_ac97_write(struct snd_ac97 *ac97, unsigned short reg, unsigned short val) { struct es1968 *chip = ac97->private_data; @@ -645,7 +657,7 @@ static unsigned short snd_es1968_ac97_read(struct snd_ac97 *ac97, unsigned short outb(reg | 0x80, chip->io_port + ESM_AC97_INDEX); /*msleep(1);*/ - if (! snd_es1968_ac97_wait(chip)) { + if (!snd_es1968_ac97_wait_poll(chip)) { data = inw(chip->io_port + ESM_AC97_DATA); /*msleep(1);*/ }