On 09/18/2007 01:54 PM, Takashi Iwai wrote:
The other changes look good to me. But, honestly, I couldn't follow all the pathes you sent in the right order. So, could you guys make a series of patches to be applied to HG tree? That'll be really helpful for review, too.
Two more for alsa-drivers. Just for completeness, but feel free to drop on the floor as well. I'm not hugely sure about that "if (!signal_pending)" in the msnd_pinnacle one (so just keep it interruptible) and the other two are just replacinging HZ calculations.
Speaking about that msnd one -- I believe I've seen that driver sitting in isa/ in alsa-drivers ages ago already. Is someone still working on that? (no, I don't have the hardware).
Signed-off-by: Rene Herman rene.herman@gmail.com
diff -r 3fefacd5d76c isa/msnd/msnd_pinnacle.c --- a/isa/msnd/msnd_pinnacle.c Mon Sep 17 19:04:40 2007 +0200 +++ b/isa/msnd/msnd_pinnacle.c Tue Sep 18 16:21:50 2007 +0200 @@ -239,10 +239,8 @@ static void dsp_write_flush(void) &dev.writeflush, get_play_delay_jiffies(dev.DAPF.len));*/ clear_bit(F_WRITEFLUSH, &dev.flags); - if (!signal_pending(current)) { - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(get_play_delay_jiffies( dev.play_period_bytes)); - } + if (!signal_pending(current)) + schedule_timeout_interruptible(get_play_delay_jiffies(dev.play_period_bytes)); clear_bit(F_WRITING, &dev.flags); }
@@ -691,8 +689,7 @@ static int __init snd_msnd_calibrate_adc & ~0x0001, dev.SMA + SMA_wCurrHostStatusFlags); if (snd_msnd_send_word(&dev, 0, 0, HDEXAR_CAL_A_TO_D) == 0 && snd_msnd_send_dsp_cmd_chk(&dev, HDEX_AUX_REQ) == 0) { - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(HZ / 3); + schedule_timeout_interruptible(msecs_to_jiffiies(333)); return 0; } printk(KERN_WARNING LOGNAME ": ADC calibration failed\n"); diff -r 3fefacd5d76c pci/asihpi/hpios_linux_kernel.c --- a/pci/asihpi/hpios_linux_kernel.c Mon Sep 17 19:04:40 2007 +0200 +++ b/pci/asihpi/hpios_linux_kernel.c Tue Sep 18 16:21:50 2007 +0200 @@ -38,8 +38,7 @@ and the task receives a signal. and the task receives a signal. Setting the state to UNINTERRUPTIBLE stops it from returning early. */ - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout((HZ * dwNumMicroSec + (HZ - 1)) / 1000000); + schedule_timeout_uninterruptible(usecs_to_jiffies(dwNumMicroSec)); } else if (dwNumMicroSec <= 2000) udelay(dwNumMicroSec); else