Lines Matching +full:15 +full:- +full:input

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
6 * Copyright (c) 2008-2012 Alexander Motin <mav@FreeBSD.org>
160 if (vendor_id != p->id) in match_pin_patches()
162 for (struct model_pin_patch_t *pp = p->patches; pp->models; pp++) { in match_pin_patches()
163 for (struct pin_machine_model_t *model = pp->models; model->id != 0; model++) { in match_pin_patches()
164 if (HDA_DEV_MATCH(model->id, vendor_subid)) in match_pin_patches()
165 return (pp->pin_patches); in match_pin_patches()
178 nid_t nid = w->nid; in hdac_pin_patch()
180 config = orig = w->wclass.pin.config; in hdac_pin_patch()
181 id = hdaa_codec_id(w->devinfo); in hdac_pin_patch()
182 subid = hdaa_card_id(w->devinfo); in hdac_pin_patch()
235 patch_str = "as=1 seq=15"; in hdac_pin_patch()
238 patch_str = "as=2 seq=15"; in hdac_pin_patch()
247 patch_str = "as=1 seq=15"; in hdac_pin_patch()
249 case 28: /* 5.1 out => 2.0 out + 1 input */ in hdac_pin_patch()
250 patch_str = "device=Line-in as=8 seq=1"; in hdac_pin_patch()
252 case 29: /* Can't use this as input, as the only available mic in hdac_pin_patch()
254 * If you want to use this rear connector as mic input, in hdac_pin_patch()
258 case 31: /* Lot of inputs configured with as=15 and unusable */ in hdac_pin_patch()
275 patch_str = "as=1 seq=15"; in hdac_pin_patch()
282 patch_str = "as=1 seq=15"; in hdac_pin_patch()
296 patch_str = "as=1 seq=15"; in hdac_pin_patch()
303 patch_str = "as=2 seq=15"; in hdac_pin_patch()
312 patch_str = "as=1 seq=15"; in hdac_pin_patch()
322 patch_str = "as=1 seq=15"; in hdac_pin_patch()
334 patch_str = "as=1 seq=15"; in hdac_pin_patch()
343 patch_str = "as=1 seq=15 color=Black loc=Left"; in hdac_pin_patch()
346 patch_str = "as=3 seq=15 color=Black loc=Left"; in hdac_pin_patch()
353 patch_str = "as=1 seq=15 color=Black loc=Left"; in hdac_pin_patch()
363 patch_str = "as=1 seq=15 device=Headphones"; in hdac_pin_patch()
370 patch_str = "as=1 seq=15"; in hdac_pin_patch()
373 patch_str = "as=4 seq=15"; in hdac_pin_patch()
384 patch_str = "as=1 seq=15"; in hdac_pin_patch()
396 for (struct pin_patch_t *patch = pin_patches; patch->type; patch++) { in hdac_pin_patch()
397 if (nid == patch->nid) { in hdac_pin_patch()
398 switch (patch->type) { in hdac_pin_patch()
400 patch_str = patch->patch.string; in hdac_pin_patch()
403 config &= ~patch->patch.mask[0]; in hdac_pin_patch()
404 config |= patch->patch.mask[1]; in hdac_pin_patch()
407 config = patch->patch.override; in hdac_pin_patch()
423 device_printf(w->devinfo->dev, in hdac_pin_patch()
424 "Patching pin config nid=%u 0x%08x -> 0x%08x\n", in hdac_pin_patch()
427 w->wclass.pin.config = config; in hdac_pin_patch()
433 struct hdaa_devinfo *devinfo = w->devinfo; in hdaa_widget_patch()
435 nid_t beeper = -1; in hdaa_widget_patch()
437 orig = w->param.widget_cap; in hdaa_widget_patch()
438 /* On some codecs beeper is an input pin, but it is not recordable in hdaa_widget_patch()
457 if (hda_get_vendor_id(devinfo->dev) == REALTEK_VENDORID && in hdaa_widget_patch()
460 if (w->nid == beeper) { in hdaa_widget_patch()
461 w->param.widget_cap &= ~HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_MASK; in hdaa_widget_patch()
462 w->param.widget_cap |= HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_BEEP_WIDGET << in hdaa_widget_patch()
464 w->waspin = 1; in hdaa_widget_patch()
467 * Clear "digital" flag from digital mic input, as its signal then goes in hdaa_widget_patch()
471 w->nid == 23) in hdaa_widget_patch()
472 w->param.widget_cap &= ~HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK; in hdaa_widget_patch()
474 if (w->param.widget_cap != orig) { in hdaa_widget_patch()
475 device_printf(w->devinfo->dev, in hdaa_widget_patch()
476 "Patching widget caps nid=%u 0x%08x -> 0x%08x\n", in hdaa_widget_patch()
477 w->nid, orig, w->param.widget_cap); in hdaa_widget_patch()
481 if (w->type == HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_PIN_COMPLEX) in hdaa_widget_patch()
494 subsystemid = hda_get_subsystem_id(devinfo->dev); in hdaa_patch()
504 devinfo->quirks |= hdac_quirks[i].set; in hdaa_patch()
505 devinfo->quirks &= ~(hdac_quirks[i].unset); in hdaa_patch()
506 devinfo->gpio = hdac_quirks[i].gpio; in hdaa_patch()
509 /* Apply per-widget patch. */ in hdaa_patch()
510 for (i = devinfo->startnode; i < devinfo->endnode; i++) { in hdaa_patch()
526 w->connsenable[0] = 0; in hdaa_patch()
529 w->connsenable[0] = 0; in hdaa_patch()
532 w->connsenable[0] = 0; in hdaa_patch()
536 w->connsenable[1] = 0; in hdaa_patch()
539 w->connsenable[1] = 0; in hdaa_patch()
543 w->connsenable[3] = 0; in hdaa_patch()
547 * This CODEC has overcomplicated input mixing. in hdaa_patch()
550 /* Disable input mono mixer. Not needed and not supported. */ in hdaa_patch()
553 w->enable = 0; in hdaa_patch()
554 /* Disable any with any input mixing mesh. Use separately. */ in hdaa_patch()
557 w->enable = 0; in hdaa_patch()
560 w->enable = 0; in hdaa_patch()
563 w->enable = 0; in hdaa_patch()
566 w->enable = 0; in hdaa_patch()
568 w = hdaa_widget_get(devinfo, 15); in hdaa_patch()
570 w->connsenable[3] = 0; in hdaa_patch()
574 if ((w->wclass.pin.config & in hdaa_patch()
579 w->connsenable[2] = 0; in hdaa_patch()
581 w = hdaa_widget_get(devinfo, 15); in hdaa_patch()
583 w->connsenable[0] = 0; in hdaa_patch()
588 if ((w->wclass.pin.config & in hdaa_patch()
593 w->connsenable[0] = 0; in hdaa_patch()
595 w = hdaa_widget_get(devinfo, 15); in hdaa_patch()
597 w->connsenable[1] = 0; in hdaa_patch()
608 if (w != NULL && w->type == in hdaa_patch()
610 (w->wclass.pin.config & in hdaa_patch()
613 devinfo->quirks &= in hdaa_patch()
625 w->connsenable[3] = 0; in hdaa_patch()
629 w->enable = 0; in hdaa_patch()
633 w->connsenable[0] = 0; in hdaa_patch()
636 w->connsenable[0] = 0; in hdaa_patch()
639 w->connsenable[0] = 0; in hdaa_patch()
642 w->connsenable[0] = 0; in hdaa_patch()
647 * that mutes speaker if unused mixer at NID 15 is muted. in hdaa_patch()
654 w = hdaa_widget_get(devinfo, 15); in hdaa_patch()
656 w->param.inamp_cap = 0; in hdaa_patch()
670 w->connsenable[1] = 0; in hdaa_patch()
673 w->connsenable[1] = 0; in hdaa_patch()
676 w->connsenable[0] = 0; in hdaa_patch()
691 w->param.inamp_cap = in hdaa_patch()
697 w->param.inamp_cap = in hdaa_patch()
724 device_t dev = devinfo->dev; in hdaa_patch_direct()
740 hda_command(dev, HDA_CMD_12BIT(0, devinfo->nid, in hdaa_patch_direct()
745 hda_command(dev, HDA_CMD_12BIT(0, devinfo->nid, in hdaa_patch_direct()
760 hda_command(dev, HDA_CMD_12BIT(0, devinfo->nid, in hdaa_patch_direct()