lkml.org 
[lkml]   [2022]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v1 1/1] serial: 8250_dw: Drop PM ifdeffery
Hi Ilpo,

Le jeu., juin 30 2022 at 10:41:40 +0300, Ilpo Järvinen
<ilpo.jarvinen@linux.intel.com> a écrit :
> On Wed, 29 Jun 2022, Andy Shevchenko wrote:
>
>> Drop CONFIG_PM and CONFIG_PM_SLEEP ifdeffery while converting
>> dw8250_pm_ops
>> to use new PM macros.
>>
>> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
>
> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
>
> Not directily related to the patch itself but do you have any idea why
> 1a3c7bb08826 ("PM: core: Add new *_PM_OPS macros, deprecate old ones")
> didn't wrap RUNTIME_PM_OPS() pointers with pm_ptr()? I'm asking this
> because in SET_RUNTIME_PM_OPS() the callbacks are only created with
> #ifdef CONFIG_PM so I'd have expected RUNTIME_PM_OPS() to maintain
> that
> behavior but it didn't? Was it just an oversight that should be fixed?

The RUNTIME_PM_OPS() does not wrap pointers with pm_ptr(), because the
pointer to the dev_pm_ops should only ever be used wrapped with
pm_ptr() or pm_sleep_ptr().

Which is not done here.

Andy:
The deference of dw8250_pm_ops should be pm_ptr(&dw8250_pm_ops). If you
only had system suspend/resume functions, you'd use pm_sleep_ptr()
there.

Cheers,
-Paul

> --
> i.
>
>> ---
>> drivers/tty/serial/8250/8250_dw.c | 8 ++------
>> 1 file changed, 2 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/tty/serial/8250/8250_dw.c
>> b/drivers/tty/serial/8250/8250_dw.c
>> index f71428c85562..adcc869352b1 100644
>> --- a/drivers/tty/serial/8250/8250_dw.c
>> +++ b/drivers/tty/serial/8250/8250_dw.c
>> @@ -691,7 +691,6 @@ static int dw8250_remove(struct platform_device
>> *pdev)
>> return 0;
>> }
>>
>> -#ifdef CONFIG_PM_SLEEP
>> static int dw8250_suspend(struct device *dev)
>> {
>> struct dw8250_data *data = dev_get_drvdata(dev);
>> @@ -709,9 +708,7 @@ static int dw8250_resume(struct device *dev)
>>
>> return 0;
>> }
>> -#endif /* CONFIG_PM_SLEEP */
>>
>> -#ifdef CONFIG_PM
>> static int dw8250_runtime_suspend(struct device *dev)
>> {
>> struct dw8250_data *data = dev_get_drvdata(dev);
>> @@ -733,11 +730,10 @@ static int dw8250_runtime_resume(struct
>> device *dev)
>>
>> return 0;
>> }
>> -#endif
>>
>> static const struct dev_pm_ops dw8250_pm_ops = {
>> - SET_SYSTEM_SLEEP_PM_OPS(dw8250_suspend, dw8250_resume)
>> - SET_RUNTIME_PM_OPS(dw8250_runtime_suspend, dw8250_runtime_resume,
>> NULL)
>> + SYSTEM_SLEEP_PM_OPS(dw8250_suspend, dw8250_resume)
>> + RUNTIME_PM_OPS(dw8250_runtime_suspend, dw8250_runtime_resume,
>> NULL)
>> };
>>
>> static const struct dw8250_platform_data dw8250_dw_apb = {
>>


\
 
 \ /
  Last update: 2022-06-30 10:45    [W:0.086 / U:1.564 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site