diff options
author | Christos Margiolis <christos@FreeBSD.org> | 2025-04-29 14:00:22 +0000 |
---|---|---|
committer | Christos Margiolis <christos@FreeBSD.org> | 2025-04-29 14:00:22 +0000 |
commit | 578cbd03f7a53eb23b71b560f8816f84f5a1461b (patch) | |
tree | a5735e4f9afbdf53749f658fb5199ed9131eae85 | |
parent | 87e57632bf88b270f3f9a09f579372d3437aeb17 (diff) |
sound: Retire volch
volch is a variable used internally in dsp_ioctl_channel() which
corresponds to either priv->rdch or priv->wrch. As a result, priv->volch
is also a pointer to one of those two channels, but is also not used
anywhere outside dsp_ioctl_channel(). Since the operation of figuring
out which channel we want to operate on inside dsp_ioctl_channel() is
cheap enough, retire volch to avoid unnecessary complexity and
confusion.
While here, rename "volch" to just "ch".
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D50022
-rw-r--r-- | sys/dev/sound/pcm/dsp.c | 61 |
1 files changed, 27 insertions, 34 deletions
diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c index 9b174f4592f3..f1adcdbc5d70 100644 --- a/sys/dev/sound/pcm/dsp.c +++ b/sys/dev/sound/pcm/dsp.c @@ -52,7 +52,6 @@ struct dsp_cdevpriv { struct snddev_info *sc; struct pcm_channel *rdch; struct pcm_channel *wrch; - struct pcm_channel *volch; }; static int dsp_mmap_allow_prot_exec = 0; @@ -551,7 +550,7 @@ dsp_write(struct cdev *i_dev, struct uio *buf, int flag) } static int -dsp_ioctl_channel(struct dsp_cdevpriv *priv, struct pcm_channel *volch, +dsp_ioctl_channel(struct dsp_cdevpriv *priv, struct pcm_channel *ch, u_long cmd, caddr_t arg) { struct snddev_info *d; @@ -569,25 +568,19 @@ dsp_ioctl_channel(struct dsp_cdevpriv *priv, struct pcm_channel *volch, rdch = priv->rdch; wrch = priv->wrch; - /* No specific channel, look into cache */ - if (volch == NULL) - volch = priv->volch; - - /* Look harder */ - if (volch == NULL) { + if (ch == NULL) { if (j == SOUND_MIXER_RECLEV && rdch != NULL) - volch = rdch; + ch = rdch; else if (j == SOUND_MIXER_PCM && wrch != NULL) - volch = wrch; + ch = wrch; } - /* Final validation */ - if (volch == NULL) + if (ch == NULL) return (EINVAL); - CHN_LOCK(volch); - if (!(volch->feederflags & (1 << FEEDER_VOLUME))) { - CHN_UNLOCK(volch); + CHN_LOCK(ch); + if (!(ch->feederflags & (1 << FEEDER_VOLUME))) { + CHN_UNLOCK(ch); return (EINVAL); } @@ -595,28 +588,28 @@ dsp_ioctl_channel(struct dsp_cdevpriv *priv, struct pcm_channel *volch, case MIXER_WRITE(0): switch (j) { case SOUND_MIXER_MUTE: - if (volch->direction == PCMDIR_REC) { - chn_setmute_multi(volch, SND_VOL_C_PCM, (*(int *)arg & SOUND_MASK_RECLEV) != 0); + if (ch->direction == PCMDIR_REC) { + chn_setmute_multi(ch, SND_VOL_C_PCM, (*(int *)arg & SOUND_MASK_RECLEV) != 0); } else { - chn_setmute_multi(volch, SND_VOL_C_PCM, (*(int *)arg & SOUND_MASK_PCM) != 0); + chn_setmute_multi(ch, SND_VOL_C_PCM, (*(int *)arg & SOUND_MASK_PCM) != 0); } break; case SOUND_MIXER_PCM: - if (volch->direction != PCMDIR_PLAY) + if (ch->direction != PCMDIR_PLAY) break; left = *(int *)arg & 0x7f; right = ((*(int *)arg) >> 8) & 0x7f; center = (left + right) >> 1; - chn_setvolume_multi(volch, SND_VOL_C_PCM, + chn_setvolume_multi(ch, SND_VOL_C_PCM, left, right, center); break; case SOUND_MIXER_RECLEV: - if (volch->direction != PCMDIR_REC) + if (ch->direction != PCMDIR_REC) break; left = *(int *)arg & 0x7f; right = ((*(int *)arg) >> 8) & 0x7f; center = (left + right) >> 1; - chn_setvolume_multi(volch, SND_VOL_C_PCM, + chn_setvolume_multi(ch, SND_VOL_C_PCM, left, right, center); break; default: @@ -628,34 +621,34 @@ dsp_ioctl_channel(struct dsp_cdevpriv *priv, struct pcm_channel *volch, case MIXER_READ(0): switch (j) { case SOUND_MIXER_MUTE: - mute = CHN_GETMUTE(volch, SND_VOL_C_PCM, SND_CHN_T_FL) || - CHN_GETMUTE(volch, SND_VOL_C_PCM, SND_CHN_T_FR); - if (volch->direction == PCMDIR_REC) { + mute = CHN_GETMUTE(ch, SND_VOL_C_PCM, SND_CHN_T_FL) || + CHN_GETMUTE(ch, SND_VOL_C_PCM, SND_CHN_T_FR); + if (ch->direction == PCMDIR_REC) { *(int *)arg = mute << SOUND_MIXER_RECLEV; } else { *(int *)arg = mute << SOUND_MIXER_PCM; } break; case SOUND_MIXER_PCM: - if (volch->direction != PCMDIR_PLAY) + if (ch->direction != PCMDIR_PLAY) break; - *(int *)arg = CHN_GETVOLUME(volch, + *(int *)arg = CHN_GETVOLUME(ch, SND_VOL_C_PCM, SND_CHN_T_FL); - *(int *)arg |= CHN_GETVOLUME(volch, + *(int *)arg |= CHN_GETVOLUME(ch, SND_VOL_C_PCM, SND_CHN_T_FR) << 8; break; case SOUND_MIXER_RECLEV: - if (volch->direction != PCMDIR_REC) + if (ch->direction != PCMDIR_REC) break; - *(int *)arg = CHN_GETVOLUME(volch, + *(int *)arg = CHN_GETVOLUME(ch, SND_VOL_C_PCM, SND_CHN_T_FL); - *(int *)arg |= CHN_GETVOLUME(volch, + *(int *)arg |= CHN_GETVOLUME(ch, SND_VOL_C_PCM, SND_CHN_T_FR) << 8; break; case SOUND_MIXER_DEVMASK: case SOUND_MIXER_CAPS: case SOUND_MIXER_STEREODEVS: - if (volch->direction == PCMDIR_REC) + if (ch->direction == PCMDIR_REC) *(int *)arg = SOUND_MASK_RECLEV; else *(int *)arg = SOUND_MASK_PCM; @@ -669,7 +662,7 @@ dsp_ioctl_channel(struct dsp_cdevpriv *priv, struct pcm_channel *volch, default: break; } - CHN_UNLOCK(volch); + CHN_UNLOCK(ch); return (0); } @@ -703,7 +696,7 @@ dsp_ioctl(struct cdev *i_dev, u_long cmd, caddr_t arg, int mode, PCM_GIANT_EXIT(d); return (0); } - ret = dsp_ioctl_channel(priv, priv->volch, cmd, arg); + ret = dsp_ioctl_channel(priv, NULL, cmd, arg); if (ret != -1) { PCM_GIANT_EXIT(d); return (ret); |