On Tue, Apr 28, 2020 at 11:43 PM Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com wrote:
On 4/28/20 4:27 PM, Arnd Bergmann wrote:
The imx8 config keeps causing issues:
WARNING: unmet direct dependencies detected for SND_SOC_SOF_IMX8M Depends on [n]: SOUND [=y] && !UML && SND [=y] && SND_SOC [=m] && SND_SOC_SOF_TOPLEVEL [=y] && SND_SOC_SOF_IMX_TOPLEVEL [=y] && IMX_DSP [=n] Selected by [m]:
- SND_SOC_SOF_IMX_OF [=m] && SOUND [=y] && !UML && SND [=y] && SND_SOC [=m] && SND_SOC_SOF_TOPLEVEL [=y] && SND_SOC_SOF_IMX_TOPLEVEL [=y] && SND_SOC_SOF_IMX8M_SUPPORT [=y]
This is complicated by two drivers having dependencies on both platform specific drivers and the SND_SOC_SOF_OF framework code, and using an somewhat obscure method to build them the same way as the SOC_SOF_OF symbol (built-in or modular).
My solution now ensures that the two drivers can only be enabled when the dependencies are met:
When the platform specific drivers are built-in, everything is fine, as SOC_SOF_OF is either =y or =m
When both are loadable modules, it also works, both for Kconfig and at runtime
When the hardware drivers are loadable modules or disabled, and SOC_SOF_OF=y, prevent the IMX_SOF_OF drivers from being turned on, as this would be broken.
It seems that this is just an elaborate way to describe two tristate symbols that have straight dependencies, but maybe I'm missing some subtle point. It seems to always build for me now.
Thanks Arnd, do you mind sharing your config?
We noticed last week that there's a depend/select confusion might be simpler to fix, see https://github.com/thesofproject/linux/pull/2047/commits
If I look at the first line I see a IMX_DSP=n which looks exactly like what we wanted to fix.
Yes, I think that fix addresses the build warning as well, but looking more closely I don't think it's what you want: If you do this on a config that has the IMX_DSP disabled, it would appear to the user that you have enabled the drivers, but the actual code is still disabled.
Arnd