diff options
author | Thomas Richard <thomas.richard@bootlin.com> | 2024-04-16 14:52:32 +0200 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2024-06-03 19:17:01 +0530 |
commit | b5539abdd013fd3f77633413848c93f8ec84b51d (patch) | |
tree | 48f023b020a4322e5f2a40f7e8f38687cd81c051 /drivers/phy | |
parent | 3c4e13cf9ead79fac3b217e228c1c7d3db3e132f (diff) | |
download | linux-b5539abdd013fd3f77633413848c93f8ec84b51d.tar.gz linux-b5539abdd013fd3f77633413848c93f8ec84b51d.tar.bz2 linux-b5539abdd013fd3f77633413848c93f8ec84b51d.zip |
phy: ti: phy-j721e-wiz: add resume support
Add resume support.
It has been tested on J7200 SR1.0 and SR2.0.
Co-developed-by: Théo Lebrun <theo.lebrun@bootlin.com>
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://lore.kernel.org/r/20240412-j7200-phy-s2r-v1-3-f15815833974@bootlin.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/phy')
-rw-r--r-- | drivers/phy/ti/phy-j721e-wiz.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/phy/ti/phy-j721e-wiz.c b/drivers/phy/ti/phy-j721e-wiz.c index ba670109e7ad..7f626c597025 100644 --- a/drivers/phy/ti/phy-j721e-wiz.c +++ b/drivers/phy/ti/phy-j721e-wiz.c @@ -1659,12 +1659,41 @@ static void wiz_remove(struct platform_device *pdev) pm_runtime_disable(dev); } +static int wiz_resume_noirq(struct device *dev) +{ + struct device_node *node = dev->of_node; + struct wiz *wiz = dev_get_drvdata(dev); + int ret; + + /* Enable supplemental Control override if available */ + if (wiz->sup_legacy_clk_override) + regmap_field_write(wiz->sup_legacy_clk_override, 1); + + wiz_clock_init(wiz); + + ret = wiz_init(wiz); + if (ret) { + dev_err(dev, "WIZ initialization failed\n"); + goto err_wiz_init; + } + + return 0; + +err_wiz_init: + wiz_clock_cleanup(wiz, node); + + return ret; +} + +static DEFINE_NOIRQ_DEV_PM_OPS(wiz_pm_ops, NULL, wiz_resume_noirq); + static struct platform_driver wiz_driver = { .probe = wiz_probe, .remove_new = wiz_remove, .driver = { .name = "wiz", .of_match_table = wiz_id_table, + .pm = pm_sleep_ptr(&wiz_pm_ops), }, }; module_platform_driver(wiz_driver); |