static int set_volume_ops(snd_mixer_elem_t *elem, int dir, snd_mixer_selem_channel_id_t channel, long value) { int changed; changed = _snd_mixer_selem_set_volume(elem, dir, channel, value); if (changed < 0) return changed; if (changed) return selem_write(elem); return 0; }
static int set_switch_ops(snd_mixer_elem_t *elem, int dir, snd_mixer_selem_channel_id_t channel, int value) { int changed; selem_none_t *s = snd_mixer_elem_get_private(elem); if (dir == SM_PLAY) { if (! (s->selem.caps & (SM_CAP_GSWITCH|SM_CAP_PSWITCH))) return -EINVAL; } else { if (! (s->selem.caps & (SM_CAP_GSWITCH|SM_CAP_CSWITCH))) return -EINVAL; } changed = _snd_mixer_selem_set_switch(elem, dir, channel, value); if (changed < 0) return changed; if (changed) return selem_write(elem); return 0; }