Re: i801_smbus: no runtime pm since a9c8088c7988 ("i2c: i801: Don't restore config registers on runtime PM")

Heiner Kallweit
2021-05-21T13:26:42Z

On 21.05.2021 10:19, Heiner Kallweit wrote:
> Before the referenced commit we used i801_suspend and i801_resume also as
> runtime pm callbacks. That's no longer the case, and at least on my
> platform the SMBus controller PCI device doesn't support PM. Therefore
> PCI core can't do what it would do for other devices: bring them to D3hot
> or D3cold.
> Having said that effectively there is no runtime pm any longer. Not sure
> whether there are SMBus controller versions where the PCI device supports
> PM.
>
> So my questions are:
> Does the SMBus controller support any power-saving modes?
> i801_suspend() just sets SMBHSTCFG to the value it had when the driver
> was loaded. Means if SMBHSTCFG_HST_EN was enabled already, we won't clear
> it. And this bit may have an impact on some internal PLL's (just guessing).
> If there's no good-enough power-saving option, then runtime pm support
> could be removed completely, or?
>
>
> 00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
> DeviceName: Onboard - Other
> Subsystem: ASUSTeK Computer Inc. Device 8694
> Flags: medium devsel, IRQ 16
> Memory at a1316000 (64-bit, non-prefetchable) [size=256]
> I/O ports at efa0 [size=32]
> Kernel driver in use: i801_smbus
> Kernel modules: i2c_i801
>
> Heiner
>
+Jarkko as author of the change that added runtime pm

The commit message of the original change says:
"those platforms that support PM for i801 device"
Which platforms are this? Independent of the i801 generation I didn't see
any SMBus host controller supporting the PCI Power Management capability
yet.