[alsa-devel] Query regarding ALSA control interface

Pharaoh . pharaoh137 at gmail.com
Tue Jul 24 01:16:11 CEST 2007

I am writing a pcm control interface for my alsa driver. I am confused about
how the switches are used.
I have implemented simple cases like following and they are working well.

static int audio_path_info(struct snd_kcontrol *kcontrol, struct
snd_ctl_elem_info *uinfo)
       /*Count is 256 since the values can vary from 0-255. But values fall
in this range only*/

        uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
        uinfo->count = 256;
        uinfo->value.integer.min = 0;
        uinfo->value.integer.max = 255;
        return 0;
static int audio_path_get(struct snd_kcontrol *kcontrol, struct
snd_ctl_elem_value *ucontrol)
    my_mixer_t *mixer_chip = snd_kcontrol_chip(kcontrol);
    ucontrol->value.integer.value[0] = mixer_chip->echo;
    ucontrol->value.integer.value[1] = mixer_chip->echo;
    return 0;
static int audio_path_put(struct snd_kcontrol *kcontrol, struct
snd_ctl_elem_value *ucontrol)
        my_mixer_t *mixer_chip = snd_kcontrol_chip(kcontrol);

Now, I have to implement a control which takes four different values..namely
0,1.100 and 101. In this case what shoud be the type of control? It should
be ENUMERATED or INTEGER? I am confused here since the values are not
exactly in a range.


More information about the Alsa-devel mailing list