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

Commit 93e82ae7 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Set function_id only on FG nodes



(Re)set function_id only from the value on FG nodes.
The current code overrides the value with the last widget.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 4dc1f87f
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -642,19 +642,21 @@ static int get_codec_name(struct hda_codec *codec)
 */
 */
static void /*__devinit*/ setup_fg_nodes(struct hda_codec *codec)
static void /*__devinit*/ setup_fg_nodes(struct hda_codec *codec)
{
{
	int i, total_nodes;
	int i, total_nodes, function_id;
	hda_nid_t nid;
	hda_nid_t nid;


	total_nodes = snd_hda_get_sub_nodes(codec, AC_NODE_ROOT, &nid);
	total_nodes = snd_hda_get_sub_nodes(codec, AC_NODE_ROOT, &nid);
	for (i = 0; i < total_nodes; i++, nid++) {
	for (i = 0; i < total_nodes; i++, nid++) {
		codec->function_id = snd_hda_param_read(codec, nid,
		function_id = snd_hda_param_read(codec, nid,
						AC_PAR_FUNCTION_TYPE) & 0xff;
						AC_PAR_FUNCTION_TYPE) & 0xff;
		switch (codec->function_id) {
		switch (function_id) {
		case AC_GRP_AUDIO_FUNCTION:
		case AC_GRP_AUDIO_FUNCTION:
			codec->afg = nid;
			codec->afg = nid;
			codec->function_id = function_id;
			break;
			break;
		case AC_GRP_MODEM_FUNCTION:
		case AC_GRP_MODEM_FUNCTION:
			codec->mfg = nid;
			codec->mfg = nid;
			codec->function_id = function_id;
			break;
			break;
		default:
		default:
			break;
			break;