Re: [PATCH -next] misc: rtsx: fix build for CONFIG_PM not set
From: Paul Cercueil
Date: Sun Feb 27 2022 - 12:46:30 EST
Hi,
Le dim., févr. 27 2022 at 18:30:16 +0100, Arnd Bergmann
<arnd@xxxxxxxx> a écrit :
On Sun, Feb 27, 2022 at 5:57 PM Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
wrote:
On 2/27/22 04:04, Arnd Bergmann wrote:
> On Sat, Feb 26, 2022 at 11:24 PM Randy Dunlap
<rdunlap@xxxxxxxxxxxxx> wrote:
>
>> ---
>> drivers/misc/cardreader/rtsx_pcr.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> --- linux-next-20220225.orig/drivers/misc/cardreader/rtsx_pcr.c
>> +++ linux-next-20220225/drivers/misc/cardreader/rtsx_pcr.c
>> @@ -1054,6 +1054,7 @@ static int rtsx_pci_acquire_irq(struct r
>> return 0;
>> }
>>
>> +#ifdef CONFIG_PM
>> static void rtsx_enable_aspm(struct rtsx_pcr *pcr)
>> {
>> if (pcr->ops->set_aspm)
>> @@ -1085,6 +1086,7 @@ static void rtsx_pm_power_saving(struct
>> {
>> rtsx_comm_pm_power_saving(pcr);
>> }
>> +#endif
>
> Now that we have DEFINE_SIMPLE_DEV_PM_OPS() etc, I think we should
> no longer add more __maybe_unused annotations or #ifdef CONFIG_PM
checks
> but just use the new macros for any new files or whenever a
warning like
> this shows up.
In this case it looks like DEFINE_RUNTIME_DEV_PM_OPS() is better.
Using DEFINE_SIMPLE_DEV_PM_OPS() still produces build
warnings/errors
for unused functions. And I do see 4 drivers that are already using
DEFINE_RUNTIME_DEV_PM_OPS().
Patch coming right up.
DEFINE_RUNTIME_DEV_PM_OPS() only references the three runtime
functions
(rtsx_pci_runtime_suspend, rtsx_pci_runtime_resume and
rtsx_pci_runtime_idle)
but not the pm-sleep functions (rtsx_pci_suspend and
rtsx_pci_resume), so your
second patch doesn't look correct either.
I see there is a _DEFINE_DEV_PM_OPS() helper that appears to do
what we want here, but I'm not sure this is considered an official
API. Adding
Rafael, Paul and Jonathan to Cc for extra input. As the macros are
still
fairly new, I suspect the idea was to add more as needed, so maybe
should
add a DEFINE_DEV_PM_OPS() to wrap _DEFINE_DEV_PM_OPS()?
There could be a DEFINE_DEV_PM_OPS(), but I don't think that's really
needed - you can very well declare your struct dev_pm_ops without using
one of these macros. Just make sure to use the SYSTEM_SLEEP_PM_OPS /
RUNTIME_PM_OPS macros for the callbacks and pm_ptr() for the device.pm
pointer.
Cheers,
-Paul