On Fri, Feb 17, 2023 at 01:05:03PM +0200, Andy Shevchenko wrote: > On Thu, Feb 16, 2023 at 03:27:35PM -0600, Limonciello, Mario wrote: > > On 2/16/2023 15:16, Andy Shevchenko wrote: > > > On Thu, Feb 16, 2023 at 03:01:35PM -0600, Limonciello, Mario wrote: > > > > On 2/16/2023 14:59, Andy Shevchenko wrote: > > > > > On Thu, Feb 16, 2023 at 02:55:07PM -0600, Limonciello, Mario wrote: > > > > > > On 2/16/2023 08:56, Andy Shevchenko wrote: > > > > > > > On Thu, Feb 16, 2023 at 07:29:53AM -0600, Mario Limonciello wrote: > > > > > > > > On 2/16/23 07:27, Jarkko Nikula wrote: > > > > > > > > > On 2/10/23 00:38, Mario Limonciello wrote: ... > > > > > > > > > Would this look better if split? I.e. > > > > > > > > > > > > > > > > > > depends on CRYPTO_DEV_SP_PSP > > > > > > > > > depends on !(I2C_DESIGNWARE_PLATFORM=y && CRYPTO_DEV_CCP_DD=m) > > > > > > > > Yes, thanks I'll change that for next version. > > > > > > > > > > > > > > I'm wondering if this is homegrown implementation of 'imply' keyword? > > > > > > > > > > > > Like this? > > > > > > > > > > > > config I2C_DESIGNWARE_AMDPSP > > > > > > depends on CRYPTO_DEV_SP_PSP > > > > > > depends on CRYPTO_DEV_CCP_DD > > > > > > > > > > > > config CRYPTO_DEV_CCP_DD > > > > > > imply I2C_DESIGNWARE_PLATFORM > > > > > > > > > > Looks okay, but I'm not familiar with this code. The documentation about > > > > > 'imply' can be found here: > > > > > > > > > > https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html#menu-attributes > > > > > > > > Yeah I found that, but this was my first time using imply, so I was hoping > > > > someone who has used it could validate I interpreted it correctly. > > > > > > > > Following the example CRYPTO_DEV_CCP_DD would be FOO and > > > > I2C_DESIGNWARE_PLATFORM would be BAZ so I thought so. > > > > > > 'imply' == weak 'select', it means that the target option may or may not be > > > selected. I.o.w. "optional" dependency. > > > > > > Does CRYPTO_DEV_CCP_DD use I2C DesignWare code? > > > > > > If I understand correctly the "depends on !(I2C_DESIGNWARE_PLATFORM=y && > > > CRYPTO_DEV_CCP_DD=m)" you want to have IS_REACHABLE() in your code and actually > > > "imply CRYPTO_DEV_CCP_DD" in the I2C_DESIGNWARE_AMDPSP. > > > > Allowing that combination and using IS_REACHABLE means that it's going to > > actually load earlier that expected, so I suppose it needs to be something > > like this then in the probe code for i2c-designware-amdpsp.c: > > > > if (!IS_REACHABLE() > > return -EPROBE_DEFER; > > > > Right? > > Hmm... I'm not sure. IS_REACHABLE() should be done with a compilation s/with/without/ > dependencies. What you put here is functional dependency, moreover since > you mentioned the boot / load ordering doesn't it mean that the architecture > of all of this is not good enough and requires some redesign? > > Perhaps you need to use component framework actually? -- With Best Regards, Andy Shevchenko