[alsa-devel] [PATCH] ALSA: hda: hdmi - fix regression in connect list handling

Kai Vehmanen kai.vehmanen at linux.intel.com
Wed Nov 27 13:14:24 CET 2019


Hi,

On Wed, 27 Nov 2019, Takashi Iwai wrote:

> On Wed, 27 Nov 2019 12:25:36 +0100, Kai Vehmanen wrote:
> > @@ -1312,10 +1316,19 @@ static int hdmi_read_pin_conn(struct hda_codec *codec, int pin_idx)
[...]
> > +	if (spec->intel_hsw_fixup) {
> > +		intel_haswell_fixup_connect_list(codec, pin_nid);
> > +		conns = snd_hda_get_connections(codec, pin_nid,
> > +						per_pin->mux_nids,
> > +						HDA_MAX_CONNECTIONS);
> > +	} else {
> > +		conns = snd_hda_get_raw_connections(codec, pin_nid,
> > +						    per_pin->mux_nids,
> > +						    HDA_MAX_CONNECTIONS);
> > +	}
> 
> Actually intel_haswell_fixup_connect_list() doesn't influence on the
> hardware setup but just updates the software cache.  So, basically we
> can copy the values directly from spec->cvt_nids here without the
> override hack as we have now.
> 
> That is, something like
> 
> 	if (spec->intel_hsw_fixup) {
> 		conns = spec->cvt_nids;
> 		memcpy(per_pin->mux_nids, spec->num_cvts,
> 		       sizeof(hda_nid_t) * conns);
> 	} else {
> 	  	snd_hda_set_dev_select(codec, pin_nid, dev_id);
> 		conns = snd_hda_get_raw_connections(codec, pin_nid,
> 						    per_pin->mux_nids,
> 						    HDA_MAX_CONNECTIONS);
> 	}
> 
> Could you check whether this works?	

hmm, you are right, this should work. spec->cvt_nids and spec->num_cvts 
were reversed in the proto code :), but otherwise looks ok based on
a few tests. I'll send a v2 patch shortly. This simplifies the code as 
well.

Br, Kai


More information about the Alsa-devel mailing list