diff mbox series

[1/1] ASoC: cs42l51: add soft dependency declaration

Message ID 20201002152904.16448-1-olivier.moysan@st.com (mailing list archive)
State New, archived
Headers show
Series [1/1] ASoC: cs42l51: add soft dependency declaration | expand

Commit Message

Olivier MOYSAN Oct. 2, 2020, 3:29 p.m. UTC
When configured as module, CS42L51 codec driver uses two modules
snd-soc-cs42l51 and snd-soc-cs42l51-i2c.
Add soft dependency on snd-soc-cs42l51-i2c in snd-soc-cs42l51,
to allow smart module dependency solving.

Signed-off-by: Olivier Moysan <olivier.moysan@st.com>
---
 sound/soc/codecs/cs42l51.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Mark Brown Oct. 2, 2020, 3:41 p.m. UTC | #1
On Fri, Oct 02, 2020 at 05:29:04PM +0200, Olivier Moysan wrote:
> When configured as module, CS42L51 codec driver uses two modules
> snd-soc-cs42l51 and snd-soc-cs42l51-i2c.
> Add soft dependency on snd-soc-cs42l51-i2c in snd-soc-cs42l51,
> to allow smart module dependency solving.

Doesn't the userspace tooling usually manage to figure this out from
symbol usage?
Olivier MOYSAN Oct. 5, 2020, 3:01 p.m. UTC | #2
Hello Mark,





On 10/2/20 5:41 PM, Mark Brown wrote:

On Fri, Oct 02, 2020 at 05:29:04PM +0200, Olivier Moysan wrote:


When configured as module, CS42L51 codec driver uses two modules
snd-soc-cs42l51 and snd-soc-cs42l51-i2c.
Add soft dependency on snd-soc-cs42l51-i2c in snd-soc-cs42l51,
to allow smart module dependency solving.



Doesn't the userspace tooling usually manage to figure this out from
symbol usage?



cs42l51.c does not use symbols from cs42l51-i2c.c, so cs42l51-i2c does not appear
as a software dependency of cs42l51, for tools such as depmod.
(cs42l51-i2c.c uses symbols from cs42l51.c,
so there is a dependency in this way, but this does not help here)


When enabling a sound card based on cs42l51, all required modules are loaded automatically,
excepted snd-soc-cs42l51-i2c module. This one has to be inserted explicitely.

With the use of softdep, cs42l51-i2c appears as a dependency of cs42l51 for depmod,
which allows the probe of snd-soc-cs42l51-i2c.


If you think there is a better way to manage this dependency please let me know.

Regards
Olivier
Mark Brown Oct. 5, 2020, 3:25 p.m. UTC | #3
On Mon, Oct 05, 2020 at 03:01:23PM +0000, Olivier MOYSAN wrote:
> On 10/2/20 5:41 PM, Mark Brown wrote:
> 
> On Fri, Oct 02, 2020 at 05:29:04PM +0200, Olivier Moysan wrote:
> 
> 
> When configured as module, CS42L51 codec driver uses two modules
> snd-soc-cs42l51 and snd-soc-cs42l51-i2c.
> Add soft dependency on snd-soc-cs42l51-i2c in snd-soc-cs42l51,
> to allow smart module dependency solving.

Please fix your mail client, the formatting is completely broken -
there's nothing distinguishing quoted and new text and you've got lines
well over 80 columns.

> Doesn't the userspace tooling usually manage to figure this out from
> symbol usage?

> cs42l51.c does not use symbols from cs42l51-i2c.c, so cs42l51-i2c does not appear
> as a software dependency of cs42l51, for tools such as depmod.
> (cs42l51-i2c.c uses symbols from cs42l51.c,
> so there is a dependency in this way, but this does not help here)

But that's the dependency that exists and we want - the I2C driver is
what has the bus bindings in it and will be what we decide to load to
instantiate the device, that will then pull in the core code that it
needs.

> When enabling a sound card based on cs42l51, all required modules are loaded automatically,
> excepted snd-soc-cs42l51-i2c module. This one has to be inserted explicitely.

Whatever is going on here this patch is not addressing it.  Most likely
some ID tables are in the wrong file.
diff mbox series

Patch

diff --git a/sound/soc/codecs/cs42l51.c b/sound/soc/codecs/cs42l51.c
index 097c4e8d9950..1630baad42e2 100644
--- a/sound/soc/codecs/cs42l51.c
+++ b/sound/soc/codecs/cs42l51.c
@@ -814,4 +814,5 @@  EXPORT_SYMBOL_GPL(cs42l51_of_match);
 
 MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
 MODULE_DESCRIPTION("Cirrus Logic CS42L51 ALSA SoC Codec Driver");
+MODULE_SOFTDEP("pre: snd-soc-cs42l51-i2c");
 MODULE_LICENSE("GPL");