From: Takashi Iwai <tiwai@suse.de>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org,
rdunlap@infradead.org, YueHaibing <yuehaibing@huawei.com>,
lgirdwood@gmail.com, broonie@kernel.org
Subject: Re: [alsa-devel] [PATCH] ASoC: SOF: Fix build error with CONFIG_SND_SOC_SOF_NOCODEC=m
Date: Fri, 10 May 2019 15:56:01 +0200 [thread overview]
Message-ID: <s5h8svemn0u.wl-tiwai@suse.de> (raw)
In-Reply-To: <s5hbm0amnpl.wl-tiwai@suse.de>
On Fri, 10 May 2019 15:41:10 +0200,
Takashi Iwai wrote:
>
> On Fri, 10 May 2019 15:34:03 +0200,
> Pierre-Louis Bossart wrote:
> >
> > On 5/10/19 8:04 AM, Takashi Iwai wrote:
> > > On Fri, 10 May 2019 14:56:29 +0200,
> > > Pierre-Louis Bossart wrote:
> > >>
> > >> On 5/10/19 2:12 AM, Takashi Iwai wrote:
> > >>> On Fri, 10 May 2019 04:36:57 +0200,
> > >>> YueHaibing wrote:
> > >>>>
> > >>>> Fix gcc build error while CONFIG_SND_SOC_SOF_NOCODEC=m
> > >>>>
> > >>>> sound/soc/sof/core.o: In function `snd_sof_device_probe':
> > >>>> core.c:(.text+0x4af): undefined reference to `sof_nocodec_setup'
> > >>>>
> > >>>> Change SND_SOC_SOF_NOCODEC to bool to fix this.
> > >>>>
> > >>>> Reported-by: Hulk Robot <hulkci@huawei.com>
> > >>>> Fixes: c16211d6226d ("ASoC: SOF: Add Sound Open Firmware driver core")
> > >>>> Signed-off-by: YueHaibing <yuehaibing@huawei.com>
> > >>>
> > >>> This change would break things severely. This won't allow to build it
> > >>> as a module any longer.
> > >>
> > >> Isn't this fixed already?
> > >> See the patch 'ASoC: SOF: core: fix undefined nocodec reference' and
> > >> Takashi's follow-up to fix the unused variable warning.
> > >
> > > Possibly the problem still persists although I haven't seen through my
> > > local build tests with randconfig. You can set SND_SOC_SOF=y and
> > > SND_SOC_NOCODEC=m, i.e. built-in sof-core while nocodec is a module.
> >
> > YueHiabing, can you share the config and SHA1 so that we can double check?
> >
> > If the problem persists, we can do something like
> >
> > config SND_SOF_NOCODEC_SUPPORT
> > bool "SOF nocodec mode support"
> >
> > config SND_SOF_NOCODEC
> > tristate
> >
> > confir SND_SOC_SOF
> > tristate
> > select SND_SOF_NOCODEC if SND_SOF_NOCODEC_SUPPORT
> >
> > that way you propagate the required dependencies
>
> Yes, that would work. OTOH, I see no merit to build an extra module
> for nocodec. nocodec.c can be built together with sof-core stuff.
I mean a patch like below.
Takashi
diff --git a/include/sound/sof.h b/include/sound/sof.h
index 4640566b54fe..1af70800f6dc 100644
--- a/include/sound/sof.h
+++ b/include/sound/sof.h
@@ -92,9 +92,4 @@ struct sof_dev_desc {
const struct sof_arch_ops *arch_ops;
};
-int sof_nocodec_setup(struct device *dev,
- struct snd_sof_pdata *sof_pdata,
- struct snd_soc_acpi_mach *mach,
- const struct sof_dev_desc *desc,
- const struct snd_sof_dsp_ops *ops);
#endif
diff --git a/sound/soc/sof/Kconfig b/sound/soc/sof/Kconfig
index b204c65698f9..9c280c977d55 100644
--- a/sound/soc/sof/Kconfig
+++ b/sound/soc/sof/Kconfig
@@ -44,7 +44,7 @@ config SND_SOC_SOF_OPTIONS
if SND_SOC_SOF_OPTIONS
config SND_SOC_SOF_NOCODEC
- tristate "SOF nocodec mode Support"
+ bool "SOF nocodec mode Support"
help
This adds support for a dummy/nocodec machine driver fallback
option if no known codec is detected. This is typically only
diff --git a/sound/soc/sof/Makefile b/sound/soc/sof/Makefile
index 8f14c9d2950b..09222be6d1b8 100644
--- a/sound/soc/sof/Makefile
+++ b/sound/soc/sof/Makefile
@@ -2,14 +2,12 @@
snd-sof-objs := core.o ops.o loader.o ipc.o pcm.o pm.o debug.o topology.o\
control.o trace.o utils.o
+snd-sof-$(CONFIG_SND_SOC_SOF_NOCODEC) += nocodec.o
snd-sof-pci-objs := sof-pci-dev.o
snd-sof-acpi-objs := sof-acpi-dev.o
-snd-sof-nocodec-objs := nocodec.o
obj-$(CONFIG_SND_SOC_SOF) += snd-sof.o
-obj-$(CONFIG_SND_SOC_SOF_NOCODEC) += snd-sof-nocodec.o
-
obj-$(CONFIG_SND_SOC_SOF_ACPI) += sof-acpi-dev.o
obj-$(CONFIG_SND_SOC_SOF_PCI) += sof-pci-dev.o
diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
index 32105e0fabe8..744f7f465173 100644
--- a/sound/soc/sof/core.c
+++ b/sound/soc/sof/core.c
@@ -502,6 +502,18 @@ int snd_sof_device_remove(struct device *dev)
}
EXPORT_SYMBOL(snd_sof_device_remove);
+static int __init snd_sof_init(void)
+{
+ return platform_driver_register(&sof_nocodec_audio);
+}
+module_init(snd_sof_init);
+
+static void __exit snd_sof_exit(void)
+{
+ platform_driver_unregister(&sof_nocodec_audio);
+}
+module_exit(snd_sof_exit);
+
MODULE_AUTHOR("Liam Girdwood");
MODULE_DESCRIPTION("Sound Open Firmware (SOF) Core");
MODULE_LICENSE("Dual BSD/GPL");
diff --git a/sound/soc/sof/nocodec.c b/sound/soc/sof/nocodec.c
index f84b4344dcc3..11811591bd81 100644
--- a/sound/soc/sof/nocodec.c
+++ b/sound/soc/sof/nocodec.c
@@ -8,7 +8,6 @@
// Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
//
-#include <linux/module.h>
#include <sound/sof.h>
#include "sof-priv.h"
@@ -77,7 +76,6 @@ int sof_nocodec_setup(struct device *dev,
&sof_nocodec_card);
return ret;
}
-EXPORT_SYMBOL(sof_nocodec_setup);
static int sof_nocodec_probe(struct platform_device *pdev)
{
@@ -93,7 +91,7 @@ static int sof_nocodec_remove(struct platform_device *pdev)
return 0;
}
-static struct platform_driver sof_nocodec_audio = {
+struct platform_driver sof_nocodec_audio = {
.probe = sof_nocodec_probe,
.remove = sof_nocodec_remove,
.driver = {
@@ -101,9 +99,3 @@ static struct platform_driver sof_nocodec_audio = {
.pm = &snd_soc_pm_ops,
},
};
-module_platform_driver(sof_nocodec_audio)
-
-MODULE_DESCRIPTION("ASoC sof nocodec");
-MODULE_AUTHOR("Liam Girdwood");
-MODULE_LICENSE("Dual BSD/GPL");
-MODULE_ALIAS("platform:sof-nocodec");
diff --git a/sound/soc/sof/sof-priv.h b/sound/soc/sof/sof-priv.h
index 1e85d6f9c5c3..3ae55d15820f 100644
--- a/sound/soc/sof/sof-priv.h
+++ b/sound/soc/sof/sof-priv.h
@@ -559,6 +559,17 @@ int snd_sof_init_trace_ipc(struct snd_sof_dev *sdev);
*/
extern struct snd_compr_ops sof_compressed_ops;
+/*
+ * nocodec platform binding
+ */
+extern struct platform_driver sof_nocodec_audio;
+
+int sof_nocodec_setup(struct device *dev,
+ struct snd_sof_pdata *sof_pdata,
+ struct snd_soc_acpi_mach *mach,
+ const struct sof_dev_desc *desc,
+ const struct snd_sof_dsp_ops *ops);
+
/*
* Kcontrols.
*/
next prev parent reply other threads:[~2019-05-10 13:56 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-10 2:36 [PATCH] ASoC: SOF: Fix build error with CONFIG_SND_SOC_SOF_NOCODEC=m YueHaibing
2019-05-10 2:36 ` YueHaibing
2019-05-10 7:12 ` Takashi Iwai
2019-05-10 7:12 ` Takashi Iwai
2019-05-10 12:56 ` Pierre-Louis Bossart
2019-05-10 13:04 ` Takashi Iwai
2019-05-10 13:34 ` [alsa-devel] " Pierre-Louis Bossart
2019-05-10 13:41 ` Takashi Iwai
2019-05-10 13:56 ` Takashi Iwai [this message]
2019-05-10 15:29 ` Pierre-Louis Bossart
2019-05-10 16:57 ` Takashi Iwai
2019-05-10 17:56 ` Pierre-Louis Bossart
2019-05-10 18:05 ` Takashi Iwai
2019-05-10 13:09 ` YueHaibing
2019-05-10 13:09 ` YueHaibing
2019-05-10 13:29 ` [PATCH V2] " YueHaibing
2019-05-10 13:29 ` YueHaibing
2019-05-10 13:36 ` Pierre-Louis Bossart
2019-05-10 13:50 ` YueHaibing
2019-05-10 13:50 ` YueHaibing
2019-05-10 16:24 ` Pierre-Louis Bossart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s5h8svemn0u.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=rdunlap@infradead.org \
--cc=yuehaibing@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.