diff options
Diffstat (limited to 'sound/pci/hda/patch_conexant.c')
| -rw-r--r-- | sound/pci/hda/patch_conexant.c | 16 | 
1 files changed, 11 insertions, 5 deletions
| diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 941bf6c766e..2a89d1eefeb 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c @@ -1142,7 +1142,7 @@ static int patch_cxt5045(struct hda_codec *codec)  	}  	if (spec->beep_amp) -		snd_hda_attach_beep_device(codec, spec->beep_amp); +		snd_hda_attach_beep_device(codec, get_amp_nid_(spec->beep_amp));  	return 0;  } @@ -1921,7 +1921,7 @@ static int patch_cxt5051(struct hda_codec *codec)  	}  	if (spec->beep_amp) -		snd_hda_attach_beep_device(codec, spec->beep_amp); +		snd_hda_attach_beep_device(codec, get_amp_nid_(spec->beep_amp));  	return 0;  } @@ -3099,7 +3099,7 @@ static int patch_cxt5066(struct hda_codec *codec)  	}  	if (spec->beep_amp) -		snd_hda_attach_beep_device(codec, spec->beep_amp); +		snd_hda_attach_beep_device(codec, get_amp_nid_(spec->beep_amp));  	return 0;  } @@ -3191,11 +3191,17 @@ static int cx_auto_build_controls(struct hda_codec *codec)  	return 0;  } +static void cx_auto_free(struct hda_codec *codec) +{ +	snd_hda_detach_beep_device(codec); +	snd_hda_gen_free(codec); +} +  static const struct hda_codec_ops cx_auto_patch_ops = {  	.build_controls = cx_auto_build_controls,  	.build_pcms = snd_hda_gen_build_pcms,  	.init = snd_hda_gen_init, -	.free = snd_hda_gen_free, +	.free = cx_auto_free,  	.unsol_event = snd_hda_jack_unsol_event,  #ifdef CONFIG_PM  	.check_power_status = snd_hda_gen_check_power_status, @@ -3391,7 +3397,7 @@ static int patch_conexant_auto(struct hda_codec *codec)  	codec->patch_ops = cx_auto_patch_ops;  	if (spec->beep_amp) -		snd_hda_attach_beep_device(codec, spec->beep_amp); +		snd_hda_attach_beep_device(codec, get_amp_nid_(spec->beep_amp));  	/* Some laptops with Conexant chips show stalls in S3 resume,  	 * which falls into the single-cmd mode. |