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 err = snd_hda_gen_parse_auto_config(codec, &spec->gen.autocfg);
4295 if (spec->vref_mute_led_nid) {
4296 err = snd_hda_gen_fix_pin_power(codec, spec->vref_mute_led_nid);
4302 if (spec->anabeep_nid > 0) {
4304 spec->anabeep_nid);
4311 if (spec->gen.beep_nid) {
4312 hda_nid_t nid = spec->gen.beep_nid;
4320 codec->beep->linear_tone = spec->linear_tone_beep;
4334 if (spec->gpio_led)
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,
4398 struct sigmatel_spec *spec = codec->spec;
4402 if (spec->eapd_mask)
4403 stac_gpio_set(codec, spec->gpio_mask,
4404 spec->gpio_dir, spec->gpio_data &
4405 ~spec->eapd_mask);
4481 struct sigmatel_spec *spec;
4483 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
4484 if (!spec)
4486 snd_hda_gen_spec_init(&spec->gen);
4487 codec->spec = spec;
4489 spec->gen.dac_min_mute = true;
4496 struct sigmatel_spec *spec;
4503 spec = codec->spec;
4504 spec->linear_tone_beep = 1;
4505 spec->gen.own_eapd_ctl = 1;
4528 struct sigmatel_spec *spec;
4535 spec = codec->spec;
4536 spec->linear_tone_beep = 1;
4537 spec->gen.own_eapd_ctl = 1;
4558 struct sigmatel_spec *spec;
4566 spec = codec->spec;
4572 spec->linear_tone_beep = 0;
4573 spec->gen.mixer_nid = 0x1d;
4574 spec->have_spdif_mux = 1;
4585 spec->aloopback_ctl = &stac92hd73xx_6ch_loopback;
4588 spec->aloopback_ctl = &stac92hd73xx_8ch_loopback;
4591 spec->aloopback_ctl = &stac92hd73xx_10ch_loopback;
4595 spec->aloopback_mask = 0x01;
4596 spec->aloopback_shift = 8;
4598 spec->gen.beep_nid = 0x1c; /* digital beep */
4601 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir = 0x1;
4602 spec->gpio_data = 0x01;
4604 spec->eapd_switch = 1;
4606 spec->num_pwrs = ARRAY_SIZE(stac92hd73xx_pwr_nids);
4607 spec->pwr_nids = stac92hd73xx_pwr_nids;
4609 spec->gen.own_eapd_ctl = 1;
4610 spec->gen.power_down_unused = 1;
4616 if (!spec->volknob_init)
4628 if (spec->eapd_switch && !has_builtin_speaker(codec))
4629 spec->eapd_switch = 0;
4640 struct sigmatel_spec *spec = codec->spec;
4642 spec->gpio_mask |= spec->eapd_mask;
4643 if (spec->gpio_led) {
4644 if (!spec->vref_mute_led_nid) {
4645 spec->gpio_mask |= spec->gpio_led;
4646 spec->gpio_dir |= spec->gpio_led;
4647 spec->gpio_data |= spec->gpio_led;
4653 if (spec->mic_mute_led_gpio) {
4654 spec->gpio_mask |= spec->mic_mute_led_gpio;
4655 spec->gpio_dir |= spec->mic_mute_led_gpio;
4656 spec->mic_enabled = 0;
4657 spec->gpio_data |= spec->mic_mute_led_gpio;
4664 struct sigmatel_spec *spec;
4674 spec = codec->spec;
4676 spec->linear_tone_beep = 0;
4677 spec->gen.own_eapd_ctl = 1;
4678 spec->gen.power_down_unused = 1;
4679 spec->gen.mixer_nid = 0x1b;
4681 spec->gen.beep_nid = 0x21; /* digital beep */
4682 spec->pwr_nids = stac92hd83xxx_pwr_nids;
4683 spec->num_pwrs = ARRAY_SIZE(stac92hd83xxx_pwr_nids);
4684 spec->default_polarity = -1; /* no default cfg */
4713 struct sigmatel_spec *spec;
4723 spec = codec->spec;
4725 spec->linear_tone_beep = 0;
4726 spec->gen.own_eapd_ctl = 1;
4727 spec->gen.power_down_unused = 1;
4729 spec->gen.beep_nid = 0x19; /* digital beep */
4730 spec->pwr_nids = stac92hd95_pwr_nids;
4731 spec->num_pwrs = ARRAY_SIZE(stac92hd95_pwr_nids);
4732 spec->default_polarity = 0;
4755 struct sigmatel_spec *spec;
4763 spec = codec->spec;
4766 spec->linear_tone_beep = 0;
4767 spec->gen.own_eapd_ctl = 1;
4768 spec->gen.power_down_unused = 1;
4769 spec->gen.mixer_nid = 0x17;
4770 spec->have_spdif_mux = 1;
4773 spec->gpio_mask = 0x01;
4774 spec->gpio_dir = 0x01;
4775 spec->gpio_data = 0x01;
4785 spec->stream_delay = 40; /* 40 milliseconds */
4794 spec->stream_delay = 40; /* 40 milliseconds */
4809 spec->aloopback_ctl = &stac92hd71bxx_loopback;
4810 spec->aloopback_mask = 0x50;
4811 spec->aloopback_shift = 0;
4813 spec->powerdown_adcs = 1;
4814 spec->gen.beep_nid = 0x26; /* digital beep */
4815 spec->num_pwrs = ARRAY_SIZE(stac92hd71bxx_pwr_nids);
4816 spec->pwr_nids = stac92hd71bxx_pwr_nids;
4839 struct sigmatel_spec *spec;
4846 spec = codec->spec;
4847 spec->linear_tone_beep = 1;
4848 spec->gen.own_eapd_ctl = 1;
4881 struct sigmatel_spec *spec;
4888 spec = codec->spec;
4889 spec->linear_tone_beep = 1;
4890 spec->gen.own_eapd_ctl = 1;
4891 spec->have_spdif_mux = 1;
4892 spec->spdif_labels = stac927x_spdif_labels;
4894 spec->gen.beep_nid = 0x23; /* digital beep */
4897 spec->eapd_mask = spec->gpio_mask = 0x01;
4898 spec->gpio_dir = spec->gpio_data = 0x01;
4900 spec->aloopback_ctl = &stac927x_loopback;
4901 spec->aloopback_mask = 0x40;
4902 spec->aloopback_shift = 0;
4903 spec->eapd_switch = 1;
4909 if (!spec->volknob_init)
4939 struct sigmatel_spec *spec;
4946 spec = codec->spec;
4947 spec->linear_tone_beep = 1;
4948 spec->gen.own_eapd_ctl = 1;
4949 spec->have_spdif_mux = 1;
4951 spec->gen.beep_nid = 0x23; /* digital beep */
4954 spec->aloopback_ctl = &stac9205_loopback;
4956 spec->aloopback_mask = 0x40;
4957 spec->aloopback_shift = 0;
4960 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir = 0x1;
4961 spec->gpio_data = 0x01;
4964 spec->eapd_switch = 1;
5026 struct sigmatel_spec *spec;
5033 spec = codec->spec;
5034 spec->linear_tone_beep = 1;
5035 spec->gen.own_eapd_ctl = 1;