@@ -1297,6 +1297,38 @@ static const struct lvts_ctrl_data mt7988_lvts_ap_data_ctrl[] = {
1297
1297
}
1298
1298
};
1299
1299
1300
+ static int lvts_suspend (struct device * dev )
1301
+ {
1302
+ struct lvts_domain * lvts_td ;
1303
+ int i ;
1304
+
1305
+ lvts_td = dev_get_drvdata (dev );
1306
+
1307
+ for (i = 0 ; i < lvts_td -> num_lvts_ctrl ; i ++ )
1308
+ lvts_ctrl_set_enable (& lvts_td -> lvts_ctrl [i ], false);
1309
+
1310
+ clk_disable_unprepare (lvts_td -> clk );
1311
+
1312
+ return 0 ;
1313
+ }
1314
+
1315
+ static int lvts_resume (struct device * dev )
1316
+ {
1317
+ struct lvts_domain * lvts_td ;
1318
+ int i , ret ;
1319
+
1320
+ lvts_td = dev_get_drvdata (dev );
1321
+
1322
+ ret = clk_prepare_enable (lvts_td -> clk );
1323
+ if (ret )
1324
+ return ret ;
1325
+
1326
+ for (i = 0 ; i < lvts_td -> num_lvts_ctrl ; i ++ )
1327
+ lvts_ctrl_set_enable (& lvts_td -> lvts_ctrl [i ], true);
1328
+
1329
+ return 0 ;
1330
+ }
1331
+
1300
1332
static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl [] = {
1301
1333
{
1302
1334
.cal_offset = { 0x04 , 0x07 },
@@ -1405,12 +1437,17 @@ static const struct of_device_id lvts_of_match[] = {
1405
1437
};
1406
1438
MODULE_DEVICE_TABLE (of , lvts_of_match );
1407
1439
1440
+ static const struct dev_pm_ops lvts_pm_ops = {
1441
+ NOIRQ_SYSTEM_SLEEP_PM_OPS (lvts_suspend , lvts_resume )
1442
+ };
1443
+
1408
1444
static struct platform_driver lvts_driver = {
1409
1445
.probe = lvts_probe ,
1410
1446
.remove_new = lvts_remove ,
1411
1447
.driver = {
1412
1448
.name = "mtk-lvts-thermal" ,
1413
1449
.of_match_table = lvts_of_match ,
1450
+ .pm = & lvts_pm_ops ,
1414
1451
},
1415
1452
};
1416
1453
module_platform_driver (lvts_driver );
0 commit comments