Lines Matching refs:spec
246 struct sigmatel_spec *spec = codec->spec;
247 if (action == HDA_GEN_PCM_ACT_OPEN && spec->stream_delay)
248 msleep(spec->stream_delay);
256 struct sigmatel_spec *spec = codec->spec;
259 if (!spec->powerdown_adcs)
262 for (i = 0; i < spec->gen.num_all_adcs; i++) {
263 if (spec->gen.all_adcs[i] == hinfo->nid) {
274 spec->active_adcs |= (1 << idx);
279 spec->active_adcs &= ~(1 << idx);
328 struct sigmatel_spec *spec = codec->spec;
331 spec->gpio_data |= spec->mic_mute_led_gpio;
333 spec->gpio_data &= ~spec->mic_mute_led_gpio;
334 stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data);
375 struct sigmatel_spec *spec = codec->spec;
377 if (!spec->gpio_led)
381 if (spec->gpio_led_polarity)
384 if (!spec->vref_mute_led_nid) {
386 spec->gpio_data |= spec->gpio_led;
388 spec->gpio_data &= ~spec->gpio_led;
389 stac_gpio_set(codec, spec->gpio_mask,
390 spec->gpio_dir, spec->gpio_data);
392 spec->vref_led = muted ? AC_PINCTL_VREF_50 : AC_PINCTL_VREF_GRD;
393 stac_vrefout_set(codec, spec->vref_mute_led_nid,
394 spec->vref_led);
411 struct sigmatel_spec *spec = codec->spec;
413 if (spec->gpio_mute)
414 spec->gen.master_mute =
416 AC_VERB_GET_GPIO_DATA, 0) & spec->gpio_mute);
420 if (spec->eapd_mask && spec->eapd_switch) {
421 unsigned int val = spec->gpio_data;
422 if (spec->gen.speaker_muted)
423 val &= ~spec->eapd_mask;
425 val |= spec->eapd_mask;
426 if (spec->gpio_data != val) {
427 spec->gpio_data = val;
428 stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir,
437 struct sigmatel_spec *spec = codec->spec;
440 for (idx = 0; idx < spec->num_pwrs; idx++) {
441 if (spec->pwr_nids[idx] == nid)
444 if (idx >= spec->num_pwrs)
449 val = spec->power_map_bits;
456 if (val != spec->power_map_bits) {
457 spec->power_map_bits = val;
468 struct sigmatel_spec *spec = codec->spec;
471 if (!spec->num_pwrs)
482 for (i = 0; i < spec->num_pwrs; i++) {
483 hda_nid_t nid = spec->pwr_nids[i];
493 spec->power_map_bits);
513 struct sigmatel_spec *spec = codec->spec;
516 for (i = 0; i < spec->num_pwrs; i++) {
517 hda_nid_t nid = spec->pwr_nids[i];
521 spec->vref_mute_led_nid != nid &&
546 struct sigmatel_spec *spec = codec->spec;
549 if (get_int_hint(codec, "gpio_mask", &spec->gpio_mask)) {
550 spec->eapd_mask = spec->gpio_dir = spec->gpio_data =
551 spec->gpio_mask;
553 if (get_int_hint(codec, "gpio_dir", &spec->gpio_dir))
554 spec->gpio_dir &= spec->gpio_mask;
555 if (get_int_hint(codec, "gpio_data", &spec->gpio_data))
556 spec->gpio_data &= spec->gpio_mask;
557 if (get_int_hint(codec, "eapd_mask", &spec->eapd_mask))
558 spec->eapd_mask &= spec->gpio_mask;
559 if (get_int_hint(codec, "gpio_mute", &spec->gpio_mute))
560 spec->gpio_mute &= spec->gpio_mask;
563 spec->eapd_switch = val;
577 struct sigmatel_spec *spec = codec->spec;
579 ucontrol->value.integer.value[0] = !!(spec->aloopback &
580 (spec->aloopback_mask << idx));
588 struct sigmatel_spec *spec = codec->spec;
593 idx_val = spec->aloopback_mask << idx;
595 val = spec->aloopback | idx_val;
597 val = spec->aloopback & ~idx_val;
598 if (spec->aloopback == val)
601 spec->aloopback = val;
608 dac_mode >>= spec->aloopback_shift;
610 if (spec->aloopback & idx_val) {
712 struct sigmatel_spec *spec = codec->spec;
715 if (spec->gpio_led)
721 spec->gpio_led = 0x08; /* GPIO 3 */
723 spec->gpio_led = 0x01; /* GPIO 0 */
748 struct sigmatel_spec *spec = codec->spec;
751 if (get_int_hint(codec, "gpio_led", &spec->gpio_led)) {
753 &spec->gpio_led_polarity);
759 &spec->gpio_led_polarity,
760 &spec->gpio_led) == 2) {
765 if (spec->gpio_led < max_gpio)
766 spec->gpio_led = 1 << spec->gpio_led;
768 spec->vref_mute_led_nid = spec->gpio_led;
772 &spec->gpio_led_polarity) == 1) {
780 spec->gpio_led_polarity = default_polarity;
782 spec->gpio_led_polarity = 1;
795 spec->gpio_led_polarity = default_polarity;
804 struct sigmatel_spec *spec = codec->spec;
808 if (spec->gen.autocfg.line_out_type == AUTO_PIN_SPEAKER_OUT) {
809 nid_pin = spec->gen.autocfg.line_out_pins;
810 nids = spec->gen.autocfg.line_outs;
812 nid_pin = spec->gen.autocfg.speaker_pins;
813 nids = spec->gen.autocfg.speaker_outs;
832 struct sigmatel_spec *spec = codec->spec;
845 if (spec->anabeep_nid == nid)
849 knew = snd_hda_gen_add_kctl(&spec->gen,
859 knew = snd_hda_gen_add_kctl(&spec->gen,
898 struct sigmatel_spec *spec = codec->spec;
900 if (!snd_hda_gen_add_kctl(&spec->gen, NULL, &stac_dig_beep_ctrl))
914 struct sigmatel_spec *spec = codec->spec;
915 return snd_hda_input_mux_info(&spec->spdif_mux, uinfo);
922 struct sigmatel_spec *spec = codec->spec;
925 ucontrol->value.enumerated.item[0] = spec->cur_smux[smux_idx];
933 struct sigmatel_spec *spec = codec->spec;
936 return snd_hda_input_mux_put(codec, &spec->spdif_mux, ucontrol,
937 spec->gen.autocfg.dig_out_pins[smux_idx],
938 &spec->cur_smux[smux_idx]);
956 struct sigmatel_spec *spec = codec->spec;
957 struct auto_pin_cfg *cfg = &spec->gen.autocfg;
958 const char * const *labels = spec->spdif_labels;
974 snd_hda_add_imux_item(codec, &spec->spdif_mux, labels[i], i, NULL);
977 kctl = snd_hda_gen_add_kctl(&spec->gen, NULL, &stac_smux_mixer);
1357 struct sigmatel_spec *spec = codec->spec;
1360 spec->gpio_mask = spec->gpio_dir = 0x09;
1361 spec->gpio_data = 0x00;
1365 spec->gen.suppress_auto_mute = 1;
1793 struct sigmatel_spec *spec = codec->spec;
1799 spec->gpio_mask = spec->gpio_dir = spec->gpio_data = 0;
1804 struct sigmatel_spec *spec = codec->spec;
1807 spec->eapd_switch = 0;
1813 struct sigmatel_spec *spec = codec->spec;
1820 spec->volknob_init = 1;
1860 struct sigmatel_spec *spec = codec->spec;
1866 spec->eapd_switch = 0;
1880 struct sigmatel_spec *spec = codec->spec;
1885 spec->gen.suppress_auto_mute = 1;
2103 struct sigmatel_spec *spec = codec->spec;
2113 if (find_mute_led_cfg(codec, spec->default_polarity))
2115 spec->gpio_led,
2116 spec->gpio_led_polarity);
2119 spec->gen.line_in_auto_switch = true;
2135 struct sigmatel_spec *spec = codec->spec;
2138 spec->default_polarity = 0;
2144 struct sigmatel_spec *spec = codec->spec;
2147 spec->default_polarity = 1;
2153 struct sigmatel_spec *spec = codec->spec;
2156 spec->mic_mute_led_gpio = 0x08; /* GPIO3 */
2167 struct sigmatel_spec *spec = codec->spec;
2170 spec->gpio_led = 0x10; /* GPIO4 */
2171 spec->default_polarity = 0;
2178 struct sigmatel_spec *spec = codec->spec;
2181 spec->headset_jack = 1;
2188 struct sigmatel_spec *spec = codec->spec;
2192 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir =
2193 spec->gpio_data = 0x10;
2194 spec->eapd_switch = 0;
2201 struct sigmatel_spec *spec = codec->spec;
2210 spec->gen.preferred_dacs = preferred_pairs;
2957 struct sigmatel_spec *spec = codec->spec;
2958 ucontrol->value.integer.value[0] = !!(spec->gpio_data & 0x20);
2966 struct sigmatel_spec *spec = codec->spec;
2969 gpio_data = (spec->gpio_data & ~0x20) |
2971 if (gpio_data == spec->gpio_data)
2973 spec->gpio_data = gpio_data;
2974 stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data);
2987 struct sigmatel_spec *spec = codec->spec;
2989 if (!snd_hda_gen_add_kctl(&spec->gen, "Bass Speaker Playback Switch",
2993 spec->gpio_mask |= 0x20;
2994 spec->gpio_dir |= 0x20;
2995 spec->gpio_data |= 0x20;
3062 struct sigmatel_spec *spec = codec->spec;
3068 spec->gpio_mask = spec->gpio_dir = spec->gpio_data = 0;
3074 struct sigmatel_spec *spec = codec->spec;
3088 spec->gpio_mask |= 0x02;
3097 struct sigmatel_spec *spec = codec->spec;
3101 spec->gpio_led = 0x01;
3127 struct sigmatel_spec *spec = codec->spec;
3131 spec->gpio_led = 0x08;
3161 struct sigmatel_spec *spec = codec->spec;
3176 spec->gpio_led,
3177 spec->gpio_led_polarity);
3539 struct sigmatel_spec *spec = codec->spec;
3542 spec->gpio_mask = spec->gpio_dir = 0x03;
3543 spec->gpio_data = 0x03;
3838 struct sigmatel_spec *spec = codec->spec;
3842 spec->eapd_mask = spec->gpio_mask = 0;
3843 spec->gpio_dir = spec->gpio_data = 0;
3850 struct sigmatel_spec *spec = codec->spec;
3857 spec->eapd_mask = spec->gpio_mask = 0x04;
3858 spec->gpio_dir = spec->gpio_data = 0x04;
3862 spec->volknob_init = 1;
3868 struct sigmatel_spec *spec = codec->spec;
3872 spec->volknob_init = 1;
4104 struct sigmatel_spec *spec = codec->spec;
4109 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir = 0;
4116 struct sigmatel_spec *spec = codec->spec;
4130 spec->gpio_dir = 0x0b;
4131 spec->eapd_mask = 0x01;
4132 spec->gpio_mask = 0x1b;
4133 spec->gpio_mute = 0x10;
4137 spec->gpio_data = 0x01;
4144 struct sigmatel_spec *spec = codec->spec;
4147 spec->eapd_switch = 0;
4233 struct sigmatel_spec *spec = codec->spec;
4238 if (find_mute_led_cfg(codec, spec->default_polarity))
4240 spec->gpio_led,
4241 spec->gpio_led_polarity);
4274 struct sigmatel_spec *spec = codec->spec;
4278 if (spec->headset_jack)
4281 err = snd_hda_parse_pin_defcfg(codec, &spec->gen.autocfg, NULL, flags);
4286 spec->gen.pcm_playback_hook = stac_playback_pcm_hook;
4287 spec->gen.pcm_capture_hook = stac_capture_pcm_hook;
4289 spec->gen.automute_hook = stac_update_outputs;
4291 if (spec->gpio_led)
4294 err = snd_hda_gen_parse_auto_config(codec, &spec->gen.autocfg);
4298 if (spec->vref_mute_led_nid) {
4299 err = snd_hda_gen_fix_pin_power(codec, spec->vref_mute_led_nid);
4305 if (spec->anabeep_nid > 0) {
4307 spec->anabeep_nid);
4314 if (spec->gen.beep_nid) {
4315 hda_nid_t nid = spec->gen.beep_nid;
4323 codec->beep->linear_tone = spec->linear_tone_beep;
4337 if (spec->aloopback_ctl &&
4340 spec->aloopback_ctl->private_value >> 16;
4343 if (!snd_hda_gen_add_kctl(&spec->gen, NULL, spec->aloopback_ctl))
4347 if (spec->have_spdif_mux) {
4360 struct sigmatel_spec *spec = codec->spec;
4367 /* turn on EAPD statically when spec->eapd_switch isn't set.
4370 if (!spec->eapd_switch)
4371 spec->gpio_data |= spec->eapd_mask;
4372 stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data);
4377 if (spec->num_pwrs)
4380 spec->power_map_bits);
4383 if (spec->powerdown_adcs) {
4384 for (i = 0; i < spec->gen.num_all_adcs; i++) {
4385 if (spec->active_adcs & (1 << i))
4387 snd_hda_codec_write(codec, spec->gen.all_adcs[i], 0,
4448 struct sigmatel_spec *spec = codec->spec;
4452 if (spec->eapd_mask)
4453 stac_gpio_set(codec, spec->gpio_mask,
4454 spec->gpio_dir, spec->gpio_data &
4455 ~spec->eapd_mask);
4476 struct sigmatel_spec *spec;
4478 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
4479 if (!spec)
4481 snd_hda_gen_spec_init(&spec->gen);
4482 codec->spec = spec;
4484 spec->gen.dac_min_mute = true;
4491 struct sigmatel_spec *spec;
4498 spec = codec->spec;
4499 spec->linear_tone_beep = 1;
4500 spec->gen.own_eapd_ctl = 1;
4523 struct sigmatel_spec *spec;
4530 spec = codec->spec;
4531 spec->linear_tone_beep = 1;
4532 spec->gen.own_eapd_ctl = 1;
4553 struct sigmatel_spec *spec;
4561 spec = codec->spec;
4567 spec->linear_tone_beep = 0;
4568 spec->gen.mixer_nid = 0x1d;
4569 spec->have_spdif_mux = 1;
4580 spec->aloopback_ctl = &stac92hd73xx_6ch_loopback;
4583 spec->aloopback_ctl = &stac92hd73xx_8ch_loopback;
4586 spec->aloopback_ctl = &stac92hd73xx_10ch_loopback;
4590 spec->aloopback_mask = 0x01;
4591 spec->aloopback_shift = 8;
4593 spec->gen.beep_nid = 0x1c; /* digital beep */
4596 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir = 0x1;
4597 spec->gpio_data = 0x01;
4599 spec->eapd_switch = 1;
4601 spec->num_pwrs = ARRAY_SIZE(stac92hd73xx_pwr_nids);
4602 spec->pwr_nids = stac92hd73xx_pwr_nids;
4604 spec->gen.own_eapd_ctl = 1;
4605 spec->gen.power_down_unused = 1;
4611 if (!spec->volknob_init)
4623 if (spec->eapd_switch && !has_builtin_speaker(codec))
4624 spec->eapd_switch = 0;
4635 struct sigmatel_spec *spec = codec->spec;
4637 spec->gpio_mask |= spec->eapd_mask;
4638 if (spec->gpio_led) {
4639 if (!spec->vref_mute_led_nid) {
4640 spec->gpio_mask |= spec->gpio_led;
4641 spec->gpio_dir |= spec->gpio_led;
4642 spec->gpio_data |= spec->gpio_led;
4648 if (spec->mic_mute_led_gpio) {
4649 spec->gpio_mask |= spec->mic_mute_led_gpio;
4650 spec->gpio_dir |= spec->mic_mute_led_gpio;
4651 spec->mic_enabled = 0;
4652 spec->gpio_data |= spec->mic_mute_led_gpio;
4659 struct sigmatel_spec *spec;
4669 spec = codec->spec;
4671 spec->linear_tone_beep = 0;
4672 spec->gen.own_eapd_ctl = 1;
4673 spec->gen.power_down_unused = 1;
4674 spec->gen.mixer_nid = 0x1b;
4676 spec->gen.beep_nid = 0x21; /* digital beep */
4677 spec->pwr_nids = stac92hd83xxx_pwr_nids;
4678 spec->num_pwrs = ARRAY_SIZE(stac92hd83xxx_pwr_nids);
4679 spec->default_polarity = -1; /* no default cfg */
4708 struct sigmatel_spec *spec;
4718 spec = codec->spec;
4720 spec->linear_tone_beep = 0;
4721 spec->gen.own_eapd_ctl = 1;
4722 spec->gen.power_down_unused = 1;
4724 spec->gen.beep_nid = 0x19; /* digital beep */
4725 spec->pwr_nids = stac92hd95_pwr_nids;
4726 spec->num_pwrs = ARRAY_SIZE(stac92hd95_pwr_nids);
4727 spec->default_polarity = 0;
4750 struct sigmatel_spec *spec;
4758 spec = codec->spec;
4761 spec->linear_tone_beep = 0;
4762 spec->gen.own_eapd_ctl = 1;
4763 spec->gen.power_down_unused = 1;
4764 spec->gen.mixer_nid = 0x17;
4765 spec->have_spdif_mux = 1;
4768 spec->gpio_mask = 0x01;
4769 spec->gpio_dir = 0x01;
4770 spec->gpio_data = 0x01;
4780 spec->stream_delay = 40; /* 40 milliseconds */
4789 spec->stream_delay = 40; /* 40 milliseconds */
4804 spec->aloopback_ctl = &stac92hd71bxx_loopback;
4805 spec->aloopback_mask = 0x50;
4806 spec->aloopback_shift = 0;
4808 spec->powerdown_adcs = 1;
4809 spec->gen.beep_nid = 0x26; /* digital beep */
4810 spec->num_pwrs = ARRAY_SIZE(stac92hd71bxx_pwr_nids);
4811 spec->pwr_nids = stac92hd71bxx_pwr_nids;
4834 struct sigmatel_spec *spec;
4841 spec = codec->spec;
4842 spec->linear_tone_beep = 1;
4843 spec->gen.own_eapd_ctl = 1;
4876 struct sigmatel_spec *spec;
4883 spec = codec->spec;
4884 spec->linear_tone_beep = 1;
4885 spec->gen.own_eapd_ctl = 1;
4886 spec->have_spdif_mux = 1;
4887 spec->spdif_labels = stac927x_spdif_labels;
4889 spec->gen.beep_nid = 0x23; /* digital beep */
4892 spec->eapd_mask = spec->gpio_mask = 0x01;
4893 spec->gpio_dir = spec->gpio_data = 0x01;
4895 spec->aloopback_ctl = &stac927x_loopback;
4896 spec->aloopback_mask = 0x40;
4897 spec->aloopback_shift = 0;
4898 spec->eapd_switch = 1;
4904 if (!spec->volknob_init)
4934 struct sigmatel_spec *spec;
4941 spec = codec->spec;
4942 spec->linear_tone_beep = 1;
4943 spec->gen.own_eapd_ctl = 1;
4944 spec->have_spdif_mux = 1;
4946 spec->gen.beep_nid = 0x23; /* digital beep */
4949 spec->aloopback_ctl = &stac9205_loopback;
4951 spec->aloopback_mask = 0x40;
4952 spec->aloopback_shift = 0;
4955 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir = 0x1;
4956 spec->gpio_data = 0x01;
4959 spec->eapd_switch = 1;
5021 struct sigmatel_spec *spec;
5028 spec = codec->spec;
5029 spec->linear_tone_beep = 1;
5030 spec->gen.own_eapd_ctl = 1;