Re: [PATCH 6/6] i2c: designware: Use PCI PSP driver for communication

From: Limonciello, Mario
Date: Thu Feb 16 2023 - 16:27:47 EST


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:

...

    config I2C_DESIGNWARE_AMDPSP
      bool "AMD PSP I2C semaphore support"
-    depends on X86_MSR
      depends on ACPI
      depends on I2C_DESIGNWARE_PLATFORM
+    depends on CRYPTO_DEV_SP_PSP && !(I2C_DESIGNWARE_PLATFORM=y &&
CRYPTO_DEV_CCP_DD=m)
      help

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?