Message ID | 20240102-j7200-pcie-s2r-v1-0-84e55da52400@bootlin.com |
---|---|
Headers | show |
Series | Add suspend to ram support for PCIe on J7200 | expand |
On Mon, Jan 15, 2024 at 6:16 PM Thomas Richard <thomas.richard@bootlin.com> wrote: > > Some IOs can be needed during suspend_noirq/resume_noirq. ->suspend_noirq() / ->resume_noirq() > So move suspend/resume callbacks to noirq. ... > -static DEFINE_SIMPLE_DEV_PM_OPS(pca953x_pm_ops, pca953x_suspend, pca953x_resume); > +static const struct dev_pm_ops pca953x_pm_ops = { > + SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pca953x_suspend_noirq, pca953x_resume_noirq) > +}; Please, use correct / modern macro.
On 1/15/24 20:56, Andy Shevchenko wrote: > On Mon, Jan 15, 2024 at 6:16 PM Thomas Richard > <thomas.richard@bootlin.com> wrote: >> >> Some IOs can be needed during suspend_noirq/resume_noirq. > > ->suspend_noirq() / ->resume_noirq() > >> So move suspend/resume callbacks to noirq. > > ... > >> -static DEFINE_SIMPLE_DEV_PM_OPS(pca953x_pm_ops, pca953x_suspend, pca953x_resume); >> +static const struct dev_pm_ops pca953x_pm_ops = { >> + SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pca953x_suspend_noirq, pca953x_resume_noirq) >> +}; > > Please, use correct / modern macro. > Hello Andy, Thanks for the reviews. I applied your comments for the next iteration. Regards,
This add suspend to ram support for the PCIe (RC mode) on J7200 platform. In RC mode, the reset pin for endpoints is managed by a gpio expander on a i2c bus. This pin shall be managed in suspend_noirq and resume_noirq. The suspend/resume has been moved to suspend_noirq/resume_noirq for pca953x (expander) and pinctrl-single. To do i2c accesses during suspend_noirq/resume_noirq, we need to force the wakeup of the i2c controller (which is autosuspended) during suspend callback. It's the only way to wakeup the controller if it's autosuspended, as runtime pm is disabled in suspend_noirq and resume_noirq. Signed-off-by: Thomas Richard <thomas.richard@bootlin.com> --- Thomas Richard (10): gpio: pca953x: move suspend/resume to suspend_noirq/resume_noirq pinctrl: pinctrl-single: move suspend/resume to suspend_noirq/resume_noirq i2c: omap: wakeup the controller during suspend callback phy: ti: phy-j721e-wiz: make wiz_clock_init callable multiple times phy: ti: phy-j721e-wiz: add resume support phy: cadence-torrent: extract calls to clk_get from cdns_torrent_clk phy: cadence-torrent: register resets even if the phy is already configured phy: cadence-torrent: move already_configured to struct cdns_torrent_phy phy: cadence-torrent: remove noop_ops phy operations phy: cadence-torrent: add suspend and resume support Théo Lebrun (4): mux: mmio: Add resume support PCI: cadence: add resume support to cdns_pcie_host_setup() PCI: j721e: move reset GPIO to device struct PCI: j721e: add suspend and resume support drivers/gpio/gpio-pca953x.c | 8 +- drivers/i2c/busses/i2c-omap.c | 15 +++ drivers/mux/mmio.c | 34 ++++++ drivers/pci/controller/cadence/pci-j721e.c | 86 ++++++++++++-- drivers/pci/controller/cadence/pcie-cadence-host.c | 49 ++++---- drivers/pci/controller/cadence/pcie-cadence-plat.c | 2 +- drivers/pci/controller/cadence/pcie-cadence.h | 7 +- drivers/phy/cadence/phy-cadence-torrent.c | 125 +++++++++++++++------ drivers/phy/ti/phy-j721e-wiz.c | 99 ++++++++++++---- drivers/pinctrl/pinctrl-single.c | 19 ++-- 10 files changed, 342 insertions(+), 102 deletions(-) --- base-commit: 00ff0f9ce40db8e64fe16c424a965fd7ab769c42 change-id: 20240102-j7200-pcie-s2r-ecb1a979e357 Best regards,