diff mbox

ASoC: Tegra and i.MX are mutually exclusive

Message ID 5967649.DUvDfofhX4@wuerfel (mailing list archive)
State New, archived
Headers show

Commit Message

Arnd Bergmann June 24, 2013, 3:04 p.m. UTC
Both Tegra and i.MX provide ac97 operations, which can only
exist once in the kernel. They can both be built as loadable
modules (only one of them needs to be loaded anyway), but we
have to disallow enabling them both as built-in.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Comments

Stephen Warren June 24, 2013, 3:28 p.m. UTC | #1
On 06/24/2013 09:04 AM, Arnd Bergmann wrote:
> Both Tegra and i.MX provide ac97 operations, which can only
> exist once in the kernel. They can both be built as loadable
> modules (only one of them needs to be loaded anyway), but we
> have to disallow enabling them both as built-in.

> diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig

>  menuconfig SND_IMX_SOC
>  	tristate "SoC Audio for Freescale i.MX CPUs"
>  	depends on ARCH_MXC
> +	depends on SND_SOC_TEGRA=n || (SND_SOC_TEGRA=m && m)

I can easily see how this prevents adding SND_IMX_SOC to a config if
SND_SOC_TEGRA is enabled, but I'm not sure about the other way around;
does Kconfig check that adding a new SND_SOC_TEGRA wouldn't invalidate
any of the depends of any already-selected options?

In other words, do you need to make the "same" change to Tegra?
Arnd Bergmann June 24, 2013, 4 p.m. UTC | #2
On Monday 24 June 2013 09:28:08 Stephen Warren wrote:
> On 06/24/2013 09:04 AM, Arnd Bergmann wrote:
> > Both Tegra and i.MX provide ac97 operations, which can only
> > exist once in the kernel. They can both be built as loadable
> > modules (only one of them needs to be loaded anyway), but we
> > have to disallow enabling them both as built-in.
> 
> > diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig
> 
> >  menuconfig SND_IMX_SOC
> >       tristate "SoC Audio for Freescale i.MX CPUs"
> >       depends on ARCH_MXC
> > +     depends on SND_SOC_TEGRA=n || (SND_SOC_TEGRA=m && m)
> 
> I can easily see how this prevents adding SND_IMX_SOC to a config if
> SND_SOC_TEGRA is enabled, but I'm not sure about the other way around;
> does Kconfig check that adding a new SND_SOC_TEGRA wouldn't invalidate
> any of the depends of any already-selected options?

If you start out with a config that has SND_IMX_SOC and select
SND_SOC_TEGRA, SND_IMX_SOC gets turned off.

> In other words, do you need to make the "same" change to Tegra?

No, that would create a circular dependency that is not allowed
in Kconfig.

	Arnd
Lars-Peter Clausen June 25, 2013, 6:36 a.m. UTC | #3
On 06/24/2013 05:04 PM, Arnd Bergmann wrote:
> Both Tegra and i.MX provide ac97 operations, which can only
> exist once in the kernel. They can both be built as loadable
> modules (only one of them needs to be loaded anyway), but we
> have to disallow enabling them both as built-in.
> 

It's just the ac97 drivers that are mutually exclusive. I'm not sure whether
it makes sense to make the whole platforms mutually exclusive for this.

Also this is not limited to tegra and imx. As more platforms are converted
to multiplatform ARM the same issue will pop up for other platforms as well.
I don't think your solution will scale really well for multiple platforms.
The best solution would of course be to make AC97 work properly with
multiple AC97 drivers. But maybe we can get away with a 'choice' Kconfig
entry which allows you to select which platforms AC97 driver you want to build.

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> 
> diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig
> index 3843a18..5958948 100644
> --- a/sound/soc/fsl/Kconfig
> +++ b/sound/soc/fsl/Kconfig
> @@ -99,6 +99,7 @@ endif # SND_POWERPC_SOC
>  menuconfig SND_IMX_SOC
>  	tristate "SoC Audio for Freescale i.MX CPUs"
>  	depends on ARCH_MXC
> +	depends on SND_SOC_TEGRA=n || (SND_SOC_TEGRA=m && m)
>  	help
>  	  Say Y or M if you want to add support for codecs attached to
>  	  the i.MX CPUs.
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Mark Brown June 25, 2013, 9:26 a.m. UTC | #4
On Tue, Jun 25, 2013 at 08:36:18AM +0200, Lars-Peter Clausen wrote:

> It's just the ac97 drivers that are mutually exclusive. I'm not sure whether
> it makes sense to make the whole platforms mutually exclusive for this.

I agree, this is excessive and seems to rather defeat the point of
having multi-platform in the first place.  It makes it impossible to
build the sound drivers multi-platform all for the sake of a bus which
is used by approximately nothing these days (hence the lack of love the
code has had).

> Also this is not limited to tegra and imx. As more platforms are converted
> to multiplatform ARM the same issue will pop up for other platforms as well.
> I don't think your solution will scale really well for multiple platforms.
> The best solution would of course be to make AC97 work properly with
> multiple AC97 drivers. But maybe we can get away with a 'choice' Kconfig
> entry which allows you to select which platforms AC97 driver you want to build.

It should be easy enough to refactor so that we assign the ops pointer
when the driver is loaded instead of at link time which isn't solving
the issue but makes it better.  I'll send some patches.
diff mbox

Patch

diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig
index 3843a18..5958948 100644
--- a/sound/soc/fsl/Kconfig
+++ b/sound/soc/fsl/Kconfig
@@ -99,6 +99,7 @@  endif # SND_POWERPC_SOC
 menuconfig SND_IMX_SOC
 	tristate "SoC Audio for Freescale i.MX CPUs"
 	depends on ARCH_MXC
+	depends on SND_SOC_TEGRA=n || (SND_SOC_TEGRA=m && m)
 	help
 	  Say Y or M if you want to add support for codecs attached to
 	  the i.MX CPUs.