X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=drivers%2Fstaging%2Fspeakup%2Fspeakup_dectlk.c;h=15fdec323a70f28b666125847c07ca5ad6683f03;hb=ce49b6289fa3878b190f15192e54bb23dca552b6;hp=0dd2eb96cb28680dd042ee7301a46e530320b732;hpb=86652188f345edec56b0074a65f6db17f16eb359;p=firefly-linux-kernel-4.4.55.git diff --git a/drivers/staging/speakup/speakup_dectlk.c b/drivers/staging/speakup/speakup_dectlk.c index 0dd2eb96cb28..15fdec323a70 100644 --- a/drivers/staging/speakup/speakup_dectlk.c +++ b/drivers/staging/speakup/speakup_dectlk.c @@ -216,9 +216,9 @@ static void do_catch_up(struct spk_synth *synth) jiffy_delta = spk_get_var(JIFFY); delay_time = spk_get_var(DELAY); - spk_lock(flags); + spin_lock_irqsave(&speakup_info.spinlock, flags); jiffy_delta_val = jiffy_delta->u.n.value; - spk_unlock(flags); + spin_unlock_irqrestore(&speakup_info.spinlock, flags); jiff_max = jiffies + jiffy_delta_val; while (!kthread_should_stop()) { @@ -234,22 +234,22 @@ static void do_catch_up(struct spk_synth *synth) is_flushing = 0; spin_unlock_irqrestore(&flush_lock, flags); - spk_lock(flags); + spin_lock_irqsave(&speakup_info.spinlock, flags); if (speakup_info.flushing) { speakup_info.flushing = 0; - spk_unlock(flags); + spin_unlock_irqrestore(&speakup_info.spinlock, flags); synth->flush(synth); continue; } if (synth_buffer_empty()) { - spk_unlock(flags); + spin_unlock_irqrestore(&speakup_info.spinlock, flags); break; } ch = synth_buffer_peek(); set_current_state(TASK_INTERRUPTIBLE); delay_time_val = delay_time->u.n.value; synth_full_val = synth_full(); - spk_unlock(flags); + spin_unlock_irqrestore(&speakup_info.spinlock, flags); if (ch == '\n') ch = 0x0D; if (synth_full_val || !spk_serial_out(ch)) { @@ -257,9 +257,9 @@ static void do_catch_up(struct spk_synth *synth) continue; } set_current_state(TASK_RUNNING); - spk_lock(flags); + spin_lock_irqsave(&speakup_info.spinlock, flags); synth_buffer_getc(); - spk_unlock(flags); + spin_unlock_irqrestore(&speakup_info.spinlock, flags); if (ch == '[') in_escape = 1; else if (ch == ']') @@ -270,10 +270,10 @@ static void do_catch_up(struct spk_synth *synth) if (jiffies >= jiff_max) { if (!in_escape) spk_serial_out(PROCSPEECH); - spk_lock(flags); + spin_lock_irqsave(&speakup_info.spinlock, flags); jiffy_delta_val = jiffy_delta->u.n.value; delay_time_val = delay_time->u.n.value; - spk_unlock(flags); + spin_unlock_irqrestore(&speakup_info.spinlock, flags); schedule_timeout(msecs_to_jiffies (delay_time_val)); jiff_max = jiffies + jiffy_delta_val;