Lines Matching defs:ctl

76 		if (wm->ctl[i].flags & flags_off)
77 snd_wm8776_activate_ctl(wm, wm->ctl[i].name, false);
78 else if (wm->ctl[i].flags & flags_on)
79 snd_wm8776_activate_ctl(wm, wm->ctl[i].name, true);
424 memcpy(wm->ctl, snd_wm8776_default_ctl, sizeof(wm->ctl));
462 uinfo->count = (wm->ctl[n].flags & WM8776_FLAG_STEREO) ? 2 : 1;
463 uinfo->value.integer.min = wm->ctl[n].min;
464 uinfo->value.integer.max = wm->ctl[n].max;
475 return snd_ctl_enum_info(uinfo, 1, wm->ctl[n].max,
476 wm->ctl[n].enum_names);
486 if (wm->ctl[n].get)
487 wm->ctl[n].get(wm, &val1, &val2);
489 val1 = wm->regs[wm->ctl[n].reg1] & wm->ctl[n].mask1;
490 val1 >>= __ffs(wm->ctl[n].mask1);
491 if (wm->ctl[n].flags & WM8776_FLAG_STEREO) {
492 val2 = wm->regs[wm->ctl[n].reg2] & wm->ctl[n].mask2;
493 val2 >>= __ffs(wm->ctl[n].mask2);
494 if (wm->ctl[n].flags & WM8776_FLAG_VOL_UPDATE)
498 if (wm->ctl[n].flags & WM8776_FLAG_INVERT) {
499 val1 = wm->ctl[n].max - (val1 - wm->ctl[n].min);
500 if (wm->ctl[n].flags & WM8776_FLAG_STEREO)
501 val2 = wm->ctl[n].max - (val2 - wm->ctl[n].min);
504 if (wm->ctl[n].flags & WM8776_FLAG_STEREO)
520 if (wm->ctl[n].flags & WM8776_FLAG_INVERT) {
521 regval1 = wm->ctl[n].max - (regval1 - wm->ctl[n].min);
522 regval2 = wm->ctl[n].max - (regval2 - wm->ctl[n].min);
524 if (wm->ctl[n].set)
525 wm->ctl[n].set(wm, regval1, regval2);
527 val = wm->regs[wm->ctl[n].reg1] & ~wm->ctl[n].mask1;
528 val |= regval1 << __ffs(wm->ctl[n].mask1);
530 if (wm->ctl[n].flags & WM8776_FLAG_STEREO &&
531 wm->ctl[n].reg1 == wm->ctl[n].reg2) {
532 val &= ~wm->ctl[n].mask2;
533 val |= regval2 << __ffs(wm->ctl[n].mask2);
535 snd_wm8776_write(wm, wm->ctl[n].reg1, val);
537 if (wm->ctl[n].flags & WM8776_FLAG_STEREO &&
538 wm->ctl[n].reg1 != wm->ctl[n].reg2) {
539 val = wm->regs[wm->ctl[n].reg2] & ~wm->ctl[n].mask2;
540 val |= regval2 << __ffs(wm->ctl[n].mask2);
541 if (wm->ctl[n].flags & WM8776_FLAG_VOL_UPDATE)
543 snd_wm8776_write(wm, wm->ctl[n].reg2, val);
553 struct snd_kcontrol *ctl;
558 cont.name = wm->ctl[num].name;
560 if (wm->ctl[num].flags & WM8776_FLAG_LIM ||
561 wm->ctl[num].flags & WM8776_FLAG_ALC)
567 switch (wm->ctl[num].type) {
571 cont.tlv.p = wm->ctl[num].tlv;
574 wm->ctl[num].max = 1;
575 if (wm->ctl[num].flags & WM8776_FLAG_STEREO)
586 ctl = snd_ctl_new1(&cont, wm);
587 if (!ctl)
590 return snd_ctl_add(wm->card, ctl);
598 if (wm->ctl[i].name) {