1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- From a1d874ef3376295ee8ed89b3b5315f4c840ff00b Mon Sep 17 00:00:00 2001
- From: Balsam CHIHI <[email protected]>
- Date: Tue, 17 Oct 2023 21:05:42 +0200
- Subject: [PATCH 40/42] thermal/drivers/mediatek/lvts_thermal: Add suspend and
- resume
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- Add suspend and resume support to LVTS driver.
- Signed-off-by: Balsam CHIHI <[email protected]>
- [[email protected]: suspend/resume in noirq phase]
- Co-developed-by: Bernhard Rosenkränzer <[email protected]>
- Signed-off-by: Bernhard Rosenkränzer <[email protected]>
- Reviewed-by: Matthias Brugger <[email protected]>
- Reviewed-by: Alexandre Mergnat <[email protected]>
- Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
- Signed-off-by: Daniel Lezcano <[email protected]>
- Link: https://lore.kernel.org/r/[email protected]
- ---
- drivers/thermal/mediatek/lvts_thermal.c | 37 +++++++++++++++++++++++++
- 1 file changed, 37 insertions(+)
- --- a/drivers/thermal/mediatek/lvts_thermal.c
- +++ b/drivers/thermal/mediatek/lvts_thermal.c
- @@ -1297,6 +1297,38 @@ static const struct lvts_ctrl_data mt798
- }
- };
-
- +static int lvts_suspend(struct device *dev)
- +{
- + struct lvts_domain *lvts_td;
- + int i;
- +
- + lvts_td = dev_get_drvdata(dev);
- +
- + for (i = 0; i < lvts_td->num_lvts_ctrl; i++)
- + lvts_ctrl_set_enable(&lvts_td->lvts_ctrl[i], false);
- +
- + clk_disable_unprepare(lvts_td->clk);
- +
- + return 0;
- +}
- +
- +static int lvts_resume(struct device *dev)
- +{
- + struct lvts_domain *lvts_td;
- + int i, ret;
- +
- + lvts_td = dev_get_drvdata(dev);
- +
- + ret = clk_prepare_enable(lvts_td->clk);
- + if (ret)
- + return ret;
- +
- + for (i = 0; i < lvts_td->num_lvts_ctrl; i++)
- + lvts_ctrl_set_enable(&lvts_td->lvts_ctrl[i], true);
- +
- + return 0;
- +}
- +
- static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
- {
- .cal_offset = { 0x04, 0x07 },
- @@ -1405,12 +1437,17 @@ static const struct of_device_id lvts_of
- };
- MODULE_DEVICE_TABLE(of, lvts_of_match);
-
- +static const struct dev_pm_ops lvts_pm_ops = {
- + NOIRQ_SYSTEM_SLEEP_PM_OPS(lvts_suspend, lvts_resume)
- +};
- +
- static struct platform_driver lvts_driver = {
- .probe = lvts_probe,
- .remove_new = lvts_remove,
- .driver = {
- .name = "mtk-lvts-thermal",
- .of_match_table = lvts_of_match,
- + .pm = &lvts_pm_ops,
- },
- };
- module_platform_driver(lvts_driver);
|