Lines Matching refs:nid
103 for (; seq->nid; seq++) in snd_hda_sequence_write()
104 snd_hda_codec_write(codec, seq->nid, 0, seq->verb, seq->param); in snd_hda_sequence_write()
112 hda_nid_t nid; member
118 lookup_conn_list(struct hda_codec *codec, hda_nid_t nid) in lookup_conn_list() argument
122 if (p->nid == nid) in lookup_conn_list()
128 static int add_conn_list(struct hda_codec *codec, hda_nid_t nid, int len, in add_conn_list() argument
137 p->nid = nid; in add_conn_list()
154 static int read_and_add_raw_conns(struct hda_codec *codec, hda_nid_t nid) in read_and_add_raw_conns() argument
160 len = snd_hda_get_raw_connections(codec, nid, list, ARRAY_SIZE(list)); in read_and_add_raw_conns()
162 len = snd_hda_get_num_raw_conns(codec, nid); in read_and_add_raw_conns()
166 len = snd_hda_get_raw_connections(codec, nid, result, len); in read_and_add_raw_conns()
169 len = snd_hda_override_conn_list(codec, nid, len, result); in read_and_add_raw_conns()
190 int snd_hda_get_conn_list(struct hda_codec *codec, hda_nid_t nid, in snd_hda_get_conn_list() argument
200 p = lookup_conn_list(codec, nid); in snd_hda_get_conn_list()
209 err = read_and_add_raw_conns(codec, nid); in snd_hda_get_conn_list()
229 int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid, in snd_hda_get_connections() argument
233 int len = snd_hda_get_conn_list(codec, nid, &list); in snd_hda_get_connections()
238 len, nid); in snd_hda_get_connections()
260 int snd_hda_override_conn_list(struct hda_codec *codec, hda_nid_t nid, int len, in snd_hda_override_conn_list() argument
265 p = lookup_conn_list(codec, nid); in snd_hda_override_conn_list()
271 return add_conn_list(codec, nid, len, list); in snd_hda_override_conn_list()
287 hda_nid_t nid, int recursive) in snd_hda_get_conn_index() argument
294 if (conn[i] == nid) in snd_hda_get_conn_index()
299 codec_dbg(codec, "too deep connection for 0x%x\n", nid); in snd_hda_get_conn_index()
307 if (snd_hda_get_conn_index(codec, conn[i], nid, recursive) >= 0) in snd_hda_get_conn_index()
316 static unsigned int get_num_devices(struct hda_codec *codec, hda_nid_t nid) in get_num_devices() argument
318 unsigned int wcaps = get_wcaps(codec, nid); in get_num_devices()
325 parm = snd_hdac_read_parm_uncached(&codec->core, nid, AC_PAR_DEVLIST_LEN); in get_num_devices()
341 int snd_hda_get_devices(struct hda_codec *codec, hda_nid_t nid, in snd_hda_get_devices() argument
347 parm = get_num_devices(codec, nid); in snd_hda_get_devices()
356 if (snd_hdac_read(&codec->core, nid, in snd_hda_get_devices()
377 hda_nid_t nid; in read_widget_caps() local
382 nid = codec->core.start_nid; in read_widget_caps()
383 for (i = 0; i < codec->core.num_nodes; i++, nid++) in read_widget_caps()
385 nid, AC_PAR_AUDIO_WIDGET_CAP); in read_widget_caps()
392 hda_nid_t nid; in read_pin_defaults() local
394 for_each_hda_codec_node(nid, codec) { in read_pin_defaults()
396 unsigned int wcaps = get_wcaps(codec, nid); in read_pin_defaults()
403 pin->nid = nid; in read_pin_defaults()
404 pin->cfg = snd_hda_codec_read(codec, nid, 0, in read_pin_defaults()
406 pin->ctrl = snd_hda_codec_read(codec, nid, 0, in read_pin_defaults()
416 hda_nid_t nid) in look_up_pincfg() argument
421 if (pin->nid == nid) in look_up_pincfg()
431 hda_nid_t nid, unsigned int cfg) in snd_hda_add_pincfg() argument
444 pin = look_up_pincfg(codec, list, nid); in snd_hda_add_pincfg()
449 pin->nid = nid; in snd_hda_add_pincfg()
466 hda_nid_t nid, unsigned int cfg) in snd_hda_codec_set_pincfg() argument
468 return snd_hda_add_pincfg(codec, &codec->driver_pins, nid, cfg); in snd_hda_codec_set_pincfg()
481 unsigned int snd_hda_codec_get_pincfg(struct hda_codec *codec, hda_nid_t nid) in snd_hda_codec_get_pincfg() argument
489 pin = look_up_pincfg(codec, &codec->user_pins, nid); in snd_hda_codec_get_pincfg()
497 pin = look_up_pincfg(codec, &codec->driver_pins, nid); in snd_hda_codec_get_pincfg()
500 pin = look_up_pincfg(codec, &codec->init_pins, nid); in snd_hda_codec_get_pincfg()
517 int snd_hda_codec_set_pin_target(struct hda_codec *codec, hda_nid_t nid, in snd_hda_codec_set_pin_target() argument
522 pin = look_up_pincfg(codec, &codec->init_pins, nid); in snd_hda_codec_set_pin_target()
535 int snd_hda_codec_get_pin_target(struct hda_codec *codec, hda_nid_t nid) in snd_hda_codec_get_pin_target() argument
539 pin = look_up_pincfg(codec, &codec->init_pins, nid); in snd_hda_codec_get_pin_target()
564 snd_hda_codec_read(codec, pin->nid, 0, in snd_hda_shutup_pins()
582 snd_hda_codec_write(codec, pin->nid, 0, in restore_shutup_pins()
619 hda_nid_t nid; member
629 get_hda_cvt_setup(struct hda_codec *codec, hda_nid_t nid) in get_hda_cvt_setup() argument
636 if (p->nid == nid) in get_hda_cvt_setup()
641 p->nid = nid; in get_hda_cvt_setup()
936 struct hda_cvt_setup *p, hda_nid_t nid, in update_pcm_stream_id() argument
942 oldval = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_CONV, 0); in update_pcm_stream_id()
945 snd_hda_codec_write(codec, nid, 0, in update_pcm_stream_id()
955 hda_nid_t nid, int format) in update_pcm_format() argument
960 oldval = snd_hda_codec_read(codec, nid, 0, in update_pcm_format()
964 snd_hda_codec_write(codec, nid, 0, in update_pcm_format()
980 void snd_hda_codec_setup_stream(struct hda_codec *codec, hda_nid_t nid, in snd_hda_codec_setup_stream() argument
989 if (!nid) in snd_hda_codec_setup_stream()
994 nid, stream_tag, channel_id, format); in snd_hda_codec_setup_stream()
995 p = get_hda_cvt_setup(codec, nid); in snd_hda_codec_setup_stream()
1000 codec->patch_ops.stream_pm(codec, nid, true); in snd_hda_codec_setup_stream()
1002 update_pcm_format(codec, p, nid, format); in snd_hda_codec_setup_stream()
1003 update_pcm_stream_id(codec, p, nid, stream_tag, channel_id); in snd_hda_codec_setup_stream()
1005 update_pcm_format(codec, p, nid, format); in snd_hda_codec_setup_stream()
1011 type = get_wcaps_type(get_wcaps(codec, nid)); in snd_hda_codec_setup_stream()
1016 get_wcaps_type(get_wcaps(c, p->nid)) == type) in snd_hda_codec_setup_stream()
1032 void __snd_hda_codec_cleanup_stream(struct hda_codec *codec, hda_nid_t nid, in __snd_hda_codec_cleanup_stream() argument
1037 if (!nid) in __snd_hda_codec_cleanup_stream()
1043 codec_dbg(codec, "hda_codec_cleanup_stream: NID=0x%x\n", nid); in __snd_hda_codec_cleanup_stream()
1044 p = get_hda_cvt_setup(codec, nid); in __snd_hda_codec_cleanup_stream()
1061 hda_nid_t nid = q->nid; in really_cleanup_stream() local
1063 snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_CHANNEL_STREAMID, 0); in really_cleanup_stream()
1065 snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_STREAM_FORMAT, 0 in really_cleanup_stream()
1068 q->nid = nid; in really_cleanup_stream()
1070 codec->patch_ops.stream_pm(codec, nid, false); in really_cleanup_stream()
1119 u32 query_amp_caps(struct hda_codec *codec, hda_nid_t nid, int direction) in query_amp_caps() argument
1121 if (!(get_wcaps(codec, nid) & AC_WCAP_AMP_OVRD)) in query_amp_caps()
1122 nid = codec->core.afg; in query_amp_caps()
1123 return snd_hda_param_read(codec, nid, in query_amp_caps()
1138 bool snd_hda_check_amp_caps(struct hda_codec *codec, hda_nid_t nid, in snd_hda_check_amp_caps() argument
1141 if (!nid) in snd_hda_check_amp_caps()
1143 if (get_wcaps(codec, nid) & (1 << (dir + 1))) in snd_hda_check_amp_caps()
1144 if (query_amp_caps(codec, nid, dir) & bits) in snd_hda_check_amp_caps()
1163 int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir, in snd_hda_override_amp_caps() argument
1168 snd_hda_override_wcaps(codec, nid, in snd_hda_override_amp_caps()
1169 get_wcaps(codec, nid) | AC_WCAP_AMP_OVRD); in snd_hda_override_amp_caps()
1171 return snd_hdac_override_parm(&codec->core, nid, parm, caps); in snd_hda_override_amp_caps()
1187 int snd_hda_codec_amp_update(struct hda_codec *codec, hda_nid_t nid, in snd_hda_codec_amp_update() argument
1190 unsigned int cmd = snd_hdac_regmap_encode_amp(nid, ch, dir, idx); in snd_hda_codec_amp_update()
1193 if ((query_amp_caps(codec, nid, dir) & in snd_hda_codec_amp_update()
1212 int snd_hda_codec_amp_stereo(struct hda_codec *codec, hda_nid_t nid, in snd_hda_codec_amp_stereo() argument
1220 ret |= snd_hda_codec_amp_update(codec, nid, ch, direction, in snd_hda_codec_amp_stereo()
1240 int snd_hda_codec_amp_init(struct hda_codec *codec, hda_nid_t nid, int ch, in snd_hda_codec_amp_init() argument
1248 orig = snd_hda_codec_amp_read(codec, nid, ch, dir, idx); in snd_hda_codec_amp_init()
1252 return snd_hda_codec_amp_update(codec, nid, ch, dir, idx, mask, val); in snd_hda_codec_amp_init()
1267 int snd_hda_codec_amp_init_stereo(struct hda_codec *codec, hda_nid_t nid, in snd_hda_codec_amp_init_stereo() argument
1275 ret |= snd_hda_codec_amp_init(codec, nid, ch, dir, in snd_hda_codec_amp_init_stereo()
1281 static u32 get_amp_max_value(struct hda_codec *codec, hda_nid_t nid, int dir, in get_amp_max_value() argument
1284 u32 caps = query_amp_caps(codec, nid, dir); in get_amp_max_value()
1304 u16 nid = get_amp_nid(kcontrol); in snd_hda_mixer_amp_volume_info() local
1312 uinfo->value.integer.max = get_amp_max_value(codec, nid, dir, ofs); in snd_hda_mixer_amp_volume_info()
1316 nid, kcontrol->id.name); in snd_hda_mixer_amp_volume_info()
1325 read_amp_value(struct hda_codec *codec, hda_nid_t nid, in read_amp_value() argument
1329 val = snd_hda_codec_amp_read(codec, nid, ch, dir, idx); in read_amp_value()
1339 update_amp_value(struct hda_codec *codec, hda_nid_t nid, in update_amp_value() argument
1348 maxval = get_amp_max_value(codec, nid, dir, 0); in update_amp_value()
1351 return snd_hda_codec_amp_update(codec, nid, ch, dir, idx, in update_amp_value()
1367 hda_nid_t nid = get_amp_nid(kcontrol); in snd_hda_mixer_amp_volume_get() local
1375 *valp++ = read_amp_value(codec, nid, 0, dir, idx, ofs); in snd_hda_mixer_amp_volume_get()
1377 *valp = read_amp_value(codec, nid, 1, dir, idx, ofs); in snd_hda_mixer_amp_volume_get()
1394 hda_nid_t nid = get_amp_nid(kcontrol); in snd_hda_mixer_amp_volume_put() local
1403 change = update_amp_value(codec, nid, 0, dir, idx, ofs, *valp); in snd_hda_mixer_amp_volume_put()
1407 change |= update_amp_value(codec, nid, 1, dir, idx, ofs, *valp); in snd_hda_mixer_amp_volume_put()
1426 hda_nid_t nid = get_amp_nid(kcontrol); in snd_hda_mixer_amp_tlv() local
1434 caps = query_amp_caps(codec, nid, dir); in snd_hda_mixer_amp_tlv()
1465 void snd_hda_set_vmaster_tlv(struct hda_codec *codec, hda_nid_t nid, int dir, in snd_hda_set_vmaster_tlv() argument
1471 caps = query_amp_caps(codec, nid, dir); in snd_hda_set_vmaster_tlv()
1542 int snd_hda_ctl_add(struct hda_codec *codec, hda_nid_t nid, in snd_hda_ctl_add() argument
1551 if (nid == 0) in snd_hda_ctl_add()
1552 nid = get_amp_nid_(kctl->private_value); in snd_hda_ctl_add()
1554 if ((kctl->id.subdevice & HDA_SUBDEV_NID_FLAG) != 0 && nid == 0) in snd_hda_ctl_add()
1555 nid = kctl->id.subdevice & 0xffff; in snd_hda_ctl_add()
1565 item->nid = nid; in snd_hda_ctl_add()
1583 unsigned int index, hda_nid_t nid) in snd_hda_add_nid() argument
1587 if (nid > 0) { in snd_hda_add_nid()
1593 item->nid = nid; in snd_hda_add_nid()
2002 hda_nid_t nid = get_amp_nid(kcontrol); in snd_hda_mixer_amp_switch_get() local
2009 *valp++ = (snd_hda_codec_amp_read(codec, nid, 0, dir, idx) & in snd_hda_mixer_amp_switch_get()
2012 *valp = (snd_hda_codec_amp_read(codec, nid, 1, dir, idx) & in snd_hda_mixer_amp_switch_get()
2030 hda_nid_t nid = get_amp_nid(kcontrol); in snd_hda_mixer_amp_switch_put() local
2038 change = snd_hda_codec_amp_update(codec, nid, 0, dir, idx, in snd_hda_mixer_amp_switch_put()
2044 change |= snd_hda_codec_amp_update(codec, nid, 1, dir, idx, in snd_hda_mixer_amp_switch_put()
2047 hda_call_check_power_status(codec, nid); in snd_hda_mixer_amp_switch_put()
2347 static void set_dig_out(struct hda_codec *codec, hda_nid_t nid, in set_dig_out() argument
2352 snd_hdac_regmap_update(&codec->core, nid, AC_VERB_SET_DIGI_CONVERT_1, in set_dig_out()
2362 static inline void set_dig_out_convert(struct hda_codec *codec, hda_nid_t nid, in set_dig_out_convert() argument
2376 set_dig_out(codec, nid, mask, val); in set_dig_out_convert()
2385 hda_nid_t nid; in snd_hda_spdif_default_put() local
2391 nid = spdif->nid; in snd_hda_spdif_default_put()
2400 if (change && nid != (u16)-1) in snd_hda_spdif_default_put()
2401 set_dig_out_convert(codec, nid, val & 0xff, (val >> 8) & 0xff); in snd_hda_spdif_default_put()
2422 static inline void set_spdif_ctls(struct hda_codec *codec, hda_nid_t nid, in set_spdif_ctls() argument
2425 set_dig_out_convert(codec, nid, dig1, dig2); in set_spdif_ctls()
2427 if ((get_wcaps(codec, nid) & AC_WCAP_OUT_AMP) && in set_spdif_ctls()
2429 snd_hda_codec_amp_stereo(codec, nid, HDA_OUTPUT, 0, in set_spdif_ctls()
2439 hda_nid_t nid; in snd_hda_spdif_out_switch_put() local
2445 nid = spdif->nid; in snd_hda_spdif_out_switch_put()
2451 if (change && nid != (u16)-1) in snd_hda_spdif_out_switch_put()
2452 set_spdif_ctls(codec, nid, val & 0xff, -1); in snd_hda_spdif_out_switch_put()
2549 spdif->nid = cvt_nid; in snd_hda_create_dig_out_ctls()
2566 hda_nid_t nid) in snd_hda_spdif_out_of_nid() argument
2572 if (spdif->nid == nid) in snd_hda_spdif_out_of_nid()
2592 spdif->nid = (u16)-1; in snd_hda_spdif_ctls_unassign()
2605 void snd_hda_spdif_ctls_assign(struct hda_codec *codec, int idx, hda_nid_t nid) in snd_hda_spdif_ctls_assign() argument
2612 if (spdif->nid != nid) { in snd_hda_spdif_ctls_assign()
2613 spdif->nid = nid; in snd_hda_spdif_ctls_assign()
2615 set_spdif_ctls(codec, nid, val & 0xff, (val >> 8) & 0xff); in snd_hda_spdif_ctls_assign()
2688 hda_nid_t nid = kcontrol->private_value; in snd_hda_spdif_in_switch_put() local
2696 snd_hdac_regmap_write(&codec->core, nid, in snd_hda_spdif_in_switch_put()
2707 hda_nid_t nid = kcontrol->private_value; in snd_hda_spdif_in_status_get() local
2711 snd_hdac_regmap_read(&codec->core, nid, in snd_hda_spdif_in_status_get()
2749 int snd_hda_create_spdif_in_ctls(struct hda_codec *codec, hda_nid_t nid) in snd_hda_create_spdif_in_ctls() argument
2765 kctl->private_value = nid; in snd_hda_create_spdif_in_ctls()
2766 err = snd_hda_ctl_add(codec, nid, kctl); in snd_hda_create_spdif_in_ctls()
2771 snd_hda_codec_read(codec, nid, 0, in snd_hda_create_spdif_in_ctls()
2791 hda_nid_t nid; in snd_hda_codec_set_power_to_all() local
2793 for_each_hda_codec_node(nid, codec) { in snd_hda_codec_set_power_to_all()
2794 unsigned int wcaps = get_wcaps(codec, nid); in snd_hda_codec_set_power_to_all()
2799 state = codec->power_filter(codec, nid, power_state); in snd_hda_codec_set_power_to_all()
2803 snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_POWER_STATE, in snd_hda_codec_set_power_to_all()
2845 hda_nid_t nid, in snd_hda_codec_eapd_power_filter() argument
2848 if (nid == codec->core.afg || nid == codec->core.mfg) in snd_hda_codec_eapd_power_filter()
2851 get_wcaps_type(get_wcaps(codec, nid)) == AC_WID_PIN && in snd_hda_codec_eapd_power_filter()
2852 (snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_EAPD)) { in snd_hda_codec_eapd_power_filter()
2853 int eapd = snd_hda_codec_read(codec, nid, 0, in snd_hda_codec_eapd_power_filter()
2910 hda_nid_t nid; in sync_power_up_states() local
2916 for_each_hda_codec_node(nid, codec) { in sync_power_up_states()
2917 unsigned int wcaps = get_wcaps(codec, nid); in sync_power_up_states()
2921 target = codec->power_filter(codec, nid, AC_PWRST_D0); in sync_power_up_states()
2924 if (!snd_hda_check_power_state(codec, nid, target)) in sync_power_up_states()
2925 snd_hda_codec_write(codec, nid, 0, in sync_power_up_states()
3129 snd_hda_codec_setup_stream(codec, hinfo->nid, stream_tag, 0, format); in hda_pcm_default_prepare()
3137 snd_hda_codec_cleanup_stream(codec, hinfo->nid); in hda_pcm_default_cleanup()
3147 if (info->nid && (!info->rates || !info->formats)) { in set_pcm_default_values()
3148 err = snd_hda_query_supported_pcm(codec, info->nid, in set_pcm_default_values()
3160 if (snd_BUG_ON(!info->nid)) in set_pcm_default_values()
3165 if (snd_BUG_ON(!info->nid)) in set_pcm_default_values()
3453 hda_nid_t nid) in snd_hda_check_amp_list_power() argument
3460 for (p = check->amplist; p->nid; p++) { in snd_hda_check_amp_list_power()
3461 if (p->nid == nid) in snd_hda_check_amp_list_power()
3464 if (!p->nid) in snd_hda_check_amp_list_power()
3467 for (p = check->amplist; p->nid; p++) { in snd_hda_check_amp_list_power()
3469 v = snd_hda_codec_amp_read(codec, p->nid, ch, p->dir, in snd_hda_check_amp_list_power()
3527 hda_nid_t nid, in snd_hda_input_mux_put() argument
3539 snd_hda_codec_write_cache(codec, nid, 0, AC_VERB_SET_CONNECT_SEL, in snd_hda_input_mux_put()
3579 static void setup_dig_out_stream(struct hda_codec *codec, hda_nid_t nid, in setup_dig_out_stream() argument
3586 spdif = snd_hda_spdif_out_of_nid(codec, nid); in setup_dig_out_stream()
3587 curr_fmt = snd_hda_codec_read(codec, nid, 0, in setup_dig_out_stream()
3596 set_dig_out_convert(codec, nid, in setup_dig_out_stream()
3599 snd_hda_codec_setup_stream(codec, nid, stream_tag, 0, format); in setup_dig_out_stream()
3608 set_dig_out_convert(codec, nid, in setup_dig_out_stream()
3612 static void cleanup_dig_out_stream(struct hda_codec *codec, hda_nid_t nid) in cleanup_dig_out_stream() argument
3614 snd_hda_codec_cleanup_stream(codec, nid); in cleanup_dig_out_stream()