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

ALSA: fm801: 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>
Link: https://patch.msgid.link/20250829144342.4290-34-tiwai@suse.de

+30 -41
+30 -41
sound/pci/fm801.c
··· 279 279 unsigned short mask, unsigned short value) 280 280 { 281 281 int change; 282 - unsigned long flags; 283 282 unsigned short old, new; 284 283 285 - spin_lock_irqsave(&chip->reg_lock, flags); 284 + guard(spinlock_irqsave)(&chip->reg_lock); 286 285 old = fm801_ioread16(chip, reg); 287 286 new = (old & ~mask) | value; 288 287 change = old != new; 289 288 if (change) 290 289 fm801_iowrite16(chip, reg, new); 291 - spin_unlock_irqrestore(&chip->reg_lock, flags); 292 290 return change; 293 291 } 294 292 ··· 391 393 { 392 394 struct fm801 *chip = snd_pcm_substream_chip(substream); 393 395 394 - spin_lock(&chip->reg_lock); 396 + guard(spinlock)(&chip->reg_lock); 395 397 switch (cmd) { 396 398 case SNDRV_PCM_TRIGGER_START: 397 399 chip->ply_ctrl &= ~(FM801_BUF1_LAST | ··· 412 414 chip->ply_ctrl &= ~FM801_PAUSE; 413 415 break; 414 416 default: 415 - spin_unlock(&chip->reg_lock); 416 417 snd_BUG(); 417 418 return -EINVAL; 418 419 } 419 420 fm801_writew(chip, PLY_CTRL, chip->ply_ctrl); 420 - spin_unlock(&chip->reg_lock); 421 421 return 0; 422 422 } 423 423 ··· 424 428 { 425 429 struct fm801 *chip = snd_pcm_substream_chip(substream); 426 430 427 - spin_lock(&chip->reg_lock); 431 + guard(spinlock)(&chip->reg_lock); 428 432 switch (cmd) { 429 433 case SNDRV_PCM_TRIGGER_START: 430 434 chip->cap_ctrl &= ~(FM801_BUF1_LAST | ··· 445 449 chip->cap_ctrl &= ~FM801_PAUSE; 446 450 break; 447 451 default: 448 - spin_unlock(&chip->reg_lock); 449 452 snd_BUG(); 450 453 return -EINVAL; 451 454 } 452 455 fm801_writew(chip, CAP_CTRL, chip->cap_ctrl); 453 - spin_unlock(&chip->reg_lock); 454 456 return 0; 455 457 } 456 458 ··· 459 465 460 466 chip->ply_size = snd_pcm_lib_buffer_bytes(substream); 461 467 chip->ply_count = snd_pcm_lib_period_bytes(substream); 462 - spin_lock_irq(&chip->reg_lock); 468 + guard(spinlock_irq)(&chip->reg_lock); 463 469 chip->ply_ctrl &= ~(FM801_START | FM801_16BIT | 464 470 FM801_STEREO | FM801_RATE_MASK | 465 471 FM801_CHANNELS_MASK); ··· 481 487 fm801_writel(chip, PLY_BUF1, chip->ply_buffer); 482 488 fm801_writel(chip, PLY_BUF2, 483 489 chip->ply_buffer + (chip->ply_count % chip->ply_size)); 484 - spin_unlock_irq(&chip->reg_lock); 485 490 return 0; 486 491 } 487 492 ··· 491 498 492 499 chip->cap_size = snd_pcm_lib_buffer_bytes(substream); 493 500 chip->cap_count = snd_pcm_lib_period_bytes(substream); 494 - spin_lock_irq(&chip->reg_lock); 501 + guard(spinlock_irq)(&chip->reg_lock); 495 502 chip->cap_ctrl &= ~(FM801_START | FM801_16BIT | 496 503 FM801_STEREO | FM801_RATE_MASK); 497 504 if (snd_pcm_format_width(runtime->format) == 16) ··· 507 514 fm801_writel(chip, CAP_BUF1, chip->cap_buffer); 508 515 fm801_writel(chip, CAP_BUF2, 509 516 chip->cap_buffer + (chip->cap_count % chip->cap_size)); 510 - spin_unlock_irq(&chip->reg_lock); 511 517 return 0; 512 518 } 513 519 ··· 517 525 518 526 if (!(chip->ply_ctrl & FM801_START)) 519 527 return 0; 520 - spin_lock(&chip->reg_lock); 528 + guard(spinlock)(&chip->reg_lock); 521 529 ptr = chip->ply_pos + (chip->ply_count - 1) - fm801_readw(chip, PLY_COUNT); 522 530 if (fm801_readw(chip, IRQ_STATUS) & FM801_IRQ_PLAYBACK) { 523 531 ptr += chip->ply_count; 524 532 ptr %= chip->ply_size; 525 533 } 526 - spin_unlock(&chip->reg_lock); 527 534 return bytes_to_frames(substream->runtime, ptr); 528 535 } 529 536 ··· 533 542 534 543 if (!(chip->cap_ctrl & FM801_START)) 535 544 return 0; 536 - spin_lock(&chip->reg_lock); 545 + guard(spinlock)(&chip->reg_lock); 537 546 ptr = chip->cap_pos + (chip->cap_count - 1) - fm801_readw(chip, CAP_COUNT); 538 547 if (fm801_readw(chip, IRQ_STATUS) & FM801_IRQ_CAPTURE) { 539 548 ptr += chip->cap_count; 540 549 ptr %= chip->cap_size; 541 550 } 542 - spin_unlock(&chip->reg_lock); 543 551 return bytes_to_frames(substream->runtime, ptr); 544 552 } 545 553 ··· 555 565 /* ack first */ 556 566 fm801_writew(chip, IRQ_STATUS, status); 557 567 if (chip->pcm && (status & FM801_IRQ_PLAYBACK) && chip->playback_substream) { 558 - spin_lock(&chip->reg_lock); 559 - chip->ply_buf++; 560 - chip->ply_pos += chip->ply_count; 561 - chip->ply_pos %= chip->ply_size; 562 - tmp = chip->ply_pos + chip->ply_count; 563 - tmp %= chip->ply_size; 564 - if (chip->ply_buf & 1) 565 - fm801_writel(chip, PLY_BUF1, chip->ply_buffer + tmp); 566 - else 567 - fm801_writel(chip, PLY_BUF2, chip->ply_buffer + tmp); 568 - spin_unlock(&chip->reg_lock); 568 + scoped_guard(spinlock, &chip->reg_lock) { 569 + chip->ply_buf++; 570 + chip->ply_pos += chip->ply_count; 571 + chip->ply_pos %= chip->ply_size; 572 + tmp = chip->ply_pos + chip->ply_count; 573 + tmp %= chip->ply_size; 574 + if (chip->ply_buf & 1) 575 + fm801_writel(chip, PLY_BUF1, chip->ply_buffer + tmp); 576 + else 577 + fm801_writel(chip, PLY_BUF2, chip->ply_buffer + tmp); 578 + } 569 579 snd_pcm_period_elapsed(chip->playback_substream); 570 580 } 571 581 if (chip->pcm && (status & FM801_IRQ_CAPTURE) && chip->capture_substream) { 572 - spin_lock(&chip->reg_lock); 573 - chip->cap_buf++; 574 - chip->cap_pos += chip->cap_count; 575 - chip->cap_pos %= chip->cap_size; 576 - tmp = chip->cap_pos + chip->cap_count; 577 - tmp %= chip->cap_size; 578 - if (chip->cap_buf & 1) 579 - fm801_writel(chip, CAP_BUF1, chip->cap_buffer + tmp); 580 - else 581 - fm801_writel(chip, CAP_BUF2, chip->cap_buffer + tmp); 582 - spin_unlock(&chip->reg_lock); 582 + scoped_guard(spinlock, &chip->reg_lock) { 583 + chip->cap_buf++; 584 + chip->cap_pos += chip->cap_count; 585 + chip->cap_pos %= chip->cap_size; 586 + tmp = chip->cap_pos + chip->cap_count; 587 + tmp %= chip->cap_size; 588 + if (chip->cap_buf & 1) 589 + fm801_writel(chip, CAP_BUF1, chip->cap_buffer + tmp); 590 + else 591 + fm801_writel(chip, CAP_BUF2, chip->cap_buffer + tmp); 592 + } 583 593 snd_pcm_period_elapsed(chip->capture_substream); 584 594 } 585 595 if (chip->rmidi && (status & FM801_IRQ_MPU)) ··· 914 924 int invert = (kcontrol->private_value >> 24) & 0xff; 915 925 long *value = ucontrol->value.integer.value; 916 926 917 - spin_lock_irq(&chip->reg_lock); 927 + guard(spinlock_irq)(&chip->reg_lock); 918 928 value[0] = (fm801_ioread16(chip, reg) >> shift_left) & mask; 919 929 value[1] = (fm801_ioread16(chip, reg) >> shift_right) & mask; 920 - spin_unlock_irq(&chip->reg_lock); 921 930 if (invert) { 922 931 value[0] = mask - value[0]; 923 932 value[1] = mask - value[1];