Lines Matching refs:ctl
90 if (wm->ctl[i].flags & flags_off) in snd_wm8776_update_agc_ctl()
91 snd_wm8776_activate_ctl(wm, wm->ctl[i].name, false); in snd_wm8776_update_agc_ctl()
92 else if (wm->ctl[i].flags & flags_on) in snd_wm8776_update_agc_ctl()
93 snd_wm8776_activate_ctl(wm, wm->ctl[i].name, true); in snd_wm8776_update_agc_ctl()
438 memcpy(wm->ctl, snd_wm8776_default_ctl, sizeof(wm->ctl)); in snd_wm8776_init()
476 uinfo->count = (wm->ctl[n].flags & WM8776_FLAG_STEREO) ? 2 : 1; in snd_wm8776_volume_info()
477 uinfo->value.integer.min = wm->ctl[n].min; in snd_wm8776_volume_info()
478 uinfo->value.integer.max = wm->ctl[n].max; in snd_wm8776_volume_info()
489 return snd_ctl_enum_info(uinfo, 1, wm->ctl[n].max, in snd_wm8776_enum_info()
490 wm->ctl[n].enum_names); in snd_wm8776_enum_info()
500 if (wm->ctl[n].get) in snd_wm8776_ctl_get()
501 wm->ctl[n].get(wm, &val1, &val2); in snd_wm8776_ctl_get()
503 val1 = wm->regs[wm->ctl[n].reg1] & wm->ctl[n].mask1; in snd_wm8776_ctl_get()
504 val1 >>= __ffs(wm->ctl[n].mask1); in snd_wm8776_ctl_get()
505 if (wm->ctl[n].flags & WM8776_FLAG_STEREO) { in snd_wm8776_ctl_get()
506 val2 = wm->regs[wm->ctl[n].reg2] & wm->ctl[n].mask2; in snd_wm8776_ctl_get()
507 val2 >>= __ffs(wm->ctl[n].mask2); in snd_wm8776_ctl_get()
508 if (wm->ctl[n].flags & WM8776_FLAG_VOL_UPDATE) in snd_wm8776_ctl_get()
512 if (wm->ctl[n].flags & WM8776_FLAG_INVERT) { in snd_wm8776_ctl_get()
513 val1 = wm->ctl[n].max - (val1 - wm->ctl[n].min); in snd_wm8776_ctl_get()
514 if (wm->ctl[n].flags & WM8776_FLAG_STEREO) in snd_wm8776_ctl_get()
515 val2 = wm->ctl[n].max - (val2 - wm->ctl[n].min); in snd_wm8776_ctl_get()
518 if (wm->ctl[n].flags & WM8776_FLAG_STEREO) in snd_wm8776_ctl_get()
534 if (wm->ctl[n].flags & WM8776_FLAG_INVERT) { in snd_wm8776_ctl_put()
535 regval1 = wm->ctl[n].max - (regval1 - wm->ctl[n].min); in snd_wm8776_ctl_put()
536 regval2 = wm->ctl[n].max - (regval2 - wm->ctl[n].min); in snd_wm8776_ctl_put()
538 if (wm->ctl[n].set) in snd_wm8776_ctl_put()
539 wm->ctl[n].set(wm, regval1, regval2); in snd_wm8776_ctl_put()
541 val = wm->regs[wm->ctl[n].reg1] & ~wm->ctl[n].mask1; in snd_wm8776_ctl_put()
542 val |= regval1 << __ffs(wm->ctl[n].mask1); in snd_wm8776_ctl_put()
544 if (wm->ctl[n].flags & WM8776_FLAG_STEREO && in snd_wm8776_ctl_put()
545 wm->ctl[n].reg1 == wm->ctl[n].reg2) { in snd_wm8776_ctl_put()
546 val &= ~wm->ctl[n].mask2; in snd_wm8776_ctl_put()
547 val |= regval2 << __ffs(wm->ctl[n].mask2); in snd_wm8776_ctl_put()
549 snd_wm8776_write(wm, wm->ctl[n].reg1, val); in snd_wm8776_ctl_put()
551 if (wm->ctl[n].flags & WM8776_FLAG_STEREO && in snd_wm8776_ctl_put()
552 wm->ctl[n].reg1 != wm->ctl[n].reg2) { in snd_wm8776_ctl_put()
553 val = wm->regs[wm->ctl[n].reg2] & ~wm->ctl[n].mask2; in snd_wm8776_ctl_put()
554 val |= regval2 << __ffs(wm->ctl[n].mask2); in snd_wm8776_ctl_put()
555 if (wm->ctl[n].flags & WM8776_FLAG_VOL_UPDATE) in snd_wm8776_ctl_put()
557 snd_wm8776_write(wm, wm->ctl[n].reg2, val); in snd_wm8776_ctl_put()
567 struct snd_kcontrol *ctl; in snd_wm8776_add_control() local
572 cont.name = wm->ctl[num].name; in snd_wm8776_add_control()
574 if (wm->ctl[num].flags & WM8776_FLAG_LIM || in snd_wm8776_add_control()
575 wm->ctl[num].flags & WM8776_FLAG_ALC) in snd_wm8776_add_control()
581 switch (wm->ctl[num].type) { in snd_wm8776_add_control()
585 cont.tlv.p = wm->ctl[num].tlv; in snd_wm8776_add_control()
588 wm->ctl[num].max = 1; in snd_wm8776_add_control()
589 if (wm->ctl[num].flags & WM8776_FLAG_STEREO) in snd_wm8776_add_control()
600 ctl = snd_ctl_new1(&cont, wm); in snd_wm8776_add_control()
601 if (!ctl) in snd_wm8776_add_control()
604 return snd_ctl_add(wm->card, ctl); in snd_wm8776_add_control()
612 if (wm->ctl[i].name) { in snd_wm8776_build_controls()