On Wed, Jul 5, 2023 at 6:37 PM Shenwei Wang <shenwei.wang@xxxxxxx> wrote: > > Adds runtime PM support and allow the GPIO controller to enter > into runtime suspend automatically when not in use to save power. > However, it will automatically resume and enable clocks when a > GPIO or IRQ is requested. > > While putting the GPIO module itself into power saving mode may not > have an obvious impact on current dissipation, the function is necessary > because the GPIO module disables its clock when idle. This enables the > system an opportunity to power off the parent subsystem, and this conserves > more power. The typical i.MX8 SoC features up to 8 GPIO controllers, but > most of the controllers often remain unused. ... > + pm_runtime_set_active(&pdev->dev); > + pm_runtime_enable(&pdev->dev); > + err = pm_runtime_resume_and_get(&pdev->dev); > + if (err < 0) > + goto out_pm_dis; So, after this if an error happens, you will have PM left enabled and the next probe won't work as expected, right? ... > platform_set_drvdata(pdev, port); > + pm_runtime_put_autosuspend(&pdev->dev); > > return 0; ...something here is missing? > +out_pm_dis: > + pm_runtime_disable(&pdev->dev); > + clk_disable_unprepare(port->clk); > out_irqdomain_remove: > irq_domain_remove(port->domain); > out_bgio: -- With Best Regards, Andy Shevchenko