[alsa-devel] [PATCH] snd-sbxfi: rename erroneous Master mixer control to "PCM Playback Volume".

Takashi Iwai tiwai at suse.de
Sun Oct 19 13:12:04 CEST 2008


At Sun, 19 Oct 2008 10:51:15 +0200,
=?UTF-8?Q?Vedran_Mileti=C4=87?= wrote:
> 
> Sorry to go off-topic, but there are lots of cards that don't have
> Master control. Would this qualify as a bug?

No, it's no bug.  Such hardware has really no master volume control
in design.


Takashi

> 
> 2008/10/19 Takashi Iwai <tiwai at suse.de>:
> > At Sat, 18 Oct 2008 20:42:24 -0500,
> > William Pitcock wrote:
> >>
> >> The OSS4-provided master mixer control is actually relative to EMU20K1 port
> >> volume settings. So, it should be named PCM. The Master mixer control will be
> >> shortly readded as a control which sets the master volume.
> >>
> >> Signed-off-by: William Pitcock <nenolod at sacredspiral.co.uk>
> >
> > I postpone this until you send the Master control addition.
> > Most apps requires Master control rather than PCM control, AFAIK.
> >
> >
> > Takashi
> >
> >> ---
> >>  sound/pci/sbxfi/sbxfi.c |   28 ++++++++++++++--------------
> >>  1 files changed, 14 insertions(+), 14 deletions(-)
> >>
> >> diff --git a/sound/pci/sbxfi/sbxfi.c b/sound/pci/sbxfi/sbxfi.c
> >> index c006278..3e99a97 100644
> >> --- a/sound/pci/sbxfi/sbxfi.c
> >> +++ b/sound/pci/sbxfi/sbxfi.c
> >> @@ -155,7 +155,7 @@ struct sbxfi {
> >>       int timer_reprogram;
> >>
> >>       unsigned int base_rate;
> >> -     int master_vol[2];
> >> +     int pcm_vol[2];
> >>       int capture_vol[2];
> >>       int capsrc;
> >>       int micboost;
> >> @@ -1103,7 +1103,7 @@ static void sbxfi_setup_play_mixer(struct sbxfi *chip,
> >>       int i, vol, audio_ch;
> >>
> >>       for (i = 0; i < 2; i++) {
> >> -             vol = port->vol[i] + chip->master_vol[i] - MAX_VOLUME;
> >> +             vol = port->vol[i] + chip->pcm_vol[i] - MAX_VOLUME;
> >>               if (vol < 0)
> >>                       vol = 0;
> >>               vol = amop_vol_table[vol];
> >> @@ -1124,9 +1124,9 @@ static int sbxfi_update_play_mixer(struct sbxfi *chip, int *vol)
> >>       struct sbxfi_port *port;
> >>
> >>       for (i = 0; i < 2; i++) {
> >> -             if (vol[i] == chip->master_vol[i])
> >> +             if (vol[i] == chip->pcm_vol[i])
> >>                       continue;
> >> -             chip->master_vol[i] = vol[i];
> >> +             chip->pcm_vol[i] = vol[i];
> >>               spin_lock_irq(&chip->port_lock);
> >>               list_for_each_entry(port, &chip->port_list, list) {
> >>                       if (port->substream->stream !=
> >> @@ -1516,7 +1516,7 @@ static int __devinit sbxfi_create_pcm(struct sbxfi *chip)
> >>  /*
> >>   * Mixer interface
> >>   */
> >> -static int sbxfi_master_vol_info(struct snd_kcontrol *kcontrol,
> >> +static int sbxfi_pcm_vol_info(struct snd_kcontrol *kcontrol,
> >>                                struct snd_ctl_elem_info *uinfo)
> >>  {
> >>       uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
> >> @@ -1526,16 +1526,16 @@ static int sbxfi_master_vol_info(struct snd_kcontrol *kcontrol,
> >>       return 0;
> >>  }
> >>
> >> -static int sbxfi_master_vol_get(struct snd_kcontrol *kcontrol,
> >> +static int sbxfi_pcm_vol_get(struct snd_kcontrol *kcontrol,
> >>                               struct snd_ctl_elem_value *ucontrol)
> >>  {
> >>       struct sbxfi *chip = snd_kcontrol_chip(kcontrol);
> >> -     ucontrol->value.integer.value[0] = chip->master_vol[0];
> >> -     ucontrol->value.integer.value[1] = chip->master_vol[1];
> >> +     ucontrol->value.integer.value[0] = chip->pcm_vol[0];
> >> +     ucontrol->value.integer.value[1] = chip->pcm_vol[1];
> >>       return 0;
> >>  }
> >>
> >> -static int sbxfi_master_vol_put(struct snd_kcontrol *kcontrol,
> >> +static int sbxfi_pcm_vol_put(struct snd_kcontrol *kcontrol,
> >>                               struct snd_ctl_elem_value *ucontrol)
> >>  {
> >>       struct sbxfi *chip = snd_kcontrol_chip(kcontrol);
> >> @@ -1543,7 +1543,7 @@ static int sbxfi_master_vol_put(struct snd_kcontrol *kcontrol,
> >>
> >>       vol[0] = ucontrol->value.integer.value[0];
> >>       vol[1] = ucontrol->value.integer.value[1];
> >> -     if (!memcmp(vol, chip->master_vol, sizeof(vol)))
> >> +     if (!memcmp(vol, chip->pcm_vol, sizeof(vol)))
> >>               return 0;
> >>
> >>       if (vol[0] < 0)
> >> @@ -1658,13 +1658,13 @@ static int sbxfi_micboost_put(struct snd_kcontrol *kcontrol,
> >>
> >>  static struct snd_kcontrol_new mixers[] __devinitdata = {
> >>       {
> >> -             .name = "Master Playback Volume",
> >> +             .name = "PCM Playback Volume",
> >>               .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
> >>               .access = (SNDRV_CTL_ELEM_ACCESS_READWRITE
> >>                          /* | SNDRV_CTL_ELEM_ACCESS_TLV_READ*/),
> >> -             .info = sbxfi_master_vol_info,
> >> -             .get = sbxfi_master_vol_get,
> >> -             .put = sbxfi_master_vol_put,
> >> +             .info = sbxfi_pcm_vol_info,
> >> +             .get = sbxfi_pcm_vol_get,
> >> +             .put = sbxfi_pcm_vol_put,
> >>               /*.tlv = { .p = db_master_vol }*/
> >>       },
> >>       {
> >> --
> >> 1.5.5.4
> >>
> >> _______________________________________________
> >> Alsa-devel mailing list
> >> Alsa-devel at alsa-project.org
> >> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >>
> > _______________________________________________
> > Alsa-devel mailing list
> > Alsa-devel at alsa-project.org
> > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >
> 
> 
> 
> -- 
> Vedran Miletić


More information about the Alsa-devel mailing list