diff options
| -rw-r--r-- | drivers/telephony/ixj.c | 54 |
1 files changed, 18 insertions, 36 deletions
diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c index 9585d48dc4fc..f6704688ee8c 100644 --- a/drivers/telephony/ixj.c +++ b/drivers/telephony/ixj.c | |||
| @@ -2071,8 +2071,7 @@ static int ixj_ring(IXJ *j) | |||
| 2071 | j->flags.ringing = 0; | 2071 | j->flags.ringing = 0; |
| 2072 | return 1; | 2072 | return 1; |
| 2073 | } | 2073 | } |
| 2074 | set_current_state(TASK_INTERRUPTIBLE); | 2074 | schedule_timeout_interruptible(1); |
| 2075 | schedule_timeout(1); | ||
| 2076 | if (signal_pending(current)) | 2075 | if (signal_pending(current)) |
| 2077 | break; | 2076 | break; |
| 2078 | } | 2077 | } |
| @@ -2086,8 +2085,7 @@ static int ixj_ring(IXJ *j) | |||
| 2086 | return 1; | 2085 | return 1; |
| 2087 | } | 2086 | } |
| 2088 | } | 2087 | } |
| 2089 | set_current_state(TASK_INTERRUPTIBLE); | 2088 | schedule_timeout_interruptible(1); |
| 2090 | schedule_timeout(1); | ||
| 2091 | if (signal_pending(current)) | 2089 | if (signal_pending(current)) |
| 2092 | break; | 2090 | break; |
| 2093 | } | 2091 | } |
| @@ -2153,10 +2151,8 @@ static int ixj_release(struct inode *inode, struct file *file_p) | |||
| 2153 | * Set up locks to ensure that only one process is talking to the DSP at a time. | 2151 | * Set up locks to ensure that only one process is talking to the DSP at a time. |
| 2154 | * This is necessary to keep the DSP from locking up. | 2152 | * This is necessary to keep the DSP from locking up. |
| 2155 | */ | 2153 | */ |
| 2156 | while(test_and_set_bit(board, (void *)&j->busyflags) != 0) { | 2154 | while(test_and_set_bit(board, (void *)&j->busyflags) != 0) |
| 2157 | set_current_state(TASK_INTERRUPTIBLE); | 2155 | schedule_timeout_interruptible(1); |
| 2158 | schedule_timeout(1); | ||
| 2159 | } | ||
| 2160 | if (ixjdebug & 0x0002) | 2156 | if (ixjdebug & 0x0002) |
| 2161 | printk(KERN_INFO "Closing board %d\n", NUM(inode)); | 2157 | printk(KERN_INFO "Closing board %d\n", NUM(inode)); |
| 2162 | 2158 | ||
| @@ -3286,14 +3282,10 @@ static void ixj_write_cidcw(IXJ *j) | |||
| 3286 | ixj_play_tone(j, 23); | 3282 | ixj_play_tone(j, 23); |
| 3287 | 3283 | ||
| 3288 | clear_bit(j->board, &j->busyflags); | 3284 | clear_bit(j->board, &j->busyflags); |
| 3289 | while(j->tone_state) { | 3285 | while(j->tone_state) |
| 3290 | set_current_state(TASK_INTERRUPTIBLE); | 3286 | schedule_timeout_interruptible(1); |
| 3291 | schedule_timeout(1); | 3287 | while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0) |
| 3292 | } | 3288 | schedule_timeout_interruptible(1); |
| 3293 | while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0) { | ||
| 3294 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 3295 | schedule_timeout(1); | ||
| 3296 | } | ||
| 3297 | if(ixjdebug & 0x0200) { | 3289 | if(ixjdebug & 0x0200) { |
| 3298 | printk("IXJ cidcw phone%d first tone end at %ld\n", j->board, jiffies); | 3290 | printk("IXJ cidcw phone%d first tone end at %ld\n", j->board, jiffies); |
| 3299 | } | 3291 | } |
| @@ -3313,14 +3305,10 @@ static void ixj_write_cidcw(IXJ *j) | |||
| 3313 | ixj_play_tone(j, 24); | 3305 | ixj_play_tone(j, 24); |
| 3314 | 3306 | ||
| 3315 | clear_bit(j->board, &j->busyflags); | 3307 | clear_bit(j->board, &j->busyflags); |
| 3316 | while(j->tone_state) { | 3308 | while(j->tone_state) |
| 3317 | set_current_state(TASK_INTERRUPTIBLE); | 3309 | schedule_timeout_interruptible(1); |
| 3318 | schedule_timeout(1); | 3310 | while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0) |
| 3319 | } | 3311 | schedule_timeout_interruptible(1); |
| 3320 | while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0) { | ||
| 3321 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 3322 | schedule_timeout(1); | ||
| 3323 | } | ||
| 3324 | if(ixjdebug & 0x0200) { | 3312 | if(ixjdebug & 0x0200) { |
| 3325 | printk("IXJ cidcw phone%d sent second tone at %ld\n", j->board, jiffies); | 3313 | printk("IXJ cidcw phone%d sent second tone at %ld\n", j->board, jiffies); |
| 3326 | } | 3314 | } |
| @@ -3328,14 +3316,10 @@ static void ixj_write_cidcw(IXJ *j) | |||
| 3328 | j->cidcw_wait = jiffies + ((50 * hertz) / 100); | 3316 | j->cidcw_wait = jiffies + ((50 * hertz) / 100); |
| 3329 | 3317 | ||
| 3330 | clear_bit(j->board, &j->busyflags); | 3318 | clear_bit(j->board, &j->busyflags); |
| 3331 | while(!j->flags.cidcw_ack && time_before(jiffies, j->cidcw_wait)) { | 3319 | while(!j->flags.cidcw_ack && time_before(jiffies, j->cidcw_wait)) |
| 3332 | set_current_state(TASK_INTERRUPTIBLE); | 3320 | schedule_timeout_interruptible(1); |
| 3333 | schedule_timeout(1); | 3321 | while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0) |
| 3334 | } | 3322 | schedule_timeout_interruptible(1); |
| 3335 | while(test_and_set_bit(j->board, (void *)&j->busyflags) != 0) { | ||
| 3336 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 3337 | schedule_timeout(1); | ||
| 3338 | } | ||
| 3339 | j->cidcw_wait = 0; | 3323 | j->cidcw_wait = 0; |
| 3340 | if(!j->flags.cidcw_ack) { | 3324 | if(!j->flags.cidcw_ack) { |
| 3341 | if(ixjdebug & 0x0200) { | 3325 | if(ixjdebug & 0x0200) { |
| @@ -6110,10 +6094,8 @@ static int ixj_ioctl(struct inode *inode, struct file *file_p, unsigned int cmd, | |||
| 6110 | * Set up locks to ensure that only one process is talking to the DSP at a time. | 6094 | * Set up locks to ensure that only one process is talking to the DSP at a time. |
| 6111 | * This is necessary to keep the DSP from locking up. | 6095 | * This is necessary to keep the DSP from locking up. |
| 6112 | */ | 6096 | */ |
| 6113 | while(test_and_set_bit(board, (void *)&j->busyflags) != 0) { | 6097 | while(test_and_set_bit(board, (void *)&j->busyflags) != 0) |
| 6114 | set_current_state(TASK_INTERRUPTIBLE); | 6098 | schedule_timeout_interruptible(1); |
| 6115 | schedule_timeout(1); | ||
| 6116 | } | ||
| 6117 | if (ixjdebug & 0x0040) | 6099 | if (ixjdebug & 0x0040) |
| 6118 | printk("phone%d ioctl, cmd: 0x%x, arg: 0x%lx\n", minor, cmd, arg); | 6100 | printk("phone%d ioctl, cmd: 0x%x, arg: 0x%lx\n", minor, cmd, arg); |
| 6119 | if (minor >= IXJMAX) { | 6101 | if (minor >= IXJMAX) { |
