Lines Matching +full:gpio +full:- +full:beeper
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
6 * Copyright (c) 2008-2012 Alexander Motin <mav@FreeBSD.org>
55 uint32_t gpio; member
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()
250 patch_str = "device=Line-in as=8 seq=1"; in hdac_pin_patch()
428 for (struct pin_patch_t *patch = pin_patches; patch->type; patch++) { in hdac_pin_patch()
429 if (nid == patch->nid) { in hdac_pin_patch()
430 switch (patch->type) { in hdac_pin_patch()
432 patch_str = patch->patch.string; in hdac_pin_patch()
435 config &= ~patch->patch.mask[0]; in hdac_pin_patch()
436 config |= patch->patch.mask[1]; in hdac_pin_patch()
439 config = patch->patch.override; in hdac_pin_patch()
455 device_printf(w->devinfo->dev, in hdac_pin_patch()
456 "Patching pin config nid=%u 0x%08x -> 0x%08x\n", in hdac_pin_patch()
459 w->wclass.pin.config = config; in hdac_pin_patch()
465 struct hdaa_devinfo *devinfo = w->devinfo; in hdaa_widget_patch()
467 nid_t beeper = -1; in hdaa_widget_patch() local
469 orig = w->param.widget_cap; in hdaa_widget_patch()
470 /* On some codecs beeper is an input pin, but it is not recordable in hdaa_widget_patch()
471 alone. Also most of BIOSes does not declare beeper pin. in hdaa_widget_patch()
472 Change beeper pin node type to beeper to help parser. */ in hdaa_widget_patch()
483 beeper = 26; in hdaa_widget_patch()
486 beeper = 23; in hdaa_widget_patch()
489 if (hda_get_vendor_id(devinfo->dev) == REALTEK_VENDORID && in hdaa_widget_patch()
491 beeper = 29; in hdaa_widget_patch()
492 if (w->nid == beeper) { in hdaa_widget_patch()
493 w->param.widget_cap &= ~HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_MASK; in hdaa_widget_patch()
494 w->param.widget_cap |= HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_BEEP_WIDGET << in hdaa_widget_patch()
496 w->waspin = 1; in hdaa_widget_patch()
503 w->nid == 23) in hdaa_widget_patch()
504 w->param.widget_cap &= ~HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK; in hdaa_widget_patch()
506 if (w->param.widget_cap != orig) { in hdaa_widget_patch()
507 device_printf(w->devinfo->dev, in hdaa_widget_patch()
508 "Patching widget caps nid=%u 0x%08x -> 0x%08x\n", in hdaa_widget_patch()
509 w->nid, orig, w->param.widget_cap); in hdaa_widget_patch()
513 if (w->type == HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_PIN_COMPLEX) in hdaa_widget_patch()
526 subsystemid = hda_get_subsystem_id(devinfo->dev); in hdaa_patch()
536 devinfo->quirks |= hdac_quirks[i].set; in hdaa_patch()
537 devinfo->quirks &= ~(hdac_quirks[i].unset); in hdaa_patch()
538 devinfo->gpio = hdac_quirks[i].gpio; in hdaa_patch()
541 /* Apply per-widget patch. */ in hdaa_patch()
542 for (i = devinfo->startnode; i < devinfo->endnode; i++) { in hdaa_patch()
558 w->connsenable[0] = 0; in hdaa_patch()
561 w->connsenable[0] = 0; in hdaa_patch()
564 w->connsenable[0] = 0; in hdaa_patch()
568 w->connsenable[1] = 0; in hdaa_patch()
571 w->connsenable[1] = 0; in hdaa_patch()
575 w->connsenable[3] = 0; in hdaa_patch()
585 w->enable = 0; in hdaa_patch()
589 w->enable = 0; in hdaa_patch()
592 w->enable = 0; in hdaa_patch()
595 w->enable = 0; in hdaa_patch()
598 w->enable = 0; in hdaa_patch()
602 w->connsenable[3] = 0; in hdaa_patch()
606 if ((w->wclass.pin.config & in hdaa_patch()
611 w->connsenable[2] = 0; in hdaa_patch()
615 w->connsenable[0] = 0; in hdaa_patch()
620 if ((w->wclass.pin.config & in hdaa_patch()
625 w->connsenable[0] = 0; in hdaa_patch()
629 w->connsenable[1] = 0; in hdaa_patch()
640 if (w != NULL && w->type == in hdaa_patch()
642 (w->wclass.pin.config & in hdaa_patch()
645 devinfo->quirks &= in hdaa_patch()
657 w->connsenable[3] = 0; in hdaa_patch()
661 w->enable = 0; in hdaa_patch()
665 w->connsenable[0] = 0; in hdaa_patch()
668 w->connsenable[0] = 0; in hdaa_patch()
671 w->connsenable[0] = 0; in hdaa_patch()
674 w->connsenable[0] = 0; in hdaa_patch()
688 w->param.inamp_cap = 0; in hdaa_patch()
702 w->connsenable[1] = 0; in hdaa_patch()
705 w->connsenable[1] = 0; in hdaa_patch()
708 w->connsenable[0] = 0; in hdaa_patch()
723 w->param.inamp_cap = in hdaa_patch()
729 w->param.inamp_cap = in hdaa_patch()
756 device_t dev = devinfo->dev; in hdaa_patch_direct()
772 hda_command(dev, HDA_CMD_12BIT(0, devinfo->nid, in hdaa_patch_direct()
777 hda_command(dev, HDA_CMD_12BIT(0, devinfo->nid, in hdaa_patch_direct()
792 hda_command(dev, HDA_CMD_12BIT(0, devinfo->nid, in hdaa_patch_direct()