mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 13:06:59 +02:00
ALSA: hda: fix unregister device twice on ASoC driver
snd_hda_codec_device_new() is used by both legacy HDA and ASoC
driver. However, we will call snd_hdac_device_unregister() in
snd_hdac_ext_bus_device_remove() for ASoC device. This patch uses
the type flag in hdac_device struct to determine is it a ASoC device
or legacy HDA device and call snd_hdac_device_unregister() in
snd_hda_codec_dev_free() only if it is a legacy HDA device.
Signed-off-by: Bard liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
(cherry picked from commit 4d95c51776)
This commit is contained in:
parent
c3af9ed006
commit
08ba3b3814
|
|
@ -841,7 +841,13 @@ static int snd_hda_codec_dev_free(struct snd_device *device)
|
|||
struct hda_codec *codec = device->device_data;
|
||||
|
||||
codec->in_freeing = 1;
|
||||
snd_hdac_device_unregister(&codec->core);
|
||||
/*
|
||||
* snd_hda_codec_device_new() is used by legacy HDA and ASoC driver.
|
||||
* We can't unregister ASoC device since it will be unregistered in
|
||||
* snd_hdac_ext_bus_device_remove().
|
||||
*/
|
||||
if (codec->core.type == HDA_DEV_LEGACY)
|
||||
snd_hdac_device_unregister(&codec->core);
|
||||
codec_display_power(codec, false);
|
||||
put_device(hda_codec_dev(codec));
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user