On 01/07/2015 08:02 PM, Jean-Francois Moine wrote: > On Wed, 7 Jan 2015 15:41:38 +0000 > Russell King - ARM Linux <linux at arm.linux.org.uk> wrote: > >> On Wed, Jan 07, 2015 at 03:10:47PM +0000, Andrew Jackson wrote: >>> On 01/07/15 10:51, Jean-Francois Moine wrote: >>>> diff --git a/drivers/gpu/drm/i2c/Kconfig b/drivers/gpu/drm/i2c/Kconfig >>>> index 22c7ed6..24fc975 100644 >>>> --- a/drivers/gpu/drm/i2c/Kconfig >>>> +++ b/drivers/gpu/drm/i2c/Kconfig >>>> @@ -28,6 +28,7 @@ config DRM_I2C_SIL164 >>>> config DRM_I2C_NXP_TDA998X >>>> tristate "NXP Semiconductors TDA998X HDMI encoder" >>>> default m if DRM_TILCDC >>>> + select SND_SOC_TDA998X >>> >>> Do you need this since sound/soc/codecs/Kconfig conditionally brings in the >>> CODEC driver? > > For SND_SOC_ALL_CODECS only. > >> More importantly, it's broken, because it'll cause Kconfig to complain >> if you enable DRM_I2C_NXP_TDA998X, but have ASoC disabled. >> >> Moreover, if you decide you want the sound and ASoC built as a module, >> but want to build in DRM and TDA998x support (so you can get video >> output working on boot before initramfs/rootfs), Kconfig may well >> complain. > > select SND_SOC_TDA998X if SND_SOC > > should work in all cases. >
I think that would still fail if DRM and TDA998x is built in and SND_SOC is built as modules. A request_module() call before tda9998x_codec_register() should help. Or could could write: select SND_SOC_TDA998X if (SND_SOC=DRM_I2C_NXP_TDA998X || SND_SOC=y) >>>> +static int __init tda998x_codec_init(void) >>>> +{ >>>> + return 0; >>>> +} >>>> +static void __exit tda998x_codec_exit(void) >>>> +{ >>>> +} >>>> +module_init(tda998x_codec_init); >>>> +module_exit(tda998x_codec_exit); >> >> There's no need for these if they remain as the above. Modules can have >> both init/exit functions, or neither, and they are still unloadable. >> Only modules which provide only an init function get locked in on load. > > Thanks. >