[alsa-cvslog] CVS: alsa-driver/cards card-fm801.c,1.94,1.95
Brought to you by:
perex
From: Jaroslav K. <pe...@us...> - 2001-05-26 09:39:56
|
Update of /cvsroot/alsa/alsa-driver/cards In directory usw-pr-cvs1:/tmp/cvs-serv21954 Modified Files: card-fm801.c Log Message: Improved AC'97 presence checks and timeouts Index: card-fm801.c =================================================================== RCS file: /cvsroot/alsa/alsa-driver/cards/card-fm801.c,v retrieving revision 1.94 retrieving revision 1.95 diff -u -r1.94 -r1.95 --- card-fm801.c 2001/05/03 09:05:39 1.94 +++ card-fm801.c 2001/05/26 09:39:54 1.95 @@ -930,16 +930,16 @@ udelay(100); outw(0, FM801_REG(chip, CODEC_CTRL)); - timeout = (4 * HZ) / 3; /* 75ms */ + timeout = jiffies + (4 * HZ) / 3; /* 75ms */ outw((1<<7) | (0 << FM801_AC97_ADDR_SHIFT), FM801_REG(chip, AC97_CMD)); udelay(5); do { - if ((inw(FM801_REG(chip, AC97_CMD)) & (1<<8))) + if ((inw(FM801_REG(chip, AC97_CMD)) & (3<<8)) == (1<<8)) goto __ac97_secondary; set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout(1); - } while (timeout-- > 0); + } while ((timeout - (signed long)jiffies) > 0); snd_printk("Primary AC'97 codec not found\n"); snd_fm801_free(chip); return -EIO; @@ -949,18 +949,17 @@ goto __ac97_ok; for (id = 3; id > 0; id--) { /* my card has the secondary codec */ /* at address #3, so the loop is inverted */ - timeout = (4 * HZ) / 3; outw((1<<7) | (id << FM801_AC97_ADDR_SHIFT), FM801_REG(chip, AC97_CMD)); udelay(5); do { - if ((inw(FM801_REG(chip, AC97_CMD)) & (1<<8))) { + if ((inw(FM801_REG(chip, AC97_CMD)) & (3<<8)) == (1<<8)) { chip->secondary = 1; chip->secondary_addr = id; goto __ac97_ok; } set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout(1); - } while (timeout-- > 0); + } while ((timeout - (signed long)jiffies) > 0); } __ac97_ok: |