Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: parisc: Use guard() for spin locks

Clean up the code using guard() for spin locks.

Merely code refactoring, and no behavior change.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

+39 -60
+39 -60
sound/parisc/harmony.c
··· 140 140 static void 141 141 harmony_mute(struct snd_harmony *h) 142 142 { 143 - unsigned long flags; 144 - 145 - spin_lock_irqsave(&h->mixer_lock, flags); 143 + guard(spinlock_irqsave)(&h->mixer_lock); 146 144 harmony_wait_for_control(h); 147 145 harmony_write(h, HARMONY_GAINCTL, HARMONY_GAIN_SILENCE); 148 - spin_unlock_irqrestore(&h->mixer_lock, flags); 149 146 } 150 147 151 148 static void 152 149 harmony_unmute(struct snd_harmony *h) 153 150 { 154 - unsigned long flags; 155 - 156 - spin_lock_irqsave(&h->mixer_lock, flags); 151 + guard(spinlock_irqsave)(&h->mixer_lock); 157 152 harmony_wait_for_control(h); 158 153 harmony_write(h, HARMONY_GAINCTL, h->st.gain); 159 - spin_unlock_irqrestore(&h->mixer_lock, flags); 160 154 } 161 155 162 156 static void 163 157 harmony_set_control(struct snd_harmony *h) 164 158 { 165 159 u32 ctrl; 166 - unsigned long flags; 167 160 168 - spin_lock_irqsave(&h->lock, flags); 161 + guard(spinlock_irqsave)(&h->lock); 169 162 170 163 ctrl = (HARMONY_CNTL_C | 171 164 (h->st.format << 6) | ··· 167 174 168 175 harmony_wait_for_control(h); 169 176 harmony_write(h, HARMONY_CNTL, ctrl); 170 - 171 - spin_unlock_irqrestore(&h->lock, flags); 172 177 } 173 178 174 179 static irqreturn_t ··· 175 184 u32 dstatus; 176 185 struct snd_harmony *h = dev; 177 186 178 - spin_lock(&h->lock); 179 - harmony_disable_interrupts(h); 180 - harmony_wait_for_control(h); 181 - dstatus = harmony_read(h, HARMONY_DSTATUS); 182 - spin_unlock(&h->lock); 187 + scoped_guard(spinlock, &h->lock) { 188 + harmony_disable_interrupts(h); 189 + harmony_wait_for_control(h); 190 + dstatus = harmony_read(h, HARMONY_DSTATUS); 191 + } 183 192 184 193 if (dstatus & HARMONY_DSTATUS_PN) { 185 194 if (h->psubs && h->st.playing) { 186 - spin_lock(&h->lock); 187 - h->pbuf.buf += h->pbuf.count; /* PAGE_SIZE */ 188 - h->pbuf.buf %= h->pbuf.size; /* MAX_BUFS*PAGE_SIZE */ 195 + scoped_guard(spinlock, &h->lock) { 196 + h->pbuf.buf += h->pbuf.count; /* PAGE_SIZE */ 197 + h->pbuf.buf %= h->pbuf.size; /* MAX_BUFS*PAGE_SIZE */ 189 198 190 - harmony_write(h, HARMONY_PNXTADD, 191 - h->pbuf.addr + h->pbuf.buf); 192 - h->stats.play_intr++; 193 - spin_unlock(&h->lock); 199 + harmony_write(h, HARMONY_PNXTADD, 200 + h->pbuf.addr + h->pbuf.buf); 201 + h->stats.play_intr++; 202 + } 194 203 snd_pcm_period_elapsed(h->psubs); 195 204 } else { 196 - spin_lock(&h->lock); 197 - harmony_write(h, HARMONY_PNXTADD, h->sdma.addr); 198 - h->stats.silence_intr++; 199 - spin_unlock(&h->lock); 205 + scoped_guard(spinlock, &h->lock) { 206 + harmony_write(h, HARMONY_PNXTADD, h->sdma.addr); 207 + h->stats.silence_intr++; 208 + } 200 209 } 201 210 } 202 211 203 212 if (dstatus & HARMONY_DSTATUS_RN) { 204 213 if (h->csubs && h->st.capturing) { 205 - spin_lock(&h->lock); 206 - h->cbuf.buf += h->cbuf.count; 207 - h->cbuf.buf %= h->cbuf.size; 214 + scoped_guard(spinlock, &h->lock) { 215 + h->cbuf.buf += h->cbuf.count; 216 + h->cbuf.buf %= h->cbuf.size; 208 217 209 - harmony_write(h, HARMONY_RNXTADD, 210 - h->cbuf.addr + h->cbuf.buf); 211 - h->stats.rec_intr++; 212 - spin_unlock(&h->lock); 218 + harmony_write(h, HARMONY_RNXTADD, 219 + h->cbuf.addr + h->cbuf.buf); 220 + h->stats.rec_intr++; 221 + } 213 222 snd_pcm_period_elapsed(h->csubs); 214 223 } else { 215 - spin_lock(&h->lock); 216 - harmony_write(h, HARMONY_RNXTADD, h->gdma.addr); 217 - h->stats.graveyard_intr++; 218 - spin_unlock(&h->lock); 224 + scoped_guard(spinlock, &h->lock) { 225 + harmony_write(h, HARMONY_RNXTADD, h->gdma.addr); 226 + h->stats.graveyard_intr++; 227 + } 219 228 } 220 229 } 221 230 222 - spin_lock(&h->lock); 223 - harmony_enable_interrupts(h); 224 - spin_unlock(&h->lock); 231 + scoped_guard(spinlock, &h->lock) { 232 + harmony_enable_interrupts(h); 233 + } 225 234 226 235 return IRQ_HANDLED; 227 236 } ··· 288 297 if (h->st.capturing) 289 298 return -EBUSY; 290 299 291 - spin_lock(&h->lock); 300 + guard(spinlock)(&h->lock); 292 301 switch (cmd) { 293 302 case SNDRV_PCM_TRIGGER_START: 294 303 h->st.playing = 1; ··· 307 316 case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: 308 317 case SNDRV_PCM_TRIGGER_SUSPEND: 309 318 default: 310 - spin_unlock(&h->lock); 311 319 snd_BUG(); 312 320 return -EINVAL; 313 321 } 314 - spin_unlock(&h->lock); 315 322 316 323 return 0; 317 324 } ··· 322 333 if (h->st.playing) 323 334 return -EBUSY; 324 335 325 - spin_lock(&h->lock); 336 + guard(spinlock)(&h->lock); 326 337 switch (cmd) { 327 338 case SNDRV_PCM_TRIGGER_START: 328 339 h->st.capturing = 1; ··· 341 352 case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: 342 353 case SNDRV_PCM_TRIGGER_SUSPEND: 343 354 default: 344 - spin_unlock(&h->lock); 345 355 snd_BUG(); 346 356 return -EINVAL; 347 357 } 348 - spin_unlock(&h->lock); 349 358 350 359 return 0; 351 360 } ··· 661 674 int invert = (kc->private_value >> 24) & 0xff; 662 675 int left, right; 663 676 664 - spin_lock_irq(&h->mixer_lock); 677 + guard(spinlock_irq)(&h->mixer_lock); 665 678 666 679 left = (h->st.gain >> shift_left) & mask; 667 680 right = (h->st.gain >> shift_right) & mask; ··· 673 686 ucontrol->value.integer.value[0] = left; 674 687 if (shift_left != shift_right) 675 688 ucontrol->value.integer.value[1] = right; 676 - 677 - spin_unlock_irq(&h->mixer_lock); 678 689 679 690 return 0; 680 691 } ··· 689 704 int left, right; 690 705 int old_gain = h->st.gain; 691 706 692 - spin_lock_irq(&h->mixer_lock); 707 + guard(spinlock_irq)(&h->mixer_lock); 693 708 694 709 left = ucontrol->value.integer.value[0] & mask; 695 710 if (invert) ··· 707 722 708 723 snd_harmony_set_new_gain(h); 709 724 710 - spin_unlock_irq(&h->mixer_lock); 711 - 712 725 return h->st.gain != old_gain; 713 726 } 714 727 ··· 726 743 struct snd_harmony *h = snd_kcontrol_chip(kc); 727 744 int value; 728 745 729 - spin_lock_irq(&h->mixer_lock); 746 + guard(spinlock_irq)(&h->mixer_lock); 730 747 731 748 value = (h->st.gain >> HARMONY_GAIN_IS_SHIFT) & 1; 732 749 ucontrol->value.enumerated.item[0] = value; 733 - 734 - spin_unlock_irq(&h->mixer_lock); 735 750 736 751 return 0; 737 752 } ··· 742 761 int value; 743 762 int old_gain = h->st.gain; 744 763 745 - spin_lock_irq(&h->mixer_lock); 764 + guard(spinlock_irq)(&h->mixer_lock); 746 765 747 766 value = ucontrol->value.enumerated.item[0] & 1; 748 767 h->st.gain &= ~HARMONY_GAIN_IS_MASK; ··· 750 769 751 770 snd_harmony_set_new_gain(h); 752 771 753 - spin_unlock_irq(&h->mixer_lock); 754 - 755 772 return h->st.gain != old_gain; 756 773 } 757 774