Re: [PATCH 3/3] sound: ASoC: tegra: Select tegra30 i2s and ahub for tegra124 SoC

From: Stephen Warren
Date: Wed Apr 19 2017 - 18:01:03 EST


On 04/18/2017 10:38 AM, Paul Kocialkowski wrote:
Le mardi 18 avril 2017 Ã 10:15 -0600, Stephen Warren a Ãcrit :
On 04/18/2017 09:11 AM, Paul Kocialkowski wrote:
This selects the tegra30 i2s and ahub controllers for the tegra124 SoC.
These are needed when building without ARCH_TEGRA_3x_SOC set.
diff --git a/sound/soc/tegra/Kconfig b/sound/soc/tegra/Kconfig
index efbe8d4c019e..bcd18d2cf7a7 100644
--- a/sound/soc/tegra/Kconfig
+++ b/sound/soc/tegra/Kconfig
@@ -46,7 +46,7 @@ config SND_SOC_TEGRA20_SPDIF

config SND_SOC_TEGRA30_AHUB
tristate
- depends on SND_SOC_TEGRA && ARCH_TEGRA_3x_SOC
+ depends on SND_SOC_TEGRA && (ARCH_TEGRA_3x_SOC ||
ARCH_TEGRA_124_SOC)

Is this really a compile-time dependency?

From a quick look at the code, I doubt this is really a build dependency.

If so, don't we need to add T210 and T186 entries into that || condition too,
since we could be building a kernel with just T210/T186 support and no T124
support?

In the spirit of this patch, adding entries for other tegra platforms would make
sense. Would you prefer that we leave out the dependency from SND_SOC_TEGRA30_*
and only select the right I2S driver to use in each codec driver?

If not, we'd have to list all relevant platforms both in the I2S/AHUB drivers
and in each codec's rules (which is not necessarily and issue, but there's no
need to have artificial platform dependencies).

What do you think?

I think we should just remove most of these "depends on" since they're mostly set up to reflect runtime requirements rather than build time requirements. The only points I'd make are:

1)

Everything should "depends on SND_SOC_TEGRA" simply so the options don't show up and clutter menuconfig menus unless SND_SOC_TEGRA is enabled.

2)

SND_SOC_TEGRA30_I2S does need the Tegra30 AHUB driver in order to compile/link, since it directly calls functions in that driver. This is already handled by SND_SOC_TEGRA30_I2S doing "select SND_SOC_TEGRA30_AHUB".

3)

The machine drivers all do e.g. "select SND_SOC_TEGRA30_I2S if ARCH_TEGRA_3x_SOC". This was an attempt to make the machine drivers only pull in the relevant drivers for the SoC(s) being compiled for. I'm not sure this still makes sense; this won't work on kernels that only support T124/T210/T186 since ARCH_TEGRA_3x_SOC isn't enabled then. Should we just remove all those and make sure the defconfigs are updated to make sure the relevant I2S/AHUB/SPDIF/AC97 drivers are explicitly enabled? Perhaps we should default all the I2S/AHUB/SPDIF/AC97 to y (which will only apply if SND_SOC_TEGRA is enabled)?