|
@@ -3433,11 +3433,16 @@ static struct snd_kcontrol_new spdif_share_sw = {
|
|
|
int snd_hda_create_spdif_share_sw(struct hda_codec *codec,
|
|
|
struct hda_multi_out *mout)
|
|
|
{
|
|
|
+ struct snd_kcontrol *kctl;
|
|
|
+
|
|
|
if (!mout->dig_out_nid)
|
|
|
return 0;
|
|
|
+
|
|
|
+ kctl = snd_ctl_new1(&spdif_share_sw, mout);
|
|
|
+ if (!kctl)
|
|
|
+ return -ENOMEM;
|
|
|
/* ATTENTION: here mout is passed as private_data, instead of codec */
|
|
|
- return snd_hda_ctl_add(codec, mout->dig_out_nid,
|
|
|
- snd_ctl_new1(&spdif_share_sw, mout));
|
|
|
+ return snd_hda_ctl_add(codec, mout->dig_out_nid, kctl);
|
|
|
}
|
|
|
EXPORT_SYMBOL_HDA(snd_hda_create_spdif_share_sw);
|
|
|
|