[alsa-devel] [PATCH] ASoC: Tegra and i.MX are mutually exclusive
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
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.
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?
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
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
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.
participants (4)
-
Arnd Bergmann
-
Lars-Peter Clausen
-
Mark Brown
-
Stephen Warren