int i;
unsigned int def_val;
- if (svol->max_val == 1)
+ if (svol->max_val == 1) {
+ snd_ctl_elem_info_set_read_write(cinfo, 1, 1);
err = snd_ctl_add_boolean_elem_set(svol->ctl, cinfo, 1, count);
- else
+ } else {
err = snd_ctl_add_integer_elem_set(svol->ctl, cinfo, 1, count,
0, svol->max_val, 0);
+ }
if (err < 0)
return err;
if (svol->max_val == 1)
SNDERR("Control %s mismatch", tmp_name);
return err;
}
- /* reset numid */
+ /* clear cinfo including numid */
+ snd_ctl_elem_info_clear(&cinfo);
snd_ctl_elem_info_set_id(&cinfo, ctl_id);
if ((err = add_user_ctl(svol, &cinfo, cchannels)) < 0) {
SNDERR("Cannot add a control");