[PATCH] ALSA/ASoC: use assign_bit() where applicable
From: Peng Fan (OSS)
Date: Fri Sep 18 2026 - 11:03:56 EST
From: Peng Fan <peng.fan@xxxxxxx>
Convert open-coded if/else with set_bit/clear_bit and their
non-atomic __set_bit/__clear_bit variants to the assign_bit/__assign_bit
API.
Done with Coccinelle semantic patch:
// set_bit -> clear_bit => assign_bit
@@
expression cond, bit, addr;
@@
-if (cond)
- set_bit(bit, addr);
-else
- clear_bit(bit, addr);
+assign_bit(bit, addr, cond);
// clear_bit -> set_bit => assign_bit
@@
expression cond, bit, addr;
@@
-if (cond)
- clear_bit(bit, addr);
-else
- set_bit(bit, addr);
+assign_bit(bit, addr, !cond);
// __set_bit -> __clear_bit => __assign_bit
@@
expression cond, bit, addr;
@@
-if (cond)
- __set_bit(bit, addr);
-else
- __clear_bit(bit, addr);
+__assign_bit(bit, addr, cond);
// __clear_bit -> __set_bit => __assign_bit
@@
expression cond, bit, addr;
@@
-if (cond)
- __clear_bit(bit, addr);
-else
- __set_bit(bit, addr);
+__assign_bit(bit, addr, !cond);
Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
---
sound/drivers/serial-generic.c | 10 ++--------
sound/hda/core/component.c | 5 +----
sound/hda/core/controller.c | 5 +----
sound/soc/codecs/tas675x.c | 10 ++--------
sound/usb/midi.c | 5 +----
5 files changed, 7 insertions(+), 28 deletions(-)
diff --git a/sound/drivers/serial-generic.c b/sound/drivers/serial-generic.c
index 766206c6ca75..8ba5e35af4a1 100644
--- a/sound/drivers/serial-generic.c
+++ b/sound/drivers/serial-generic.c
@@ -183,10 +183,7 @@ static void snd_serial_generic_input_trigger(struct snd_rawmidi_substream *subst
{
struct snd_serial_generic *drvdata = substream->rmidi->card->private_data;
- if (up)
- set_bit(SERIAL_MODE_INPUT_TRIGGERED, &drvdata->filemode);
- else
- clear_bit(SERIAL_MODE_INPUT_TRIGGERED, &drvdata->filemode);
+ assign_bit(SERIAL_MODE_INPUT_TRIGGERED, &drvdata->filemode, up);
}
static int snd_serial_generic_output_open(struct snd_rawmidi_substream *substream)
@@ -230,10 +227,7 @@ static void snd_serial_generic_output_trigger(struct snd_rawmidi_substream *subs
{
struct snd_serial_generic *drvdata = substream->rmidi->card->private_data;
- if (up)
- set_bit(SERIAL_MODE_OUTPUT_TRIGGERED, &drvdata->filemode);
- else
- clear_bit(SERIAL_MODE_OUTPUT_TRIGGERED, &drvdata->filemode);
+ assign_bit(SERIAL_MODE_OUTPUT_TRIGGERED, &drvdata->filemode, up);
if (up)
snd_serial_generic_tx_wakeup(drvdata);
diff --git a/sound/hda/core/component.c b/sound/hda/core/component.c
index 04755903880e..83b31186b027 100644
--- a/sound/hda/core/component.c
+++ b/sound/hda/core/component.c
@@ -70,10 +70,7 @@ void snd_hdac_display_power(struct hdac_bus *bus, unsigned int idx, bool enable)
dev_dbg(bus->dev, "display power %s\n", str_enable_disable(enable));
guard(mutex)(&bus->lock);
- if (enable)
- set_bit(idx, &bus->display_power_status);
- else
- clear_bit(idx, &bus->display_power_status);
+ assign_bit(idx, &bus->display_power_status, enable);
if (!acomp || !acomp->ops)
return;
diff --git a/sound/hda/core/controller.c b/sound/hda/core/controller.c
index 78855ac357c6..e8d40c24ed00 100644
--- a/sound/hda/core/controller.c
+++ b/sound/hda/core/controller.c
@@ -781,9 +781,6 @@ EXPORT_SYMBOL_GPL(snd_hdac_bus_free_stream_pages);
*/
void snd_hdac_bus_link_power(struct hdac_device *codec, bool enable)
{
- if (enable)
- set_bit(codec->addr, &codec->bus->codec_powered);
- else
- clear_bit(codec->addr, &codec->bus->codec_powered);
+ assign_bit(codec->addr, &codec->bus->codec_powered, enable);
}
EXPORT_SYMBOL_GPL(snd_hdac_bus_link_power);
diff --git a/sound/soc/codecs/tas675x.c b/sound/soc/codecs/tas675x.c
index 404706b62156..82eeaceb1dac 100644
--- a/sound/soc/codecs/tas675x.c
+++ b/sound/soc/codecs/tas675x.c
@@ -1379,10 +1379,7 @@ static int tas675x_mute_stream(struct snd_soc_dai *dai, int mute, int direction)
int ret;
if (direction == SNDRV_PCM_STREAM_CAPTURE) {
- if (mute)
- clear_bit(dai->id, &tas->active_capture_dais);
- else
- set_bit(dai->id, &tas->active_capture_dais);
+ assign_bit(dai->id, &tas->active_capture_dais, !mute);
return 0;
}
@@ -1391,10 +1388,7 @@ static int tas675x_mute_stream(struct snd_soc_dai *dai, int mute, int direction)
* The TAS675x has two playback DAIs (main audio and LLP).
* Only transition to SLEEP when ALL are muted.
*/
- if (mute)
- clear_bit(dai->id, &tas->active_playback_dais);
- else
- set_bit(dai->id, &tas->active_playback_dais);
+ assign_bit(dai->id, &tas->active_playback_dais, !mute);
/* Last playback stream */
if (mute && !READ_ONCE(tas->active_playback_dais)) {
diff --git a/sound/usb/midi.c b/sound/usb/midi.c
index 353217b3629b..0480a9b89e8f 100644
--- a/sound/usb/midi.c
+++ b/sound/usb/midi.c
@@ -1282,10 +1282,7 @@ static void snd_usbmidi_input_trigger(struct snd_rawmidi_substream *substream,
{
struct snd_usb_midi *umidi = substream->rmidi->private_data;
- if (up)
- set_bit(substream->number, &umidi->input_triggered);
- else
- clear_bit(substream->number, &umidi->input_triggered);
+ assign_bit(substream->number, &umidi->input_triggered, up);
}
static const struct snd_rawmidi_ops snd_usbmidi_output_ops = {
--
2.51.0