if (c == curr) snd_iprintf(buffer, "*"); } 
static void print_codec_info(snd_info_entry_t *entry, snd_info_buffer_t *buffer){	struct hda_codec *codec = entry->private_data;	char buf[32];	hda_nid_t nid;	int i, nodes;	snd_hda_get_codec_name(codec, buf, sizeof(buf));	snd_iprintf(buffer, "Codec: %s\n", buf);	snd_iprintf(buffer, "Address: %d\n", codec->addr);	snd_iprintf(buffer, "Vendor Id: 0x%x\n", codec->vendor_id);	snd_iprintf(buffer, "Subsystem Id: 0x%x\n", codec->subsystem_id);	snd_iprintf(buffer, "Revision Id: 0x%x\n", codec->revision_id);	snd_iprintf(buffer, "Default PCM: ");	print_pcm_caps(buffer, codec, codec->afg);	snd_iprintf(buffer, "Default Amp-In caps: ");	print_amp_caps(buffer, codec, codec->afg, HDA_INPUT);	snd_iprintf(buffer, "Default Amp-Out caps: ");	print_amp_caps(buffer, codec, codec->afg, HDA_OUTPUT);	nodes = snd_hda_get_sub_nodes(codec, codec->afg, &nid);	if (! nid || nodes < 0) {		snd_iprintf(buffer, "Invalid AFG subtree\n");		return;	}	for (i = 0; i < nodes; i++, nid++) {		unsigned int wid_caps = snd_hda_param_read(codec, nid,							   AC_PAR_AUDIO_WIDGET_CAP);		unsigned int wid_type = (wid_caps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;		snd_iprintf(buffer, "Node 0x%02x [%s] wcaps 0x%x:", nid,			    get_wid_type_name(wid_type), wid_caps);		if (wid_caps & AC_WCAP_STEREO)			snd_iprintf(buffer, " Stereo");		else			snd_iprintf(buffer, " Mono");		if (wid_caps & AC_WCAP_DIGITAL)			snd_iprintf(buffer, " Digital");		if (wid_caps & AC_WCAP_IN_AMP)			snd_iprintf(buffer, " Amp-In");		if (wid_caps & AC_WCAP_OUT_AMP)			snd_iprintf(buffer, " Amp-Out");		snd_iprintf(buffer, "\n");		if (wid_caps & AC_WCAP_IN_AMP) {			snd_iprintf(buffer, "  Amp-In caps: ");			print_amp_caps(buffer, codec, nid, HDA_INPUT);			snd_iprintf(buffer, "  Amp-In vals: ");			print_amp_vals(buffer, codec, nid, HDA_INPUT,				       wid_caps & AC_WCAP_STEREO);		}		if (wid_caps & AC_WCAP_OUT_AMP) {			snd_iprintf(buffer, "  Amp-Out caps: ");			print_amp_caps(buffer, codec, nid, HDA_OUTPUT);			snd_iprintf(buffer, "  Amp-Out vals: ");			print_amp_vals(buffer, codec, nid, HDA_OUTPUT,				       wid_caps & AC_WCAP_STEREO);		}		if (wid_type == AC_WID_PIN) {			unsigned int pinctls;			print_pin_caps(buffer, codec, nid);			pinctls = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_PIN_WIDGET_CONTROL, 0);			snd_iprintf(buffer, "  Pin-ctls: 0x%02x:", pinctls);			if (pinctls & AC_PINCTL_IN_EN)				snd_iprintf(buffer, " IN");			if (pinctls & AC_PINCTL_OUT_EN)				snd_iprintf(buffer, " OUT");			if (pinctls & AC_PINCTL_HP_EN)				snd_iprintf(buffer, " HP");			snd_iprintf(buffer, "\n");		}		if ((wid_type == AC_WID_AUD_OUT || wid_type == AC_WID_AUD_IN) &&		    (wid_caps & AC_WCAP_FORMAT_OVRD)) {			snd_iprintf(buffer, "  PCM: ");			print_pcm_caps(buffer, codec, nid);		}		if (wid_caps & AC_WCAP_CONN_LIST) {			hda_nid_t conn[HDA_MAX_CONNECTIONS];			int c, conn_len;			conn_len = snd_hda_get_connections(codec, nid, conn,							   HDA_MAX_CONNECTIONS);			snd_iprintf(buffer, "  Connection: %d\n", conn_len);			snd_iprintf(buffer, "    ");			for (c = 0; c < conn_len; c++)				snd_iprintf(buffer, " 0x%02x", conn[c]);			snd_iprintf(buffer, "\n");		}	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/c301098233bdbaae369bfdd98207db916df8cef2/hda_proc.c/clean/sound/pci/hda/hda_proc.c