|
@@ -310,12 +310,16 @@ static int snd_ali_codec_ready(struct snd_ali *codec,
|
|
|
unsigned int res;
|
|
|
|
|
|
end_time = jiffies + msecs_to_jiffies(250);
|
|
|
- do {
|
|
|
+
|
|
|
+ for (;;) {
|
|
|
res = snd_ali_5451_peek(codec,port);
|
|
|
if (!(res & 0x8000))
|
|
|
return 0;
|
|
|
+ if (!time_after_eq(end_time, jiffies))
|
|
|
+ break;
|
|
|
schedule_timeout_uninterruptible(1);
|
|
|
- } while (time_after_eq(end_time, jiffies));
|
|
|
+ }
|
|
|
+
|
|
|
snd_ali_5451_poke(codec, port, res & ~0x8000);
|
|
|
snd_printdd("ali_codec_ready: codec is not ready.\n ");
|
|
|
return -EIO;
|
|
@@ -327,15 +331,17 @@ static int snd_ali_stimer_ready(struct snd_ali *codec)
|
|
|
unsigned long dwChk1,dwChk2;
|
|
|
|
|
|
dwChk1 = snd_ali_5451_peek(codec, ALI_STIMER);
|
|
|
- dwChk2 = snd_ali_5451_peek(codec, ALI_STIMER);
|
|
|
-
|
|
|
end_time = jiffies + msecs_to_jiffies(250);
|
|
|
- do {
|
|
|
+
|
|
|
+ for (;;) {
|
|
|
dwChk2 = snd_ali_5451_peek(codec, ALI_STIMER);
|
|
|
if (dwChk2 != dwChk1)
|
|
|
return 0;
|
|
|
+ if (!time_after_eq(end_time, jiffies))
|
|
|
+ break;
|
|
|
schedule_timeout_uninterruptible(1);
|
|
|
- } while (time_after_eq(end_time, jiffies));
|
|
|
+ }
|
|
|
+
|
|
|
snd_printk(KERN_ERR "ali_stimer_read: stimer is not ready.\n");
|
|
|
return -EIO;
|
|
|
}
|