On Sat, 27 Apr 2019 22:53:39 +0200, Bard liao wrote: > > 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@xxxxxxxxxxxxxxx> Applied, thanks. Takashi > --- > sound/pci/hda/hda_codec.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c > index 701a69d856f5..b20eb7fc83eb 100644 > --- a/sound/pci/hda/hda_codec.c > +++ b/sound/pci/hda/hda_codec.c > @@ -832,7 +832,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; > -- > 2.17.1 > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel