From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 297A0C04A6B for ; Fri, 10 May 2019 13:56:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 00E7D21479 for ; Fri, 10 May 2019 13:56:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727767AbfEJN4D (ORCPT ); Fri, 10 May 2019 09:56:03 -0400 Received: from mx2.suse.de ([195.135.220.15]:49380 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727249AbfEJN4D (ORCPT ); Fri, 10 May 2019 09:56:03 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id B6665AC8A; Fri, 10 May 2019 13:56:01 +0000 (UTC) Date: Fri, 10 May 2019 15:56:01 +0200 Message-ID: From: Takashi Iwai To: Pierre-Louis Bossart Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, rdunlap@infradead.org, YueHaibing , lgirdwood@gmail.com, broonie@kernel.org Subject: Re: [alsa-devel] [PATCH] ASoC: SOF: Fix build error with CONFIG_SND_SOC_SOF_NOCODEC=m In-Reply-To: References: <20190510023657.8960-1-yuehaibing@huawei.com> <73c6dd27-895a-adba-a4ef-2992266fcc48@linux.intel.com> <1e7e1908-a813-6c9b-5b88-122864d3a372@linux.intel.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > > >>>> Fixes: c16211d6226d ("ASoC: SOF: Add Sound Open Firmware driver core") > > >>>> Signed-off-by: YueHaibing > > >>> > > >>> 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 // -#include #include #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. */