2021-10-22 02:31:21

by Rajat Jain

[permalink] [raw]
Subject: [PATCH 1/3] i2c: designware: Enable async suspend / resume of designware devices

Mark the designware devices for asynchronous suspend. With this, the
resume for designware devices does not get stuck behind other unrelated
devices (e.g. intel_backlight that takes hundreds of ms to resume,
waiting for its parent devices).

Signed-off-by: Rajat Jain <[email protected]>
---
drivers/i2c/busses/i2c-designware-platdrv.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 21113665ddea..2bd81abc86f6 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -293,6 +293,8 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
DPM_FLAG_MAY_SKIP_RESUME);
}

+ device_enable_async_suspend(&pdev->dev);
+
/* The code below assumes runtime PM to be disabled. */
WARN_ON(pm_runtime_enabled(&pdev->dev));

--
2.33.0.1079.g6e70778dc9-goog


2021-10-22 11:39:03

by Jarkko Nikula

[permalink] [raw]
Subject: Re: [PATCH 1/3] i2c: designware: Enable async suspend / resume of designware devices

On 10/22/21 5:28 AM, Rajat Jain wrote:
> Mark the designware devices for asynchronous suspend. With this, the
> resume for designware devices does not get stuck behind other unrelated
> devices (e.g. intel_backlight that takes hundreds of ms to resume,
> waiting for its parent devices).
>
> Signed-off-by: Rajat Jain <[email protected]>
> ---
> drivers/i2c/busses/i2c-designware-platdrv.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
> index 21113665ddea..2bd81abc86f6 100644
> --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> @@ -293,6 +293,8 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
> DPM_FLAG_MAY_SKIP_RESUME);
> }
>
> + device_enable_async_suspend(&pdev->dev);
> +
> /* The code below assumes runtime PM to be disabled. */
> WARN_ON(pm_runtime_enabled(&pdev->dev));
>
I guess same can be done to i2c_dw_pci_probe() too. I don't have any
strong opinion should it be done in this patch or somewhere in the future.

Acked-by: Jarkko Nikula <[email protected]>

2021-10-22 16:55:14

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH 1/3] i2c: designware: Enable async suspend / resume of designware devices

Hi Jarkko,

On Fri, Oct 22, 2021 at 4:37 AM Jarkko Nikula
<[email protected]> wrote:
>
> On 10/22/21 5:28 AM, Rajat Jain wrote:
> > Mark the designware devices for asynchronous suspend. With this, the
> > resume for designware devices does not get stuck behind other unrelated
> > devices (e.g. intel_backlight that takes hundreds of ms to resume,
> > waiting for its parent devices).
> >
> > Signed-off-by: Rajat Jain <[email protected]>
> > ---
> > drivers/i2c/busses/i2c-designware-platdrv.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
> > index 21113665ddea..2bd81abc86f6 100644
> > --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> > +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> > @@ -293,6 +293,8 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
> > DPM_FLAG_MAY_SKIP_RESUME);
> > }
> >
> > + device_enable_async_suspend(&pdev->dev);
> > +
> > /* The code below assumes runtime PM to be disabled. */
> > WARN_ON(pm_runtime_enabled(&pdev->dev));
> >
> I guess same can be done to i2c_dw_pci_probe() too. I don't have any
> strong opinion should it be done in this patch or somewhere in the future.

All PCI devices are marked for asynchronous suspend/resume by default.
See drivers/pci/pci.c::pci_pm_init().

Thanks,
Dmitry