Removing SOUNDWIRE_BUS Kconfig did clean it up and made it bit more align with others
Good point, but no. This is intentional and follows the Kconfig pattern pattern described by Takashi at https://lkml.org/lkml/2017/11/17/47
yes, this SOUNDWIRE is overkill for now, but let's assume there is a second non-intel implementation (which I understand as very likely given all the threads on ARM64 support). In that case you'd really want a top-level selector option that has no actual compilation impact - not used in any Makefile or code - but enables the sub-options and let users/distros select the platforms they care about.
I don't understand what you're saying here - what is the intended difference between SOUNDWIRE and SOUNDWIRE_BUS? Having the separate option for _INTEL for your controller makes sense but otherwise the normal pattern for a bus would be that you'd have the root config option for the bus (which would enable the core code for the bus) and then everything else is hidden behind that.
I was thinking of this pattern:
config SOUNDWIRE bool "SoundWire support"
if SOUNDWIRE
config SOUNDWIRE_INTEL tristate "SoundWire for Intel" select SOUNDWIRE_BUS
config SOUNDWIRE_XYZ_ARM64 tristate "SoundWire for XYZ platform" select SOUNDWIRE_BUS
config SOUNDWIRE_BUS tristate
endif
One could argue that SOUNDWIRE could select SOUNDWIRE_BUS directly, or merge the two, but then you could have a configuration where the bus is included with no actual users. Not to mention that the intent of the top-level selector is typically to have no impact on compilation as recommended by Linus.