diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 580a1a534ad..d4b90d82a09 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1382,7 +1382,10 @@ int snd_soc_init_card(struct snd_soc_device *socdev) mutex_lock(&codec->mutex); #ifdef CONFIG_SND_SOC_AC97_BUS - if (ac97) { + /* Only instantiate AC97 if not already done by the adaptor + * for the generic AC97 subsystem. + */ + if (ac97 && strcmp(codec->name, "AC97") != 0) { ret = soc_ac97_dev_register(codec); if (ret < 0) { printk(KERN_ERR "asoc: AC97 device register failed\n");