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

ALSA: ens137x: Use guard() for mutex locks

Replace the manual mutex lock/unlock pairs with guard() for code
simplification.

Only code refactoring, and no behavior change.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20250829144342.4290-6-tiwai@suse.de

+10 -21
+6 -12
sound/pci/ak4531_codec.c
··· 77 77 int invert = (kcontrol->private_value >> 22) & 1; 78 78 int val; 79 79 80 - mutex_lock(&ak4531->reg_mutex); 80 + guard(mutex)(&ak4531->reg_mutex); 81 81 val = (ak4531->regs[reg] >> shift) & mask; 82 - mutex_unlock(&ak4531->reg_mutex); 83 82 if (invert) { 84 83 val = mask - val; 85 84 } ··· 101 102 val = mask - val; 102 103 } 103 104 val <<= shift; 104 - mutex_lock(&ak4531->reg_mutex); 105 + guard(mutex)(&ak4531->reg_mutex); 105 106 val = (ak4531->regs[reg] & ~(mask << shift)) | val; 106 107 change = val != ak4531->regs[reg]; 107 108 ak4531->write(ak4531, reg, ak4531->regs[reg] = val); 108 - mutex_unlock(&ak4531->reg_mutex); 109 109 return change; 110 110 } 111 111 ··· 144 146 int invert = (kcontrol->private_value >> 22) & 1; 145 147 int left, right; 146 148 147 - mutex_lock(&ak4531->reg_mutex); 149 + guard(mutex)(&ak4531->reg_mutex); 148 150 left = (ak4531->regs[left_reg] >> left_shift) & mask; 149 151 right = (ak4531->regs[right_reg] >> right_shift) & mask; 150 - mutex_unlock(&ak4531->reg_mutex); 151 152 if (invert) { 152 153 left = mask - left; 153 154 right = mask - right; ··· 176 179 } 177 180 left <<= left_shift; 178 181 right <<= right_shift; 179 - mutex_lock(&ak4531->reg_mutex); 182 + guard(mutex)(&ak4531->reg_mutex); 180 183 if (left_reg == right_reg) { 181 184 left = (ak4531->regs[left_reg] & ~((mask << left_shift) | (mask << right_shift))) | left | right; 182 185 change = left != ak4531->regs[left_reg]; ··· 188 191 ak4531->write(ak4531, left_reg, ak4531->regs[left_reg] = left); 189 192 ak4531->write(ak4531, right_reg, ak4531->regs[right_reg] = right); 190 193 } 191 - mutex_unlock(&ak4531->reg_mutex); 192 194 return change; 193 195 } 194 196 ··· 214 218 int left_shift = (kcontrol->private_value >> 16) & 0x0f; 215 219 int right_shift = (kcontrol->private_value >> 24) & 0x0f; 216 220 217 - mutex_lock(&ak4531->reg_mutex); 221 + guard(mutex)(&ak4531->reg_mutex); 218 222 ucontrol->value.integer.value[0] = (ak4531->regs[reg1] >> left_shift) & 1; 219 223 ucontrol->value.integer.value[1] = (ak4531->regs[reg2] >> left_shift) & 1; 220 224 ucontrol->value.integer.value[2] = (ak4531->regs[reg1] >> right_shift) & 1; 221 225 ucontrol->value.integer.value[3] = (ak4531->regs[reg2] >> right_shift) & 1; 222 - mutex_unlock(&ak4531->reg_mutex); 223 226 return 0; 224 227 } 225 228 ··· 232 237 int change; 233 238 int val1, val2; 234 239 235 - mutex_lock(&ak4531->reg_mutex); 240 + guard(mutex)(&ak4531->reg_mutex); 236 241 val1 = ak4531->regs[reg1] & ~((1 << left_shift) | (1 << right_shift)); 237 242 val2 = ak4531->regs[reg2] & ~((1 << left_shift) | (1 << right_shift)); 238 243 val1 |= (ucontrol->value.integer.value[0] & 1) << left_shift; ··· 242 247 change = val1 != ak4531->regs[reg1] || val2 != ak4531->regs[reg2]; 243 248 ak4531->write(ak4531, reg1, ak4531->regs[reg1] = val1); 244 249 ak4531->write(ak4531, reg2, ak4531->regs[reg2] = val2); 245 - mutex_unlock(&ak4531->reg_mutex); 246 250 return change; 247 251 } 248 252
+4 -9
sound/pci/ens1370.c
··· 596 596 unsigned int t, x, flag; 597 597 598 598 flag = is_ev1938(ensoniq) ? EV_1938_CODEC_MAGIC : 0; 599 - mutex_lock(&ensoniq->src_mutex); 599 + guard(mutex)(&ensoniq->src_mutex); 600 600 for (t = 0; t < POLL_COUNT; t++) { 601 601 if (!(inl(ES_REG(ensoniq, 1371_CODEC)) & ES_1371_CODEC_WIP)) { 602 602 /* save the current state for latter */ ··· 622 622 /* restore SRC reg */ 623 623 snd_es1371_wait_src_ready(ensoniq); 624 624 outl(x, ES_REG(ensoniq, 1371_SMPRATE)); 625 - mutex_unlock(&ensoniq->src_mutex); 626 625 return; 627 626 } 628 627 } 629 - mutex_unlock(&ensoniq->src_mutex); 630 628 dev_err(ensoniq->card->dev, "codec write timeout at 0x%lx [0x%x]\n", 631 629 ES_REG(ensoniq, 1371_CODEC), inl(ES_REG(ensoniq, 1371_CODEC))); 632 630 } ··· 711 713 { 712 714 unsigned int n, truncm, freq; 713 715 714 - mutex_lock(&ensoniq->src_mutex); 716 + guard(mutex)(&ensoniq->src_mutex); 715 717 n = rate / 3000; 716 718 if ((1 << n) & ((1 << 15) | (1 << 13) | (1 << 11) | (1 << 9))) 717 719 n--; ··· 735 737 snd_es1371_src_write(ensoniq, ES_SMPREG_ADC + ES_SMPREG_VFREQ_FRAC, freq & 0x7fff); 736 738 snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_ADC, n << 8); 737 739 snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_ADC + 1, n << 8); 738 - mutex_unlock(&ensoniq->src_mutex); 739 740 } 740 741 741 742 static void snd_es1371_dac1_rate(struct ensoniq * ensoniq, unsigned int rate) 742 743 { 743 744 unsigned int freq, r; 744 745 745 - mutex_lock(&ensoniq->src_mutex); 746 + guard(mutex)(&ensoniq->src_mutex); 746 747 freq = DIV_ROUND_CLOSEST(rate << 15, 3000); 747 748 r = (snd_es1371_wait_src_ready(ensoniq) & (ES_1371_SRC_DISABLE | 748 749 ES_1371_DIS_P2 | ES_1371_DIS_R1)) | ··· 755 758 r = (snd_es1371_wait_src_ready(ensoniq) & (ES_1371_SRC_DISABLE | 756 759 ES_1371_DIS_P2 | ES_1371_DIS_R1)); 757 760 outl(r, ES_REG(ensoniq, 1371_SMPRATE)); 758 - mutex_unlock(&ensoniq->src_mutex); 759 761 } 760 762 761 763 static void snd_es1371_dac2_rate(struct ensoniq * ensoniq, unsigned int rate) 762 764 { 763 765 unsigned int freq, r; 764 766 765 - mutex_lock(&ensoniq->src_mutex); 767 + guard(mutex)(&ensoniq->src_mutex); 766 768 freq = DIV_ROUND_CLOSEST(rate << 15, 3000); 767 769 r = (snd_es1371_wait_src_ready(ensoniq) & (ES_1371_SRC_DISABLE | 768 770 ES_1371_DIS_P1 | ES_1371_DIS_R1)) | ··· 776 780 r = (snd_es1371_wait_src_ready(ensoniq) & (ES_1371_SRC_DISABLE | 777 781 ES_1371_DIS_P1 | ES_1371_DIS_R1)); 778 782 outl(r, ES_REG(ensoniq, 1371_SMPRATE)); 779 - mutex_unlock(&ensoniq->src_mutex); 780 783 } 781 784 782 785 #endif /* CHIP1371 */