On 15/11/2022 11:03, Charles Keepax wrote:
On Mon, Nov 14, 2022 at 10:13:07AM -0600, Pierre-Louis Bossart wrote:
On 11/14/22 04:29, Charles Keepax wrote:
Provide stub functions when CONFIG_SOUNDWIRE is not set for functions that are quite likely to be used from common code on devices supporting multiple control buses.
So far this case has been covered by splitting SoundWire related code away from, say I2C, and with a clear 'depends on SOUNDWIRE'. This is the case for rt5682, max98373, etc.
Is this not good enough?
I am not against this patch, just wondering if allowing code for different interfaces to be part of the same file will lead to confusions with e.g. register offsets or functionality exposed with different registers.
I guess this is a bit of a grey area this one. Both work, I guess the reason I was leaning this way is that in order to avoid a circular dependency if I put all the soundwire DAI handling into the soundwire code then I have to duplicate the snd_soc_dai_driver structure into both the sdw and i2c specific code (worth noting the I2S DAIs are still usable when the part is sdw to the host). But there are also downsides to this approach in that it will likely have some small impact on driver size when soundwire is not built in.
I think we should just add the stubs. Other subsystems use stubs to help with code that references stuff that might not be available.
Splitting all the soundwire-specifics out into a separate module works for simple chips that are either I2S or soundwire. but can get messy for a complex codec. I used the separate file method for CS42L42, but for a driver I'm working on I abandoned that and put both DAIs in the core code. I didn't notice the missing stubs because my defconfig that was intended to omit soundwire apparently has something that is selecting it anyway.