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

ALSA: rme32: 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-50-tiwai@suse.de

+56 -96
+56 -96
sound/pci/rme32.c
··· 646 646 runtime->dma_bytes = RME32_BUFFER_SIZE; 647 647 } 648 648 649 - spin_lock_irq(&rme32->lock); 649 + guard(spinlock_irq)(&rme32->lock); 650 650 rate = 0; 651 651 if (rme32->rcreg & RME32_RCR_KMODE) 652 652 rate = snd_rme32_capture_getrate(rme32, &dummy); 653 653 if (rate > 0) { 654 654 /* AutoSync */ 655 - if ((int)params_rate(params) != rate) { 656 - spin_unlock_irq(&rme32->lock); 655 + if ((int)params_rate(params) != rate) 657 656 return -EIO; 658 - } 659 657 } else { 660 658 err = snd_rme32_playback_setrate(rme32, params_rate(params)); 661 - if (err < 0) { 662 - spin_unlock_irq(&rme32->lock); 659 + if (err < 0) 663 660 return err; 664 - } 665 661 } 666 662 err = snd_rme32_setformat(rme32, params_format(params)); 667 - if (err < 0) { 668 - spin_unlock_irq(&rme32->lock); 663 + if (err < 0) 669 664 return err; 670 - } 671 665 672 666 snd_rme32_setframelog(rme32, params_channels(params), 1); 673 667 if (rme32->capture_periodsize != 0) { 674 - if (params_period_size(params) << rme32->playback_frlog != rme32->capture_periodsize) { 675 - spin_unlock_irq(&rme32->lock); 668 + if (params_period_size(params) << rme32->playback_frlog != rme32->capture_periodsize) 676 669 return -EBUSY; 677 - } 678 670 } 679 671 rme32->playback_periodsize = params_period_size(params) << rme32->playback_frlog; 680 672 /* S/PDIF setup */ ··· 675 683 rme32->wcreg |= rme32->wcreg_spdif_stream; 676 684 writel(rme32->wcreg, rme32->iobase + RME32_IO_CONTROL_REGISTER); 677 685 } 678 - spin_unlock_irq(&rme32->lock); 679 686 680 687 return 0; 681 688 } ··· 694 703 runtime->dma_bytes = RME32_BUFFER_SIZE; 695 704 } 696 705 697 - spin_lock_irq(&rme32->lock); 706 + guard(spinlock_irq)(&rme32->lock); 698 707 /* enable AutoSync for record-preparing */ 699 708 rme32->wcreg |= RME32_WCR_AUTOSYNC; 700 709 writel(rme32->wcreg, rme32->iobase + RME32_IO_CONTROL_REGISTER); 701 710 702 711 err = snd_rme32_setformat(rme32, params_format(params)); 703 - if (err < 0) { 704 - spin_unlock_irq(&rme32->lock); 712 + if (err < 0) 705 713 return err; 706 - } 707 714 err = snd_rme32_playback_setrate(rme32, params_rate(params)); 708 - if (err < 0) { 709 - spin_unlock_irq(&rme32->lock); 715 + if (err < 0) 710 716 return err; 711 - } 712 717 rate = snd_rme32_capture_getrate(rme32, &isadat); 713 718 if (rate > 0) { 714 - if ((int)params_rate(params) != rate) { 715 - spin_unlock_irq(&rme32->lock); 719 + if ((int)params_rate(params) != rate) 716 720 return -EIO; 717 - } 718 721 if ((isadat && runtime->hw.channels_min == 2) || 719 - (!isadat && runtime->hw.channels_min == 8)) { 720 - spin_unlock_irq(&rme32->lock); 722 + (!isadat && runtime->hw.channels_min == 8)) 721 723 return -EIO; 722 - } 723 724 } 724 725 /* AutoSync off for recording */ 725 726 rme32->wcreg &= ~RME32_WCR_AUTOSYNC; ··· 720 737 snd_rme32_setframelog(rme32, params_channels(params), 0); 721 738 if (rme32->playback_periodsize != 0) { 722 739 if (params_period_size(params) << rme32->capture_frlog != 723 - rme32->playback_periodsize) { 724 - spin_unlock_irq(&rme32->lock); 740 + rme32->playback_periodsize) 725 741 return -EBUSY; 726 - } 727 742 } 728 743 rme32->capture_periodsize = 729 744 params_period_size(params) << rme32->capture_frlog; 730 - spin_unlock_irq(&rme32->lock); 731 745 732 746 return 0; 733 747 } ··· 804 824 805 825 snd_pcm_set_sync(substream); 806 826 807 - spin_lock_irq(&rme32->lock); 808 - if (rme32->playback_substream != NULL) { 809 - spin_unlock_irq(&rme32->lock); 810 - return -EBUSY; 827 + scoped_guard(spinlock_irq, &rme32->lock) { 828 + if (rme32->playback_substream != NULL) 829 + return -EBUSY; 830 + rme32->wcreg &= ~RME32_WCR_ADAT; 831 + writel(rme32->wcreg, rme32->iobase + RME32_IO_CONTROL_REGISTER); 832 + rme32->playback_substream = substream; 811 833 } 812 - rme32->wcreg &= ~RME32_WCR_ADAT; 813 - writel(rme32->wcreg, rme32->iobase + RME32_IO_CONTROL_REGISTER); 814 - rme32->playback_substream = substream; 815 - spin_unlock_irq(&rme32->lock); 816 834 817 835 if (rme32->fullduplex_mode) 818 836 runtime->hw = snd_rme32_spdif_fd_info; ··· 847 869 848 870 snd_pcm_set_sync(substream); 849 871 850 - spin_lock_irq(&rme32->lock); 851 - if (rme32->capture_substream != NULL) { 852 - spin_unlock_irq(&rme32->lock); 853 - return -EBUSY; 854 - } 855 - rme32->capture_substream = substream; 856 - spin_unlock_irq(&rme32->lock); 872 + scoped_guard(spinlock_irq, &rme32->lock) { 873 + if (rme32->capture_substream != NULL) 874 + return -EBUSY; 875 + rme32->capture_substream = substream; 876 + } 857 877 858 878 if (rme32->fullduplex_mode) 859 879 runtime->hw = snd_rme32_spdif_fd_info; ··· 885 909 886 910 snd_pcm_set_sync(substream); 887 911 888 - spin_lock_irq(&rme32->lock); 889 - if (rme32->playback_substream != NULL) { 890 - spin_unlock_irq(&rme32->lock); 891 - return -EBUSY; 892 - } 893 - rme32->wcreg |= RME32_WCR_ADAT; 894 - writel(rme32->wcreg, rme32->iobase + RME32_IO_CONTROL_REGISTER); 895 - rme32->playback_substream = substream; 896 - spin_unlock_irq(&rme32->lock); 912 + scoped_guard(spinlock_irq, &rme32->lock) { 913 + if (rme32->playback_substream != NULL) 914 + return -EBUSY; 915 + rme32->wcreg |= RME32_WCR_ADAT; 916 + writel(rme32->wcreg, rme32->iobase + RME32_IO_CONTROL_REGISTER); 917 + rme32->playback_substream = substream; 918 + } 897 919 898 920 if (rme32->fullduplex_mode) 899 921 runtime->hw = snd_rme32_adat_fd_info; ··· 934 960 935 961 snd_pcm_set_sync(substream); 936 962 937 - spin_lock_irq(&rme32->lock); 938 - if (rme32->capture_substream != NULL) { 939 - spin_unlock_irq(&rme32->lock); 940 - return -EBUSY; 941 - } 942 - rme32->capture_substream = substream; 943 - spin_unlock_irq(&rme32->lock); 963 + scoped_guard(spinlock_irq, &rme32->lock) { 964 + if (rme32->capture_substream != NULL) 965 + spin_unlock_irq(&rme32->lock); 966 + rme32->capture_substream = substream; 967 + } 944 968 945 969 snd_rme32_set_buffer_constraint(rme32, runtime); 946 970 return 0; ··· 949 977 struct rme32 *rme32 = snd_pcm_substream_chip(substream); 950 978 int spdif = 0; 951 979 952 - spin_lock_irq(&rme32->lock); 953 - rme32->playback_substream = NULL; 954 - rme32->playback_periodsize = 0; 955 - spdif = (rme32->wcreg & RME32_WCR_ADAT) == 0; 956 - spin_unlock_irq(&rme32->lock); 980 + scoped_guard(spinlock_irq, &rme32->lock) { 981 + rme32->playback_substream = NULL; 982 + rme32->playback_periodsize = 0; 983 + spdif = (rme32->wcreg & RME32_WCR_ADAT) == 0; 984 + } 957 985 if (spdif) { 958 986 rme32->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; 959 987 snd_ctl_notify(rme32->card, SNDRV_CTL_EVENT_MASK_VALUE | ··· 967 995 { 968 996 struct rme32 *rme32 = snd_pcm_substream_chip(substream); 969 997 970 - spin_lock_irq(&rme32->lock); 998 + guard(spinlock_irq)(&rme32->lock); 971 999 rme32->capture_substream = NULL; 972 1000 rme32->capture_periodsize = 0; 973 - spin_unlock_irq(&rme32->lock); 974 1001 return 0; 975 1002 } 976 1003 ··· 977 1006 { 978 1007 struct rme32 *rme32 = snd_pcm_substream_chip(substream); 979 1008 980 - spin_lock_irq(&rme32->lock); 1009 + guard(spinlock_irq)(&rme32->lock); 981 1010 if (rme32->fullduplex_mode) { 982 1011 memset(&rme32->playback_pcm, 0, sizeof(rme32->playback_pcm)); 983 1012 rme32->playback_pcm.hw_buffer_size = RME32_BUFFER_SIZE; ··· 988 1017 if (rme32->wcreg & RME32_WCR_SEL) 989 1018 rme32->wcreg &= ~RME32_WCR_MUTE; 990 1019 writel(rme32->wcreg, rme32->iobase + RME32_IO_CONTROL_REGISTER); 991 - spin_unlock_irq(&rme32->lock); 992 1020 return 0; 993 1021 } 994 1022 ··· 995 1025 { 996 1026 struct rme32 *rme32 = snd_pcm_substream_chip(substream); 997 1027 998 - spin_lock_irq(&rme32->lock); 1028 + guard(spinlock_irq)(&rme32->lock); 999 1029 if (rme32->fullduplex_mode) { 1000 1030 memset(&rme32->capture_pcm, 0, sizeof(rme32->capture_pcm)); 1001 1031 rme32->capture_pcm.hw_buffer_size = RME32_BUFFER_SIZE; ··· 1004 1034 } else { 1005 1035 writel(0, rme32->iobase + RME32_IO_RESET_POS); 1006 1036 } 1007 - spin_unlock_irq(&rme32->lock); 1008 1037 return 0; 1009 1038 } 1010 1039 ··· 1013 1044 struct rme32 *rme32 = snd_pcm_substream_chip(substream); 1014 1045 struct snd_pcm_substream *s; 1015 1046 1016 - spin_lock(&rme32->lock); 1047 + guard(spinlock)(&rme32->lock); 1017 1048 snd_pcm_group_for_each_entry(s, substream) { 1018 1049 if (s != rme32->playback_substream && 1019 1050 s != rme32->capture_substream) ··· 1057 1088 snd_rme32_pcm_start(rme32, 1); 1058 1089 break; 1059 1090 } 1060 - spin_unlock(&rme32->lock); 1061 1091 return 0; 1062 1092 } 1063 1093 ··· 1092 1124 1093 1125 rec = &rme32->playback_pcm; 1094 1126 cprec = &rme32->capture_pcm; 1095 - spin_lock(&rme32->lock); 1096 - rec->hw_queue_size = RME32_BUFFER_SIZE; 1097 - if (rme32->running & (1 << SNDRV_PCM_STREAM_CAPTURE)) 1098 - rec->hw_queue_size -= cprec->hw_ready; 1099 - spin_unlock(&rme32->lock); 1127 + scoped_guard(spinlock, &rme32->lock) { 1128 + rec->hw_queue_size = RME32_BUFFER_SIZE; 1129 + if (rme32->running & (1 << SNDRV_PCM_STREAM_CAPTURE)) 1130 + rec->hw_queue_size -= cprec->hw_ready; 1131 + } 1100 1132 return snd_pcm_indirect_playback_transfer(substream, rec, 1101 1133 snd_rme32_pb_trans_copy); 1102 1134 } ··· 1481 1513 { 1482 1514 struct rme32 *rme32 = snd_kcontrol_chip(kcontrol); 1483 1515 1484 - spin_lock_irq(&rme32->lock); 1516 + guard(spinlock_irq)(&rme32->lock); 1485 1517 ucontrol->value.integer.value[0] = 1486 1518 rme32->wcreg & RME32_WCR_SEL ? 0 : 1; 1487 - spin_unlock_irq(&rme32->lock); 1488 1519 return 0; 1489 1520 } 1490 1521 static int ··· 1495 1528 int change; 1496 1529 1497 1530 val = ucontrol->value.integer.value[0] ? 0 : RME32_WCR_SEL; 1498 - spin_lock_irq(&rme32->lock); 1531 + guard(spinlock_irq)(&rme32->lock); 1499 1532 val = (rme32->wcreg & ~RME32_WCR_SEL) | val; 1500 1533 change = val != rme32->wcreg; 1501 1534 if (ucontrol->value.integer.value[0]) ··· 1504 1537 val |= RME32_WCR_MUTE; 1505 1538 rme32->wcreg = val; 1506 1539 writel(val, rme32->iobase + RME32_IO_CONTROL_REGISTER); 1507 - spin_unlock_irq(&rme32->lock); 1508 1540 return change; 1509 1541 } 1510 1542 ··· 1538 1572 struct rme32 *rme32 = snd_kcontrol_chip(kcontrol); 1539 1573 unsigned int items = 3; 1540 1574 1541 - spin_lock_irq(&rme32->lock); 1575 + guard(spinlock_irq)(&rme32->lock); 1542 1576 ucontrol->value.enumerated.item[0] = snd_rme32_getinputtype(rme32); 1543 1577 1544 1578 switch (rme32->pci->device) { ··· 1557 1591 ucontrol->value.enumerated.item[0] = items - 1; 1558 1592 } 1559 1593 1560 - spin_unlock_irq(&rme32->lock); 1561 1594 return 0; 1562 1595 } 1563 1596 static int ··· 1581 1616 } 1582 1617 val = ucontrol->value.enumerated.item[0] % items; 1583 1618 1584 - spin_lock_irq(&rme32->lock); 1619 + guard(spinlock_irq)(&rme32->lock); 1585 1620 change = val != (unsigned int)snd_rme32_getinputtype(rme32); 1586 1621 snd_rme32_setinputtype(rme32, val); 1587 - spin_unlock_irq(&rme32->lock); 1588 1622 return change; 1589 1623 } 1590 1624 ··· 1604 1640 { 1605 1641 struct rme32 *rme32 = snd_kcontrol_chip(kcontrol); 1606 1642 1607 - spin_lock_irq(&rme32->lock); 1643 + guard(spinlock_irq)(&rme32->lock); 1608 1644 ucontrol->value.enumerated.item[0] = snd_rme32_getclockmode(rme32); 1609 - spin_unlock_irq(&rme32->lock); 1610 1645 return 0; 1611 1646 } 1612 1647 static int ··· 1617 1654 int change; 1618 1655 1619 1656 val = ucontrol->value.enumerated.item[0] % 3; 1620 - spin_lock_irq(&rme32->lock); 1657 + guard(spinlock_irq)(&rme32->lock); 1621 1658 change = val != (unsigned int)snd_rme32_getclockmode(rme32); 1622 1659 snd_rme32_setclockmode(rme32, val); 1623 - spin_unlock_irq(&rme32->lock); 1624 1660 return change; 1625 1661 } 1626 1662 ··· 1669 1707 u32 val; 1670 1708 1671 1709 val = snd_rme32_convert_from_aes(&ucontrol->value.iec958); 1672 - spin_lock_irq(&rme32->lock); 1710 + guard(spinlock_irq)(&rme32->lock); 1673 1711 change = val != rme32->wcreg_spdif; 1674 1712 rme32->wcreg_spdif = val; 1675 - spin_unlock_irq(&rme32->lock); 1676 1713 return change; 1677 1714 } 1678 1715 ··· 1703 1742 u32 val; 1704 1743 1705 1744 val = snd_rme32_convert_from_aes(&ucontrol->value.iec958); 1706 - spin_lock_irq(&rme32->lock); 1745 + guard(spinlock_irq)(&rme32->lock); 1707 1746 change = val != rme32->wcreg_spdif_stream; 1708 1747 rme32->wcreg_spdif_stream = val; 1709 1748 rme32->wcreg &= ~(RME32_WCR_PRO | RME32_WCR_EMP); 1710 1749 rme32->wcreg |= val; 1711 1750 writel(rme32->wcreg, rme32->iobase + RME32_IO_CONTROL_REGISTER); 1712 - spin_unlock_irq(&rme32->lock); 1713 1751 return change; 1714 1752 } 1715 1753