Lines Matching full:this
8 * This code is derived from software contributed to The NetBSD Foundation
15 * notice, this list of conditions and the following disclaimer.
17 * notice, this list of conditions and the following disclaimer in the
20 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
60 azalia_codec_init_vtbl(codec_t *this) in azalia_codec_init_vtbl() argument
63 * We can refer this->vid and this->subid. in azalia_codec_init_vtbl()
65 this->name = NULL; in azalia_codec_init_vtbl()
66 this->qrks = AZ_QRK_NONE; in azalia_codec_init_vtbl()
67 switch (this->vid) { in azalia_codec_init_vtbl()
69 this->name = "Cirrus Logic CS4206"; in azalia_codec_init_vtbl()
70 if (this->subid == 0xcb8910de || /* APPLE_MBA3_1 */ in azalia_codec_init_vtbl()
71 this->subid == 0x72708086 || /* APPLE_MBA4_1 */ in azalia_codec_init_vtbl()
72 this->subid == 0xcb7910de) { /* APPLE_MBP5_5 */ in azalia_codec_init_vtbl()
73 this->qrks |= AZ_QRK_GPIO_UNMUTE_1 | in azalia_codec_init_vtbl()
78 this->name = "Cirrus Logic CS4208"; in azalia_codec_init_vtbl()
79 if (this->subid == 0x72708086) { /* APPLE_MBA6_1 */ in azalia_codec_init_vtbl()
80 this->qrks |= AZ_QRK_GPIO_UNMUTE_0 | in azalia_codec_init_vtbl()
85 this->name = "Realtek ALC221"; in azalia_codec_init_vtbl()
86 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
89 this->name = "Realtek ALC225"; in azalia_codec_init_vtbl()
93 this->name = "Realtek ALC233"; in azalia_codec_init_vtbl()
96 if (PCI_VENDOR(this->subid) == PCI_VENDOR_DELL) in azalia_codec_init_vtbl()
97 this->name = "Realtek ALC3204"; in azalia_codec_init_vtbl()
99 this->name = "Realtek ALC236"; in azalia_codec_init_vtbl()
102 this->name = "Realtek ALC245"; in azalia_codec_init_vtbl()
105 this->name = "Realtek ALC255"; in azalia_codec_init_vtbl()
108 this->name = "Realtek ALC256"; in azalia_codec_init_vtbl()
111 this->name = "Realtek ALC257"; in azalia_codec_init_vtbl()
114 this->name = "Realtek ALC260"; in azalia_codec_init_vtbl()
115 if (this->subid == 0x008f1025) in azalia_codec_init_vtbl()
116 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
119 this->name = "Realtek ALC262"; in azalia_codec_init_vtbl()
120 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
123 this->name = "Realtek ALC268"; in azalia_codec_init_vtbl()
124 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
127 this->name = "Realtek ALC269"; in azalia_codec_init_vtbl()
128 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
139 if (this->subid == 0x21f317aa || in azalia_codec_init_vtbl()
140 this->subid == 0x21f617aa || in azalia_codec_init_vtbl()
141 this->subid == 0x21fa17aa || in azalia_codec_init_vtbl()
142 this->subid == 0x21fb17aa || in azalia_codec_init_vtbl()
143 this->subid == 0x220317aa || in azalia_codec_init_vtbl()
144 this->subid == 0x220817aa) in azalia_codec_init_vtbl()
145 this->qrks |= AZ_QRK_WID_TPDOCK1; in azalia_codec_init_vtbl()
148 this->name = "Realtek ALC270"; in azalia_codec_init_vtbl()
151 this->name = "Realtek ALC272"; in azalia_codec_init_vtbl()
154 this->name = "Realtek ALC275"; in azalia_codec_init_vtbl()
157 this->name = "Realtek ALC280"; in azalia_codec_init_vtbl()
160 this->name = "Realtek ALC282"; in azalia_codec_init_vtbl()
161 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
164 this->name = "Realtek ALC283"; in azalia_codec_init_vtbl()
167 this->name = "Realtek ALC285"; in azalia_codec_init_vtbl()
168 if (this->subid == 0x229217aa) { in azalia_codec_init_vtbl()
170 this->qrks |= AZ_QRK_ROUTE_SPKR2_DAC | in azalia_codec_init_vtbl()
172 } else if (this->subid == 0x22c017aa) { in azalia_codec_init_vtbl()
174 this->qrks |= AZ_QRK_DOLBY_ATMOS | in azalia_codec_init_vtbl()
179 this->name = "Realtek ALC287"; in azalia_codec_init_vtbl()
182 this->name = "Realtek ALC292"; in azalia_codec_init_vtbl()
183 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
198 if (this->subid == 0x220c17aa || in azalia_codec_init_vtbl()
199 this->subid == 0x220e17aa || in azalia_codec_init_vtbl()
200 this->subid == 0x221017aa || in azalia_codec_init_vtbl()
201 this->subid == 0x221217aa || in azalia_codec_init_vtbl()
202 this->subid == 0x221417aa || in azalia_codec_init_vtbl()
203 this->subid == 0x222617aa || in azalia_codec_init_vtbl()
204 this->subid == 0x501e17aa || in azalia_codec_init_vtbl()
205 this->subid == 0x503417aa || in azalia_codec_init_vtbl()
206 this->subid == 0x503617aa || in azalia_codec_init_vtbl()
207 this->subid == 0x503c17aa) in azalia_codec_init_vtbl()
208 this->qrks |= AZ_QRK_WID_TPDOCK2; in azalia_codec_init_vtbl()
211 if (PCI_VENDOR(this->subid) == PCI_VENDOR_DELL) in azalia_codec_init_vtbl()
212 this->name = "Realtek ALC3235"; in azalia_codec_init_vtbl()
214 this->name = "Realtek ALC293"; in azalia_codec_init_vtbl()
217 this->name = "Realtek ALC294"; in azalia_codec_init_vtbl()
220 if (PCI_VENDOR(this->subid) == PCI_VENDOR_DELL) in azalia_codec_init_vtbl()
221 this->name = "Realtek ALC3254"; in azalia_codec_init_vtbl()
223 this->name = "Realtek ALC295"; in azalia_codec_init_vtbl()
226 this->name = "Realtek ALC298"; in azalia_codec_init_vtbl()
227 if (this->subid == 0x320019e5 || in azalia_codec_init_vtbl()
228 this->subid == 0x320119e5) /* Huawei Matebook X */ in azalia_codec_init_vtbl()
229 this->qrks |= AZ_QRK_DOLBY_ATMOS; in azalia_codec_init_vtbl()
232 this->name = "Realtek ALC299"; in azalia_codec_init_vtbl()
235 this->name = "Realtek ALC660"; in azalia_codec_init_vtbl()
236 if (this->subid == 0x13391043) { /* ASUS_G2K */ in azalia_codec_init_vtbl()
237 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
241 this->name = "Realtek ALC662"; in azalia_codec_init_vtbl()
242 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
245 this->name = "Realtek ALC663"; in azalia_codec_init_vtbl()
248 if (PCI_VENDOR(this->subid) == PCI_VENDOR_DELL) in azalia_codec_init_vtbl()
249 this->name = "Realtek ALC3661"; in azalia_codec_init_vtbl()
251 this->name = "Realtek ALC668"; in azalia_codec_init_vtbl()
254 this->name = "Realtek ALC671"; in azalia_codec_init_vtbl()
257 this->name = "Realtek ALC700"; in azalia_codec_init_vtbl()
260 this->name = "Realtek ALC861"; in azalia_codec_init_vtbl()
263 this->name = "Realtek ALC880"; in azalia_codec_init_vtbl()
264 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
265 if (this->subid == 0x19931043 || /* ASUS_M5200 */ in azalia_codec_init_vtbl()
266 this->subid == 0x13231043) { /* ASUS_A7M */ in azalia_codec_init_vtbl()
267 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
269 if (this->subid == 0x203d161f) { /* MEDION_MD95257 */ in azalia_codec_init_vtbl()
270 this->qrks |= AZ_QRK_GPIO_UNMUTE_1; in azalia_codec_init_vtbl()
274 this->name = "Realtek ALC882"; in azalia_codec_init_vtbl()
275 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
276 if (this->subid == 0x13c21043 || /* ASUS_A7T */ in azalia_codec_init_vtbl()
277 this->subid == 0x19711043) { /* ASUS_W2J */ in azalia_codec_init_vtbl()
278 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
282 this->name = "Realtek ALC883"; in azalia_codec_init_vtbl()
283 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
284 if (this->subid == 0x00981025) { /* ACER_ID */ in azalia_codec_init_vtbl()
285 this->qrks |= AZ_QRK_GPIO_UNMUTE_0 | in azalia_codec_init_vtbl()
290 this->name = "Realtek ALC885"; in azalia_codec_init_vtbl()
291 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
292 if (this->subid == 0x00a1106b || /* APPLE_MB3 */ in azalia_codec_init_vtbl()
293 this->subid == 0xcb7910de || /* APPLE_MACMINI3_1 (line-in + hp) */ in azalia_codec_init_vtbl()
294 this->subid == 0x00a0106b || /* APPLE_MB3_1 */ in azalia_codec_init_vtbl()
295 this->subid == 0x00a3106b) { /* APPLE_MB4 */ in azalia_codec_init_vtbl()
296 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
298 if (this->subid == 0x00a1106b || in azalia_codec_init_vtbl()
299 this->subid == 0xcb7910de || /* APPLE_MACMINI3_1 (internal spkr) */ in azalia_codec_init_vtbl()
300 this->subid == 0x00a0106b) in azalia_codec_init_vtbl()
301 this->qrks |= AZ_QRK_WID_OVREF50; in azalia_codec_init_vtbl()
304 this->name = "Realtek ALC887"; in azalia_codec_init_vtbl()
307 this->name = "Realtek ALC888"; in azalia_codec_init_vtbl()
308 this->qrks |= AZ_QRK_WID_CDIN_1C | AZ_QRK_WID_BEEP_1D; in azalia_codec_init_vtbl()
311 this->name = "Realtek ALC889"; in azalia_codec_init_vtbl()
314 this->name = "Realtek ALC892"; in azalia_codec_init_vtbl()
317 this->name = "Realtek ALC897"; in azalia_codec_init_vtbl()
320 this->name = "Realtek ALC1150"; in azalia_codec_init_vtbl()
323 this->name = "Realtek ALC1200"; in azalia_codec_init_vtbl()
327 this->name = "Realtek ALC1220"; in azalia_codec_init_vtbl()
337 this->name = "VIA VT1702"; in azalia_codec_init_vtbl()
340 this->name = "IDT 92HD75B3/4"; in azalia_codec_init_vtbl()
341 if (PCI_VENDOR(this->subid) == PCI_VENDOR_HP) in azalia_codec_init_vtbl()
342 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
345 this->name = "IDT 92HD83C1X"; in azalia_codec_init_vtbl()
348 this->name = "IDT 92HD81B1X"; in azalia_codec_init_vtbl()
351 this->name = "IDT 92HD75B1/2"; in azalia_codec_init_vtbl()
352 if (PCI_VENDOR(this->subid) == PCI_VENDOR_HP) in azalia_codec_init_vtbl()
353 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
356 this->name = "IDT 92HD73D1"; in azalia_codec_init_vtbl()
359 this->name = "IDT 92HD73C1"; /* aka 92HDW74C1 */ in azalia_codec_init_vtbl()
360 if (PCI_VENDOR(this->subid) == PCI_VENDOR_DELL) in azalia_codec_init_vtbl()
361 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
364 this->name = "IDT 92HD73E1"; /* aka 92HDW74E1 */ in azalia_codec_init_vtbl()
367 this->name = "IDT 92HD95"; /* aka IDT/TSI 92HD95B */ in azalia_codec_init_vtbl()
370 this->name = "IDT 92HD71B8"; in azalia_codec_init_vtbl()
373 this->name = "IDT 92HD71B7"; in azalia_codec_init_vtbl()
374 if (PCI_VENDOR(this->subid) == PCI_VENDOR_DELL || in azalia_codec_init_vtbl()
375 PCI_VENDOR(this->subid) == PCI_VENDOR_HP) in azalia_codec_init_vtbl()
376 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
379 this->name = "IDT 92HD71B5"; in azalia_codec_init_vtbl()
382 this->name = "IDT 92HD83C1C"; in azalia_codec_init_vtbl()
385 this->name = "IDT 92HD81B1C"; in azalia_codec_init_vtbl()
388 this->name = "Analog Devices AD1884A"; in azalia_codec_init_vtbl()
391 this->name = "Analog Devices AD1882"; in azalia_codec_init_vtbl()
394 this->name = "Analog Devices AD1883"; in azalia_codec_init_vtbl()
397 this->name = "Analog Devices AD1884"; in azalia_codec_init_vtbl()
400 this->name = "Analog Devices AD1984A"; in azalia_codec_init_vtbl()
403 this->name = "Analog Devices AD1981HD"; in azalia_codec_init_vtbl()
404 this->qrks |= AZ_QRK_WID_AD1981_OAMP; in azalia_codec_init_vtbl()
407 this->name = "Analog Devices AD1983"; in azalia_codec_init_vtbl()
410 this->name = "Analog Devices AD1984"; in azalia_codec_init_vtbl()
413 this->name = "Analog Devices AD1988A"; in azalia_codec_init_vtbl()
416 this->name = "Analog Devices AD1988B"; in azalia_codec_init_vtbl()
419 this->name = "Analog Devices AD1882A"; in azalia_codec_init_vtbl()
422 this->name = "Analog Devices AD1989A"; in azalia_codec_init_vtbl()
425 this->name = "Analog Devices AD1989B"; in azalia_codec_init_vtbl()
428 this->name = "Conexant CX20549"; /* Venice */ in azalia_codec_init_vtbl()
431 this->name = "Conexant CX20551"; /* Waikiki */ in azalia_codec_init_vtbl()
434 this->name = "Conexant CX20561"; /* Hermosa */ in azalia_codec_init_vtbl()
437 this->name = "Conexant CX20590"; in azalia_codec_init_vtbl()
448 if (this->subid == 0x20f217aa || in azalia_codec_init_vtbl()
449 this->subid == 0x215e17aa || in azalia_codec_init_vtbl()
450 this->subid == 0x215f17aa || in azalia_codec_init_vtbl()
451 this->subid == 0x21ce17aa || in azalia_codec_init_vtbl()
452 this->subid == 0x21cf17aa || in azalia_codec_init_vtbl()
453 this->subid == 0x21da17aa || in azalia_codec_init_vtbl()
454 this->subid == 0x21db17aa) in azalia_codec_init_vtbl()
455 this->qrks |= AZ_QRK_WID_TPDOCK3; in azalia_codec_init_vtbl()
458 this->name = "CMedia CMI9880"; in azalia_codec_init_vtbl()
461 this->name = "Sigmatel STAC9230X"; in azalia_codec_init_vtbl()
464 this->name = "Sigmatel STAC9230D"; in azalia_codec_init_vtbl()
467 this->name = "Sigmatel STAC9229X"; in azalia_codec_init_vtbl()
470 this->name = "Sigmatel STAC9229D"; in azalia_codec_init_vtbl()
473 this->name = "Sigmatel STAC9228X"; in azalia_codec_init_vtbl()
474 if (this->subid == 0x02271028 || /* DELL_V1400 */ in azalia_codec_init_vtbl()
475 this->subid == 0x01f31028) { /* DELL_I1400 */ in azalia_codec_init_vtbl()
476 this->qrks |= AZ_QRK_GPIO_UNMUTE_2; in azalia_codec_init_vtbl()
480 this->name = "Sigmatel STAC9228D"; in azalia_codec_init_vtbl()
483 this->name = "Sigmatel STAC9227X"; in azalia_codec_init_vtbl()
486 this->name = "Sigmatel STAC9227D"; in azalia_codec_init_vtbl()
489 this->name = "Sigmatel STAC9274"; in azalia_codec_init_vtbl()
492 this->name = "Sigmatel STAC9274D"; in azalia_codec_init_vtbl()
495 this->name = "Sigmatel STAC9271X"; in azalia_codec_init_vtbl()
498 this->name = "Sigmatel STAC9271D"; in azalia_codec_init_vtbl()
501 this->name = "Sigmatel STAC9202"; in azalia_codec_init_vtbl()
504 this->name = "Sigmatel STAC9250"; in azalia_codec_init_vtbl()
507 this->name = "Sigmatel STAC9251"; in azalia_codec_init_vtbl()
510 this->name = "IDT 92HD700X"; in azalia_codec_init_vtbl()
513 this->name = "IDT 92HD700D"; in azalia_codec_init_vtbl()
516 this->name = "IDT 92HD206X"; in azalia_codec_init_vtbl()
519 this->name = "IDT 92HD206D"; in azalia_codec_init_vtbl()
524 this->name = "Sigmatel STAC9225"; in azalia_codec_init_vtbl()
527 this->name = "Sigmatel STAC9220/1"; in azalia_codec_init_vtbl()
528 if (this->subid == 0x76808384) { /* APPLE_ID */ in azalia_codec_init_vtbl()
529 this->qrks |= AZ_QRK_GPIO_POL_0 | AZ_QRK_GPIO_UNMUTE_0 | in azalia_codec_init_vtbl()
536 this->name = "Sigmatel STAC9221D"; /* aka IDT 92HD202 */ in azalia_codec_init_vtbl()
539 this->name = "Sigmatel STAC9200"; /* aka IDT 92HD001 */ in azalia_codec_init_vtbl()
542 this->name = "Sigmatel STAC9200D"; in azalia_codec_init_vtbl()
545 this->name = "IDT 92HD005"; in azalia_codec_init_vtbl()
548 this->name = "IDT 92HD005D"; in azalia_codec_init_vtbl()
551 this->name = "Sigmatel STAC9205X"; in azalia_codec_init_vtbl()
552 if (this->subid == 0x01f91028 || /* DELL_D630 */ in azalia_codec_init_vtbl()
553 this->subid == 0x02281028) { /* DELL_V1500 */ in azalia_codec_init_vtbl()
554 this->qrks |= AZ_QRK_GPIO_UNMUTE_0; in azalia_codec_init_vtbl()
558 this->name = "Sigmatel STAC9205D"; in azalia_codec_init_vtbl()
561 this->name = "Sigmatel STAC9204X"; in azalia_codec_init_vtbl()
564 this->name = "Sigmatel STAC9204D"; in azalia_codec_init_vtbl()
575 azalia_widget_enabled(const codec_t *this, nid_t nid) in azalia_widget_enabled() argument
577 if (!VALID_WIDGET_NID(nid, this) || !this->w[nid].enable) in azalia_widget_enabled()
583 azalia_init_dacgroup(codec_t *this) in azalia_init_dacgroup() argument
585 this->dacs.ngroups = 0; in azalia_init_dacgroup()
586 if (this->na_dacs > 0) in azalia_init_dacgroup()
587 azalia_add_convgroup(this, &this->dacs, in azalia_init_dacgroup()
588 this->opins, this->nopins, in azalia_init_dacgroup()
589 this->a_dacs, this->na_dacs, in azalia_init_dacgroup()
591 if (this->na_dacs_d > 0) in azalia_init_dacgroup()
592 azalia_add_convgroup(this, &this->dacs, in azalia_init_dacgroup()
593 this->opins_d, this->nopins_d, in azalia_init_dacgroup()
594 this->a_dacs_d, this->na_dacs_d, in azalia_init_dacgroup()
596 this->dacs.cur = 0; in azalia_init_dacgroup()
598 this->adcs.ngroups = 0; in azalia_init_dacgroup()
599 if (this->na_adcs > 0) in azalia_init_dacgroup()
600 azalia_add_convgroup(this, &this->adcs, in azalia_init_dacgroup()
601 this->ipins, this->nipins, in azalia_init_dacgroup()
602 this->a_adcs, this->na_adcs, in azalia_init_dacgroup()
604 if (this->na_adcs_d > 0) in azalia_init_dacgroup()
605 azalia_add_convgroup(this, &this->adcs, in azalia_init_dacgroup()
606 this->ipins_d, this->nipins_d, in azalia_init_dacgroup()
607 this->a_adcs_d, this->na_adcs_d, in azalia_init_dacgroup()
609 this->adcs.cur = 0; in azalia_init_dacgroup()
615 azalia_add_convgroup(codec_t *this, convgroupset_t *group, in azalia_add_convgroup() argument
653 k = azalia_codec_fnode(this, conv, in azalia_add_convgroup()
658 if (!azalia_widget_enabled(this, conv)) in azalia_add_convgroup()
660 k = azalia_codec_fnode(this, pins[i].nid, in azalia_add_convgroup()
675 nconvs < nall_convs && this->spkr_dac != -1) { in azalia_add_convgroup()
677 if (convs[i] == this->spkr_dac) in azalia_add_convgroup()
680 convs[nconvs++] = this->spkr_dac; in azalia_add_convgroup()
697 this->w[conv].enable = 0; in azalia_add_convgroup()
704 azalia_codec_fnode(codec_t *this, nid_t node, int index, int depth) in azalia_codec_fnode() argument
709 w = &this->w[index]; in azalia_codec_fnode()
723 if (!azalia_widget_enabled(this, w->connections[i])) in azalia_codec_fnode()
725 ret = azalia_codec_fnode(this, node, w->connections[i], depth); in azalia_codec_fnode()
733 azalia_unsol_event(codec_t *this, int tag) in azalia_unsol_event() argument
745 for (i = 0; !vol && !err && i < this->nsense_pins; i++) { in azalia_unsol_event()
746 if (!(this->spkr_muters & (1 << i))) in azalia_unsol_event()
748 err = azalia_comresp(this, this->sense_pins[i], in azalia_unsol_event()
752 err = azalia_comresp(this, this->sense_pins[i], in azalia_unsol_event()
759 this->spkr_muted = vol; in azalia_unsol_event()
760 switch(this->spkr_mute_method) { in azalia_unsol_event()
763 err = azalia_mixer_set(this, this->speaker, in azalia_unsol_event()
765 if (!err && this->speaker2 != -1 && in azalia_unsol_event()
766 (this->w[this->speaker2].widgetcap & COP_AWCAP_OUTAMP) && in azalia_unsol_event()
767 (this->w[this->speaker2].outamp_cap & COP_AMPCAP_MUTE)) in azalia_unsol_event()
768 err = azalia_mixer_set(this, this->speaker2, in azalia_unsol_event()
773 err = azalia_mixer_set(this, this->speaker, in azalia_unsol_event()
775 if (!err && this->speaker2 != -1 && in azalia_unsol_event()
776 (this->w[this->speaker2].d.pin.cap & COP_PINCAP_OUTPUT) && in azalia_unsol_event()
777 (this->w[this->speaker2].d.pin.cap & COP_PINCAP_INPUT)) in azalia_unsol_event()
778 err = azalia_mixer_set(this, this->speaker2, in azalia_unsol_event()
783 err = azalia_mixer_set(this, this->spkr_dac, in azalia_unsol_event()
790 if (this->playvols.master == this->audiofunc) in azalia_unsol_event()
792 err = azalia_comresp(this, this->playvols.master, in azalia_unsol_event()
797 vol = CORB_VKNOB_VOLUME(result) - this->playvols.hw_step; in azalia_unsol_event()
798 vol2 = vol * (AUDIO_MAX_GAIN / this->playvols.hw_nsteps); in azalia_unsol_event()
799 this->playvols.hw_step = CORB_VKNOB_VOLUME(result); in azalia_unsol_event()
801 vol = vol2 + this->playvols.vol_l; in azalia_unsol_event()
806 this->playvols.vol_l = vol; in azalia_unsol_event()
808 vol = vol2 + this->playvols.vol_r; in azalia_unsol_event()
813 this->playvols.vol_r = vol; in azalia_unsol_event()
817 mc.un.value.level[0] = this->playvols.vol_l; in azalia_unsol_event()
818 mc.un.value.level[1] = this->playvols.vol_r; in azalia_unsol_event()
819 err = azalia_mixer_set(this, this->playvols.master, in azalia_unsol_event()
837 azalia_mixer_init(codec_t *this) in azalia_mixer_init() argument
850 this->maxmixers = 10; in azalia_mixer_init()
851 this->nmixers = 0; in azalia_mixer_init()
852 this->mixers = mallocarray(this->maxmixers, sizeof(mixer_item_t), in azalia_mixer_init()
854 if (this->mixers == NULL) { in azalia_mixer_init()
855 printf("%s: out of memory in %s\n", XNAME(this), __func__); in azalia_mixer_init()
860 m = &this->mixers[AZ_CLASS_INPUT]; in azalia_mixer_init()
870 m = &this->mixers[AZ_CLASS_OUTPUT]; in azalia_mixer_init()
880 m = &this->mixers[AZ_CLASS_RECORD]; in azalia_mixer_init()
890 this->nmixers = AZ_CLASS_RECORD + 1; in azalia_mixer_init()
894 err = azalia_mixer_ensure_capacity(this, this->nmixers + 1); \ in azalia_mixer_init()
897 m = &this->mixers[this->nmixers]; \ in azalia_mixer_init()
901 FOR_EACH_WIDGET(this, i) { in azalia_mixer_init()
903 w = &this->w[i]; in azalia_mixer_init()
910 azalia_widget_enabled(this, w->connections[0]) && in azalia_mixer_init()
911 strcmp(w->name, this->w[w->connections[0]].name) == 0) && in azalia_mixer_init()
912 w->nid != this->mic) { in azalia_mixer_init()
927 if (!azalia_widget_enabled(this, in azalia_mixer_init()
932 this->w[w->connections[j]].name, in azalia_mixer_init()
937 this->nmixers++; in azalia_mixer_init()
943 w->nid != this->mic) { in azalia_mixer_init()
959 this->nmixers++; in azalia_mixer_init()
965 w->nid != this->mic) { in azalia_mixer_init()
985 this->nmixers++; in azalia_mixer_init()
991 w->nid != this->speaker && in azalia_mixer_init()
992 w->nid != this->speaker2) { in azalia_mixer_init()
1003 this->nmixers++; in azalia_mixer_init()
1016 if (!azalia_widget_enabled(this, in azalia_mixer_init()
1019 if (w->connections[j] == this->speaker || in azalia_mixer_init()
1020 w->connections[j] == this->speaker2) in azalia_mixer_init()
1024 this->w[w->connections[j]].name, in azalia_mixer_init()
1030 this->nmixers++; in azalia_mixer_init()
1037 w->nid != this->speaker && in azalia_mixer_init()
1038 w->nid != this->speaker2) { in azalia_mixer_init()
1054 this->nmixers++; in azalia_mixer_init()
1057 if (!azalia_widget_enabled(this, in azalia_mixer_init()
1060 if (w->connections[j] == this->speaker || in azalia_mixer_init()
1061 w->connections[j] == this->speaker2) in azalia_mixer_init()
1067 this->w[w->connections[j]].name); in azalia_mixer_init()
1078 this->nmixers++; in azalia_mixer_init()
1097 if (!azalia_widget_enabled(this, in azalia_mixer_init()
1100 if (w->connections[j] == this->speaker || in azalia_mixer_init()
1101 w->connections[j] == this->speaker2) in azalia_mixer_init()
1105 this->w[w->connections[j]].name, in azalia_mixer_init()
1111 this->nmixers++; in azalia_mixer_init()
1176 this->nmixers++; in azalia_mixer_init()
1182 w->nid != this->mic) { in azalia_mixer_init()
1189 this->nmixers++; in azalia_mixer_init()
1200 this->nmixers++; in azalia_mixer_init()
1205 for (i = 0; i < this->nsense_pins; i++) { in azalia_mixer_init()
1206 if (!azalia_widget_enabled(this, this->sense_pins[i])) { in azalia_mixer_init()
1208 __func__, this->sense_pins[i])); in azalia_mixer_init()
1213 m->nid = this->w[this->sense_pins[i]].nid; in azalia_mixer_init()
1215 this->w[this->sense_pins[i]].name); in azalia_mixer_init()
1226 this->nmixers++; in azalia_mixer_init()
1230 this->spkr_mute_method = AZ_SPKR_MUTE_NONE; in azalia_mixer_init()
1231 if (this->speaker != -1 && this->spkr_dac != -1 && this->nsense_pins > 0) { in azalia_mixer_init()
1232 w = &this->w[this->speaker]; in azalia_mixer_init()
1235 this->spkr_mute_method = AZ_SPKR_MUTE_SPKR_MUTE; in azalia_mixer_init()
1238 this->spkr_mute_method = AZ_SPKR_MUTE_SPKR_DIR; in azalia_mixer_init()
1240 w = &this->w[this->spkr_dac]; in azalia_mixer_init()
1241 if (w->nid != this->dacs.groups[0].conv[0] && in azalia_mixer_init()
1244 this->spkr_mute_method = AZ_SPKR_MUTE_DAC_MUTE; in azalia_mixer_init()
1247 if (this->spkr_mute_method != AZ_SPKR_MUTE_NONE) { in azalia_mixer_init()
1248 w = &this->w[this->speaker]; in azalia_mixer_init()
1256 this->spkr_muters = 0; in azalia_mixer_init()
1257 for (i = 0, j = 0; i < this->nsense_pins; i++) { in azalia_mixer_init()
1258 ww = &this->w[this->sense_pins[i]]; in azalia_mixer_init()
1264 this->spkr_muters |= (1 << i); in azalia_mixer_init()
1270 this->nmixers++; in azalia_mixer_init()
1274 if (this->playvols.nslaves > 0) { in azalia_mixer_init()
1276 err = azalia_mixer_ensure_capacity(this, in azalia_mixer_init()
1277 this->nmixers + 3); in azalia_mixer_init()
1280 m = &this->mixers[this->nmixers]; in azalia_mixer_init()
1281 m->nid = this->playvols.master; in azalia_mixer_init()
1290 this->nmixers++; in azalia_mixer_init()
1291 d->next = this->nmixers; in azalia_mixer_init()
1294 m = &this->mixers[this->nmixers]; in azalia_mixer_init()
1295 m->nid = this->playvols.master; in azalia_mixer_init()
1298 d->prev = this->nmixers - 1; in azalia_mixer_init()
1303 this->nmixers++; in azalia_mixer_init()
1304 d->next = this->nmixers; in azalia_mixer_init()
1307 m = &this->mixers[this->nmixers]; in azalia_mixer_init()
1308 m->nid = this->playvols.master; in azalia_mixer_init()
1311 d->prev = this->nmixers - 1; in azalia_mixer_init()
1316 for (i = 0, j = 0; i < this->playvols.nslaves; i++) { in azalia_mixer_init()
1317 ww = &this->w[this->playvols.slaves[i]]; in azalia_mixer_init()
1323 this->nmixers++; in azalia_mixer_init()
1327 if (this->recvols.nslaves > 0) { in azalia_mixer_init()
1329 err = azalia_mixer_ensure_capacity(this, in azalia_mixer_init()
1330 this->nmixers + 3); in azalia_mixer_init()
1333 m = &this->mixers[this->nmixers]; in azalia_mixer_init()
1334 m->nid = this->recvols.master; in azalia_mixer_init()
1343 this->nmixers++; in azalia_mixer_init()
1344 d->next = this->nmixers; in azalia_mixer_init()
1347 m = &this->mixers[this->nmixers]; in azalia_mixer_init()
1348 m->nid = this->recvols.master; in azalia_mixer_init()
1351 d->prev = this->nmixers - 1; in azalia_mixer_init()
1356 this->nmixers++; in azalia_mixer_init()
1357 d->next = this->nmixers; in azalia_mixer_init()
1360 m = &this->mixers[this->nmixers]; in azalia_mixer_init()
1361 m->nid = this->recvols.master; in azalia_mixer_init()
1364 d->prev = this->nmixers - 1; in azalia_mixer_init()
1369 for (i = 0, j = 0; i < this->recvols.nslaves; i++) { in azalia_mixer_init()
1370 ww = &this->w[this->recvols.slaves[i]]; in azalia_mixer_init()
1376 this->nmixers++; in azalia_mixer_init()
1382 if (this->dacs.ngroups > 1) { in azalia_mixer_init()
1388 m->nid = this->audiofunc; in azalia_mixer_init()
1396 this->nmixers++; in azalia_mixer_init()
1402 if (this->adcs.ngroups > 1) { in azalia_mixer_init()
1408 m->nid = this->audiofunc; in azalia_mixer_init()
1416 this->nmixers++; in azalia_mixer_init()
1419 azalia_mixer_fix_indexes(this); in azalia_mixer_init()
1420 azalia_mixer_default(this); in azalia_mixer_init()
1436 azalia_mixer_ensure_capacity(codec_t *this, size_t newsize) in azalia_mixer_ensure_capacity() argument
1441 if (this->maxmixers >= newsize) in azalia_mixer_ensure_capacity()
1443 newmax = this->maxmixers + 10; in azalia_mixer_ensure_capacity()
1449 printf("%s: out of memory in %s\n", XNAME(this), __func__); in azalia_mixer_ensure_capacity()
1452 bcopy(this->mixers, newbuf, this->maxmixers * sizeof(mixer_item_t)); in azalia_mixer_ensure_capacity()
1453 free(this->mixers, M_DEVBUF, this->maxmixers * sizeof(mixer_item_t)); in azalia_mixer_ensure_capacity()
1454 this->mixers = newbuf; in azalia_mixer_ensure_capacity()
1455 this->maxmixers = newmax; in azalia_mixer_ensure_capacity()
1460 azalia_mixer_fix_indexes(codec_t *this) in azalia_mixer_fix_indexes() argument
1465 for (i = 0; i < this->nmixers; i++) { in azalia_mixer_fix_indexes()
1466 d = &this->mixers[i].devinfo; in azalia_mixer_fix_indexes()
1482 azalia_mixer_default(codec_t *this) in azalia_mixer_default() argument
1490 for (i = 0; i < this->nmixers; i++) { in azalia_mixer_default()
1491 m = &this->mixers[i]; in azalia_mixer_default()
1500 azalia_mixer_set(this, m->nid, m->target, &mc); in azalia_mixer_default()
1504 for (i = 0; i < this->nmixers; i++) { in azalia_mixer_default()
1505 m = &this->mixers[i]; in azalia_mixer_default()
1516 if (WIDGET_CHANNELS(&this->w[m->nid]) == 2) { in azalia_mixer_default()
1520 azalia_mixer_set(this, m->nid, m->target, &mc); in azalia_mixer_default()
1524 for (i = 0; i < this->nmixers; i++) { in azalia_mixer_default()
1525 m = &this->mixers[i]; in azalia_mixer_default()
1533 if (!azalia_widget_enabled(this, m->nid)) { in azalia_mixer_default()
1537 w = &this->w[m->nid]; in azalia_mixer_default()
1539 if (!azalia_widget_enabled(this, w->connections[j])) in azalia_mixer_default()
1541 if (w->nid == this->input_mixer && in azalia_mixer_default()
1542 w->connections[j] == this->mic) in azalia_mixer_default()
1546 azalia_mixer_set(this, m->nid, m->target, &mc); in azalia_mixer_default()
1550 for (i = 0; i < this->nmixers; i++) { in azalia_mixer_default()
1551 m = &this->mixers[i]; in azalia_mixer_default()
1555 azalia_mixer_get(this, m->nid, m->target, &mc); in azalia_mixer_default()
1566 azalia_mixer_set(this, m->nid, m->target, &mc); in azalia_mixer_default()
1570 for (i = 0; i < this->playvols.nslaves; i++) { in azalia_mixer_default()
1571 if (!(this->playvols.cur & (1 << i))) in azalia_mixer_default()
1573 w = &this->w[this->playvols.slaves[i]]; in azalia_mixer_default()
1578 azalia_mixer_get(this, w->nid, tgt, &mc); in azalia_mixer_default()
1579 this->playvols.vol_l = mc.un.value.level[0]; in azalia_mixer_default()
1580 this->playvols.vol_r = mc.un.value.level[0]; in azalia_mixer_default()
1583 this->playvols.mute = 0; in azalia_mixer_default()
1586 for (i = 0; i < this->recvols.nslaves; i++) { in azalia_mixer_default()
1587 if (!(this->recvols.cur & (1 << i))) in azalia_mixer_default()
1589 w = &this->w[this->recvols.slaves[i]]; in azalia_mixer_default()
1600 azalia_mixer_get(this, w->nid, tgt, &mc); in azalia_mixer_default()
1601 this->recvols.vol_l = mc.un.value.level[0]; in azalia_mixer_default()
1602 this->recvols.vol_r = mc.un.value.level[0]; in azalia_mixer_default()
1605 this->recvols.mute = 0; in azalia_mixer_default()
1607 err = azalia_codec_enable_unsol(this); in azalia_mixer_default()
1615 azalia_codec_enable_unsol(codec_t *this) in azalia_codec_enable_unsol() argument
1622 for (i = 0; i < this->nsense_pins; i++) { in azalia_codec_enable_unsol()
1623 if (this->spkr_muters & (1 << i)) { in azalia_codec_enable_unsol()
1624 azalia_comresp(this, this->sense_pins[i], in azalia_codec_enable_unsol()
1629 if (this->spkr_muters != 0) in azalia_codec_enable_unsol()
1630 azalia_unsol_event(this, AZ_TAG_SPKR); in azalia_codec_enable_unsol()
1633 if (this->playvols.master != this->audiofunc) { in azalia_codec_enable_unsol()
1635 w = &this->w[this->playvols.master]; in azalia_codec_enable_unsol()
1636 err = azalia_comresp(this, w->nid, CORB_GET_VOLUME_KNOB, in azalia_codec_enable_unsol()
1644 this->playvols.hw_step = CORB_VKNOB_VOLUME(result); in azalia_codec_enable_unsol()
1645 this->playvols.hw_nsteps = COP_VKCAP_NUMSTEPS(w->d.volume.cap); in azalia_codec_enable_unsol()
1649 err = azalia_comresp(this, w->nid, CORB_SET_VOLUME_KNOB, in azalia_codec_enable_unsol()
1664 err = azalia_comresp(this, w->nid, in azalia_codec_enable_unsol()
1676 azalia_mixer_delete(codec_t *this) in azalia_mixer_delete() argument
1678 if (this->mixers != NULL) { in azalia_mixer_delete()
1679 free(this->mixers, M_DEVBUF, 0); in azalia_mixer_delete()
1680 this->mixers = NULL; in azalia_mixer_delete()
1689 azalia_mixer_get(const codec_t *this, nid_t nid, int target, in azalia_mixer_get() argument
1702 err = azalia_comresp(this, nid, CORB_GET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_get()
1712 err = azalia_comresp(this, nid, CORB_GET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_get()
1717 mc->un.value.level[0] = azalia_mixer_from_device_value(this, in azalia_mixer_get()
1719 if (this->w[nid].type == COP_AWTYPE_AUDIO_SELECTOR || in azalia_mixer_get()
1720 this->w[nid].type == COP_AWTYPE_AUDIO_MIXER) { in azalia_mixer_get()
1721 n = this->w[nid].connections[MI_TARGET_INAMP(target)]; in azalia_mixer_get()
1722 if (!azalia_widget_enabled(this, n)) { in azalia_mixer_get()
1729 mc->un.value.num_channels = WIDGET_CHANNELS(&this->w[n]); in azalia_mixer_get()
1731 err = azalia_comresp(this, nid, in azalia_mixer_get()
1738 (this, nid, target, CORB_GAGM_GAIN(result)); in azalia_mixer_get()
1744 err = azalia_comresp(this, nid, CORB_GET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_get()
1753 err = azalia_comresp(this, nid, CORB_GET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_get()
1757 mc->un.value.level[0] = azalia_mixer_from_device_value(this, in azalia_mixer_get()
1759 mc->un.value.num_channels = WIDGET_CHANNELS(&this->w[nid]); in azalia_mixer_get()
1761 err = azalia_comresp(this, nid, in azalia_mixer_get()
1767 (this, nid, target, CORB_GAGM_GAIN(result)); in azalia_mixer_get()
1773 err = azalia_comresp(this, nid, in azalia_mixer_get()
1778 if (!azalia_widget_enabled(this, in azalia_mixer_get()
1779 this->w[nid].connections[result])) in azalia_mixer_get()
1787 err = azalia_comresp(this, nid, in azalia_mixer_get()
1798 cap = COP_PINCAP_VREF(this->w[nid].d.pin.cap); in azalia_mixer_get()
1815 err = azalia_comresp(this, nid, in azalia_mixer_get()
1824 mc->un.ord = this->dacs.cur; in azalia_mixer_get()
1829 mc->un.ord = this->adcs.cur; in azalia_mixer_get()
1834 err = azalia_comresp(this, nid, CORB_GET_DIGITAL_CONTROL, in azalia_mixer_get()
1840 err = azalia_comresp(this, nid, CORB_GET_DIGITAL_CONTROL, in azalia_mixer_get()
1850 err = azalia_comresp(this, nid, CORB_GET_EAPD_BTL_ENABLE, in azalia_mixer_get()
1859 err = azalia_comresp(this, nid, CORB_GET_PIN_SENSE, in azalia_mixer_get()
1870 if (!azalia_widget_enabled(this, nid)) { in azalia_mixer_get()
1871 DPRINTF(("%s: invalid muteset nid\n", XNAME(this))); in azalia_mixer_get()
1874 w = &this->w[nid]; in azalia_mixer_get()
1877 if (!azalia_widget_enabled(this, w->connections[i])) in azalia_mixer_get()
1879 err = azalia_comresp(this, nid, in azalia_mixer_get()
1893 if (!azalia_widget_enabled(this, nid)) { in azalia_mixer_get()
1894 DPRINTF(("%s: invalid mixerset nid\n", XNAME(this))); in azalia_mixer_get()
1897 w = &this->w[nid]; in azalia_mixer_get()
1900 if (!azalia_widget_enabled(this, w->connections[i])) in azalia_mixer_get()
1908 if (nid == this->speaker) { in azalia_mixer_get()
1909 mc->un.mask = this->spkr_muters; in azalia_mixer_get()
1911 DPRINTF(("%s: invalid senseset nid\n", XNAME(this))); in azalia_mixer_get()
1920 mc->un.value.level[0] = this->playvols.vol_l; in azalia_mixer_get()
1921 mc->un.value.level[1] = this->playvols.vol_r; in azalia_mixer_get()
1924 mc->un.ord = this->playvols.mute; in azalia_mixer_get()
1927 mc->un.mask = this->playvols.cur; in azalia_mixer_get()
1931 XNAME(this))); in azalia_mixer_get()
1940 mc->un.value.level[0] = this->recvols.vol_l; in azalia_mixer_get()
1941 mc->un.value.level[1] = this->recvols.vol_r; in azalia_mixer_get()
1944 mc->un.ord = this->recvols.mute; in azalia_mixer_get()
1947 mc->un.mask = this->recvols.cur; in azalia_mixer_get()
1951 XNAME(this))); in azalia_mixer_get()
1958 XNAME(this), __func__, target)); in azalia_mixer_get()
1965 azalia_mixer_set(codec_t *this, nid_t nid, int target, const mixer_ctrl_t *mc) in azalia_mixer_set() argument
1977 err = azalia_comresp(this, nid, CORB_GET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_set()
1987 err = azalia_comresp(this, nid, CORB_SET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_set()
1991 if (WIDGET_CHANNELS(&this->w[nid]) == 2) { in azalia_mixer_set()
1992 err = azalia_comresp(this, nid, in azalia_mixer_set()
2003 err = azalia_comresp(this, nid, in azalia_mixer_set()
2014 err = azalia_comresp(this, nid, CORB_GET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_set()
2019 value = azalia_mixer_to_device_value(this, nid, target, in azalia_mixer_set()
2025 err = azalia_comresp(this, nid, CORB_SET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_set()
2030 WIDGET_CHANNELS(&this->w[nid]) == 2) { in azalia_mixer_set()
2031 err = azalia_comresp(this, nid, in azalia_mixer_set()
2037 value = azalia_mixer_to_device_value(this, nid, target, in azalia_mixer_set()
2043 err = azalia_comresp(this, nid, in azalia_mixer_set()
2052 err = azalia_comresp(this, nid, CORB_GET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_set()
2059 err = azalia_comresp(this, nid, CORB_SET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_set()
2063 if (WIDGET_CHANNELS(&this->w[nid]) == 2) { in azalia_mixer_set()
2064 err = azalia_comresp(this, nid, in azalia_mixer_set()
2073 err = azalia_comresp(this, nid, in azalia_mixer_set()
2084 err = azalia_comresp(this, nid, CORB_GET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_set()
2088 value = azalia_mixer_to_device_value(this, nid, target, in azalia_mixer_set()
2093 err = azalia_comresp(this, nid, CORB_SET_AMPLIFIER_GAIN_MUTE, in azalia_mixer_set()
2098 WIDGET_CHANNELS(&this->w[nid]) == 2) { in azalia_mixer_set()
2099 err = azalia_comresp(this, nid, in azalia_mixer_set()
2104 value = azalia_mixer_to_device_value(this, nid, target, in azalia_mixer_set()
2109 err = azalia_comresp(this, nid, in azalia_mixer_set()
2119 mc->un.ord >= this->w[nid].nconnections || in azalia_mixer_set()
2120 !azalia_widget_enabled(this, in azalia_mixer_set()
2121 this->w[nid].connections[mc->un.ord])) in azalia_mixer_set()
2123 err = azalia_comresp(this, nid, in azalia_mixer_set()
2132 err = azalia_comresp(this, nid, in azalia_mixer_set()
2144 if (this->qrks & AZ_QRK_WID_OVREF50) in azalia_mixer_set()
2159 err = azalia_comresp(this, nid, in azalia_mixer_set()
2167 for (i = 0; i < this->nsense_pins; i++) { in azalia_mixer_set()
2168 if (this->sense_pins[i] == nid) in azalia_mixer_set()
2171 if (i < this->nsense_pins) { in azalia_mixer_set()
2172 azalia_unsol_event(this, AZ_TAG_SPKR); in azalia_mixer_set()
2180 err = azalia_comresp(this, nid, in azalia_mixer_set()
2189 err = azalia_comresp(this, nid, in azalia_mixer_set()
2197 if (this->running) in azalia_mixer_set()
2199 if (mc->un.ord >= this->dacs.ngroups) in azalia_mixer_set()
2201 if (mc->un.ord != this->dacs.cur) in azalia_mixer_set()
2202 return azalia_codec_construct_format(this, in azalia_mixer_set()
2203 mc->un.ord, this->adcs.cur); in azalia_mixer_set()
2210 if (this->running) in azalia_mixer_set()
2212 if (mc->un.ord >= this->adcs.ngroups) in azalia_mixer_set()
2214 if (mc->un.ord != this->adcs.cur) in azalia_mixer_set()
2215 return azalia_codec_construct_format(this, in azalia_mixer_set()
2216 this->dacs.cur, mc->un.ord); in azalia_mixer_set()
2223 err = azalia_comresp(this, nid, CORB_GET_DIGITAL_CONTROL, in azalia_mixer_set()
2227 err = azalia_comresp(this, nid, CORB_SET_DIGITAL_CONTROL_L, in azalia_mixer_set()
2236 err = azalia_comresp(this, nid, CORB_SET_DIGITAL_CONTROL_H, in azalia_mixer_set()
2246 err = azalia_comresp(this, nid, in azalia_mixer_set()
2256 err = azalia_comresp(this, nid, in azalia_mixer_set()
2269 if (!azalia_widget_enabled(this, nid)) { in azalia_mixer_set()
2270 DPRINTF(("%s: invalid muteset nid\n", XNAME(this))); in azalia_mixer_set()
2273 w = &this->w[nid]; in azalia_mixer_set()
2275 if (!azalia_widget_enabled(this, w->connections[i])) in azalia_mixer_set()
2281 err = azalia_comresp(this, nid, in azalia_mixer_set()
2292 err = azalia_comresp(this, nid, in azalia_mixer_set()
2298 err = azalia_comresp(this, nid, in azalia_mixer_set()
2309 err = azalia_comresp(this, nid, in azalia_mixer_set()
2324 if (nid == this->speaker) { in azalia_mixer_set()
2325 this->spkr_muters = mc->un.mask; in azalia_mixer_set()
2326 azalia_unsol_event(this, AZ_TAG_SPKR); in azalia_mixer_set()
2328 DPRINTF(("%s: invalid senseset nid\n", XNAME(this))); in azalia_mixer_set()
2341 this->playvols.vol_l = mc->un.value.level[0]; in azalia_mixer_set()
2342 this->playvols.vol_r = mc->un.value.level[1]; in azalia_mixer_set()
2343 for (i = 0; i < this->playvols.nslaves; i++) { in azalia_mixer_set()
2344 if (!(this->playvols.cur & (1 << i))) in azalia_mixer_set()
2346 w = &this->w[this->playvols.slaves[i]]; in azalia_mixer_set()
2353 azalia_mixer_get(this, w->nid, in azalia_mixer_set()
2360 mc2.un.value.level[0] = this->playvols.vol_l; in azalia_mixer_set()
2361 mc2.un.value.level[1] = this->playvols.vol_r; in azalia_mixer_set()
2362 err = azalia_mixer_set(this, w->nid, in azalia_mixer_set()
2373 this->playvols.mute = mc->un.ord; in azalia_mixer_set()
2374 for (i = 0; i < this->playvols.nslaves; i++) { in azalia_mixer_set()
2375 if (!(this->playvols.cur & (1 << i))) in azalia_mixer_set()
2377 w = &this->w[this->playvols.slaves[i]]; in azalia_mixer_set()
2380 if (this->spkr_muted == 1 && in azalia_mixer_set()
2381 ((this->spkr_mute_method == in azalia_mixer_set()
2383 (w->nid == this->speaker || in azalia_mixer_set()
2384 w->nid == this->speaker2)) || in azalia_mixer_set()
2385 (this->spkr_mute_method == in azalia_mixer_set()
2387 w->nid == this->spkr_dac))) { in azalia_mixer_set()
2391 mc2.un.ord = this->playvols.mute; in azalia_mixer_set()
2392 err = azalia_mixer_set(this, w->nid, in azalia_mixer_set()
2402 this->playvols.cur = in azalia_mixer_set()
2403 (mc->un.mask & this->playvols.mask); in azalia_mixer_set()
2407 XNAME(this))); in azalia_mixer_set()
2422 this->recvols.vol_l = mc->un.value.level[0]; in azalia_mixer_set()
2423 this->recvols.vol_r = mc->un.value.level[1]; in azalia_mixer_set()
2424 for (i = 0; i < this->recvols.nslaves; i++) { in azalia_mixer_set()
2425 if (!(this->recvols.cur & (1 << i))) in azalia_mixer_set()
2427 w = &this->w[this->recvols.slaves[i]]; in azalia_mixer_set()
2439 mc2.un.value.level[0] = this->recvols.vol_l; in azalia_mixer_set()
2440 mc2.un.value.level[1] = this->recvols.vol_r; in azalia_mixer_set()
2441 err = azalia_mixer_set(this, w->nid, in azalia_mixer_set()
2452 this->recvols.mute = mc->un.ord; in azalia_mixer_set()
2453 for (i = 0; i < this->recvols.nslaves; i++) { in azalia_mixer_set()
2454 if (!(this->recvols.cur & (1 << i))) in azalia_mixer_set()
2456 w = &this->w[this->recvols.slaves[i]]; in azalia_mixer_set()
2467 mc2.un.ord = this->recvols.mute; in azalia_mixer_set()
2468 err = azalia_mixer_set(this, w->nid, in azalia_mixer_set()
2478 this->recvols.cur = (mc->un.mask & this->recvols.mask); in azalia_mixer_set()
2482 XNAME(this))); in azalia_mixer_set()
2489 XNAME(this), __func__, target)); in azalia_mixer_set()
2496 azalia_mixer_from_device_value(const codec_t *this, nid_t nid, int target, in azalia_mixer_from_device_value() argument
2503 steps = COP_AMPCAP_NUMSTEPS(this->w[nid].inamp_cap); in azalia_mixer_from_device_value()
2504 ctloff = COP_AMPCAP_CTLOFF(this->w[nid].inamp_cap); in azalia_mixer_from_device_value()
2506 steps = COP_AMPCAP_NUMSTEPS(this->w[nid].outamp_cap); in azalia_mixer_from_device_value()
2507 ctloff = COP_AMPCAP_CTLOFF(this->w[nid].outamp_cap); in azalia_mixer_from_device_value()
2523 azalia_mixer_to_device_value(const codec_t *this, nid_t nid, int target, in azalia_mixer_to_device_value() argument
2530 steps = COP_AMPCAP_NUMSTEPS(this->w[nid].inamp_cap); in azalia_mixer_to_device_value()
2531 ctloff = COP_AMPCAP_CTLOFF(this->w[nid].inamp_cap); in azalia_mixer_to_device_value()
2533 steps = COP_AMPCAP_NUMSTEPS(this->w[nid].outamp_cap); in azalia_mixer_to_device_value()
2534 ctloff = COP_AMPCAP_CTLOFF(this->w[nid].outamp_cap); in azalia_mixer_to_device_value()
2549 azalia_gpio_unmute(codec_t *this, int pin) in azalia_gpio_unmute() argument
2553 azalia_comresp(this, this->audiofunc, CORB_GET_GPIO_DATA, 0, &data); in azalia_gpio_unmute()
2554 azalia_comresp(this, this->audiofunc, CORB_GET_GPIO_ENABLE_MASK, 0, &mask); in azalia_gpio_unmute()
2555 azalia_comresp(this, this->audiofunc, CORB_GET_GPIO_DIRECTION, 0, &dir); in azalia_gpio_unmute()
2561 azalia_comresp(this, this->audiofunc, CORB_SET_GPIO_ENABLE_MASK, mask, NULL); in azalia_gpio_unmute()
2562 azalia_comresp(this, this->audiofunc, CORB_SET_GPIO_DIRECTION, dir, NULL); in azalia_gpio_unmute()
2564 azalia_comresp(this, this->audiofunc, CORB_SET_GPIO_DATA, data, NULL); in azalia_gpio_unmute()
2611 azalia_codec_gpio_quirks(codec_t *this) in azalia_codec_gpio_quirks() argument
2613 if (this->qrks & AZ_QRK_GPIO_POL_0) { in azalia_codec_gpio_quirks()
2614 azalia_comresp(this, this->audiofunc, in azalia_codec_gpio_quirks()
2617 if (this->qrks & AZ_QRK_GPIO_UNMUTE_0) { in azalia_codec_gpio_quirks()
2618 azalia_gpio_unmute(this, 0); in azalia_codec_gpio_quirks()
2620 if (this->qrks & AZ_QRK_GPIO_UNMUTE_1) { in azalia_codec_gpio_quirks()
2621 azalia_gpio_unmute(this, 1); in azalia_codec_gpio_quirks()
2623 if (this->qrks & AZ_QRK_GPIO_UNMUTE_2) { in azalia_codec_gpio_quirks()
2624 azalia_gpio_unmute(this, 2); in azalia_codec_gpio_quirks()
2626 if (this->qrks & AZ_QRK_GPIO_UNMUTE_3) { in azalia_codec_gpio_quirks()
2627 azalia_gpio_unmute(this, 3); in azalia_codec_gpio_quirks()
2634 azalia_codec_widget_quirks(codec_t *this, nid_t nid) in azalia_codec_widget_quirks() argument
2638 w = &this->w[nid]; in azalia_codec_widget_quirks()
2640 if (this->qrks & AZ_QRK_WID_BEEP_1D && in azalia_codec_widget_quirks()
2648 if (this->qrks & AZ_QRK_WID_TPDOCK1 && in azalia_codec_widget_quirks()
2655 if (this->qrks & AZ_QRK_WID_TPDOCK1 && in azalia_codec_widget_quirks()
2662 if (this->qrks & AZ_QRK_WID_TPDOCK2 && in azalia_codec_widget_quirks()
2669 if (this->qrks & AZ_QRK_WID_TPDOCK2 && in azalia_codec_widget_quirks()
2676 if (this->qrks & AZ_QRK_WID_TPDOCK3 && in azalia_codec_widget_quirks()
2683 if (this->qrks & AZ_QRK_WID_TPDOCK3 && in azalia_codec_widget_quirks()
2690 if (this->qrks & AZ_QRK_WID_CDIN_1C && in azalia_codec_widget_quirks()
2697 if ((this->qrks & AZ_QRK_WID_AD1981_OAMP) && in azalia_codec_widget_quirks()
2703 if ((this->qrks & AZ_QRK_WID_CLOSE_PCBEEP) && (nid == 0x20)) { in azalia_codec_widget_quirks()
2705 azalia_comresp(this, nid, CORB_SET_COEFFICIENT_INDEX, 0x36, in azalia_codec_widget_quirks()
2707 azalia_comresp(this, nid, CORB_SET_PROCESSING_COEFFICIENT, in azalia_codec_widget_quirks()
2716 azalia_codec_init_dolby_atmos(codec_t *this) in azalia_codec_init_dolby_atmos() argument
2743 if (azalia_comresp(this, atmos_init[i * 3], in azalia_codec_init_dolby_atmos()
2749 if (azalia_comresp(this, 0x06, 0x73e, 0x00, NULL)) in azalia_codec_init_dolby_atmos()
2751 if (azalia_comresp(this, 0x20, 0x500, 0x26, NULL)) in azalia_codec_init_dolby_atmos()
2753 if (azalia_comresp(this, 0x20, 0x4b0, 0x00, NULL)) in azalia_codec_init_dolby_atmos()
2756 if (azalia_comresp(this, 0x21, 0xf09, 0x00, NULL)) in azalia_codec_init_dolby_atmos()
2760 if (azalia_comresp(this, 0x06, 0x73e, 0x80, NULL)) in azalia_codec_init_dolby_atmos()
2764 if (azalia_comresp(this, 0x20, 0x500, 0x26, NULL)) in azalia_codec_init_dolby_atmos()
2766 if (azalia_comresp(this, 0x20, 0x4f0, 0x00, NULL)) in azalia_codec_init_dolby_atmos()
2768 if (azalia_comresp(this, 0x20, 0x500, 0x23, NULL)) in azalia_codec_init_dolby_atmos()
2771 if (azalia_comresp(this, 0x20, 0x400, in azalia_codec_init_dolby_atmos()
2776 if (azalia_comresp(this, 0x20, 0x500, 0x25, NULL)) in azalia_codec_init_dolby_atmos()
2778 if (azalia_comresp(this, 0x20, 0x400, in azalia_codec_init_dolby_atmos()
2783 if (azalia_comresp(this, 0x20, 0x500, 0x26, NULL)) in azalia_codec_init_dolby_atmos()
2785 if (azalia_comresp(this, 0x20, 0x4b0, 0x10, NULL)) in azalia_codec_init_dolby_atmos()