Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a22d543a authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Introduce get_wcaps_type() macro



Add a helper macro to retrieve the widget type from wiget cap bits.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent a3daf689
Loading
Loading
Loading
Loading
+3 −6
Original line number Original line Diff line number Diff line
@@ -748,8 +748,7 @@ static int read_pin_defaults(struct hda_codec *codec)
	for (i = 0; i < codec->num_nodes; i++, nid++) {
	for (i = 0; i < codec->num_nodes; i++, nid++) {
		struct hda_pincfg *pin;
		struct hda_pincfg *pin;
		unsigned int wcaps = get_wcaps(codec, nid);
		unsigned int wcaps = get_wcaps(codec, nid);
		unsigned int wid_type = (wcaps & AC_WCAP_TYPE) >>
		unsigned int wid_type = get_wcaps_type(wcaps);
				AC_WCAP_TYPE_SHIFT;
		if (wid_type != AC_WID_PIN)
		if (wid_type != AC_WID_PIN)
			continue;
			continue;
		pin = snd_array_new(&codec->init_pins);
		pin = snd_array_new(&codec->init_pins);
@@ -2386,8 +2385,7 @@ static void hda_set_power_state(struct hda_codec *codec, hda_nid_t fg,
	for (i = 0; i < codec->num_nodes; i++, nid++) {
	for (i = 0; i < codec->num_nodes; i++, nid++) {
		unsigned int wcaps = get_wcaps(codec, nid);
		unsigned int wcaps = get_wcaps(codec, nid);
		if (wcaps & AC_WCAP_POWER) {
		if (wcaps & AC_WCAP_POWER) {
			unsigned int wid_type = (wcaps & AC_WCAP_TYPE) >>
			unsigned int wid_type = get_wcaps_type(wcaps);
				AC_WCAP_TYPE_SHIFT;
			if (power_state == AC_PWRST_D3 &&
			if (power_state == AC_PWRST_D3 &&
			    wid_type == AC_WID_PIN) {
			    wid_type == AC_WID_PIN) {
				unsigned int pincap;
				unsigned int pincap;
@@ -3678,8 +3676,7 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec,
	end_nid = codec->start_nid + codec->num_nodes;
	end_nid = codec->start_nid + codec->num_nodes;
	for (nid = codec->start_nid; nid < end_nid; nid++) {
	for (nid = codec->start_nid; nid < end_nid; nid++) {
		unsigned int wid_caps = get_wcaps(codec, nid);
		unsigned int wid_caps = get_wcaps(codec, nid);
		unsigned int wid_type =
		unsigned int wid_type = get_wcaps_type(wid_caps);
			(wid_caps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
		unsigned int def_conf;
		unsigned int def_conf;
		short assoc, loc;
		short assoc, loc;


+1 −1
Original line number Original line Diff line number Diff line
@@ -122,7 +122,7 @@ static int add_new_node(struct hda_codec *codec, struct hda_gspec *spec, hda_nid
		return -ENOMEM;
		return -ENOMEM;
	node->nid = nid;
	node->nid = nid;
	node->wid_caps = get_wcaps(codec, nid);
	node->wid_caps = get_wcaps(codec, nid);
	node->type = (node->wid_caps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
	node->type = get_wcaps_type(node->wid_caps);
	if (node->wid_caps & AC_WCAP_CONN_LIST) {
	if (node->wid_caps & AC_WCAP_CONN_LIST) {
		nconns = snd_hda_get_connections(codec, nid, conn_list,
		nconns = snd_hda_get_connections(codec, nid, conn_list,
						 HDA_MAX_CONNECTIONS);
						 HDA_MAX_CONNECTIONS);
+3 −0
Original line number Original line Diff line number Diff line
@@ -407,6 +407,9 @@ static inline u32 get_wcaps(struct hda_codec *codec, hda_nid_t nid)
	return codec->wcaps[nid - codec->start_nid];
	return codec->wcaps[nid - codec->start_nid];
}
}


/* get the widget type from widget capability bits */
#define get_wcaps_type(wcaps) (((wcaps) & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT)

u32 query_amp_caps(struct hda_codec *codec, hda_nid_t nid, int direction);
u32 query_amp_caps(struct hda_codec *codec, hda_nid_t nid, int direction);
int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
			      unsigned int caps);
			      unsigned int caps);
+1 −2
Original line number Original line Diff line number Diff line
@@ -508,8 +508,7 @@ static void print_codec_info(struct snd_info_entry *entry,
		unsigned int wid_caps =
		unsigned int wid_caps =
			snd_hda_param_read(codec, nid,
			snd_hda_param_read(codec, nid,
					   AC_PAR_AUDIO_WIDGET_CAP);
					   AC_PAR_AUDIO_WIDGET_CAP);
		unsigned int wid_type =
		unsigned int wid_type = get_wcaps_type(wid_caps);
			(wid_caps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
		hda_nid_t conn[HDA_MAX_CONNECTIONS];
		hda_nid_t conn[HDA_MAX_CONNECTIONS];
		int conn_len = 0;
		int conn_len = 0;


+1 −2
Original line number Original line Diff line number Diff line
@@ -459,8 +459,7 @@ static void parse_input(struct hda_codec *codec)
	nid = codec->start_nid;
	nid = codec->start_nid;
	for (i = 0; i < codec->num_nodes; i++, nid++) {
	for (i = 0; i < codec->num_nodes; i++, nid++) {
		unsigned int wcaps = get_wcaps(codec, nid);
		unsigned int wcaps = get_wcaps(codec, nid);
		unsigned int type = (wcaps & AC_WCAP_TYPE) >>
		unsigned int type = get_wcaps_type(wcaps);
			AC_WCAP_TYPE_SHIFT;
		if (type != AC_WID_AUD_IN)
		if (type != AC_WID_AUD_IN)
			continue;
			continue;
		if (snd_hda_get_connections(codec, nid, &pin, 1) != 1)
		if (snd_hda_get_connections(codec, nid, &pin, 1) != 1)
Loading