Example #1
0
static int vx_audio_gain_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
{
	struct vx_core *chip = snd_kcontrol_chip(kcontrol);
	int audio = kcontrol->private_value & 0xff;
	int capture = (kcontrol->private_value >> 8) & 1;

	mutex_lock(&chip->mixer_mutex);
	if (ucontrol->value.integer.value[0] != chip->audio_gain[capture][audio] ||
	    ucontrol->value.integer.value[1] != chip->audio_gain[capture][audio+1]) {
		vx_set_audio_gain(chip, audio, capture, ucontrol->value.integer.value[0]);
		vx_set_audio_gain(chip, audio+1, capture, ucontrol->value.integer.value[1]);
		mutex_unlock(&chip->mixer_mutex);
		return 1;
	}
	mutex_unlock(&chip->mixer_mutex);
	return 0;
}
Example #2
0
static int vx_audio_gain_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
{
    struct vx_core *chip = snd_kcontrol_chip(kcontrol);
    int audio = kcontrol->private_value & 0xff;
    int capture = (kcontrol->private_value >> 8) & 1;
    unsigned int val[2];

    val[0] = ucontrol->value.integer.value[0];
    val[1] = ucontrol->value.integer.value[1];
    if (val[0] > CVAL_MAX || val[1] > CVAL_MAX)
        return -EINVAL;
    mutex_lock(&chip->mixer_mutex);
    if (val[0] != chip->audio_gain[capture][audio] ||
            val[1] != chip->audio_gain[capture][audio+1]) {
        vx_set_audio_gain(chip, audio, capture, val[0]);
        vx_set_audio_gain(chip, audio+1, capture, val[1]);
        mutex_unlock(&chip->mixer_mutex);
        return 1;
    }
    mutex_unlock(&chip->mixer_mutex);
    return 0;
}