Skip to content

Commit d9cc34f

Browse files
Shawn Guorafaeljw
authored andcommitted
PM: domains: Consolidate genpd_restore_noirq() and genpd_resume_noirq()
Most of the logic between genpd_restore_noirq() and genpd_resume_noirq() are identical. The suspended_count decrement for restore should be the right thing to do anyway, considering there is an increment in genpd_finish_suspend() for hibernation. So consolidate these two functions into genpd_finish_resume(). Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent 615db6d commit d9cc34f

1 file changed

Lines changed: 19 additions & 22 deletions

File tree

drivers/base/power/domain.c

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,12 +1247,14 @@ static int genpd_suspend_noirq(struct device *dev)
12471247
}
12481248

12491249
/**
1250-
* genpd_resume_noirq - Start of resume of device in an I/O PM domain.
1250+
* genpd_finish_resume - Completion of resume of device in an I/O PM domain.
12511251
* @dev: Device to resume.
1252+
* @resume_noirq: Generic resume_noirq callback.
12521253
*
12531254
* Restore power to the device's PM domain, if necessary, and start the device.
12541255
*/
1255-
static int genpd_resume_noirq(struct device *dev)
1256+
static int genpd_finish_resume(struct device *dev,
1257+
int (*resume_noirq)(struct device *dev))
12561258
{
12571259
struct generic_pm_domain *genpd;
12581260
int ret;
@@ -1264,7 +1266,7 @@ static int genpd_resume_noirq(struct device *dev)
12641266
return -EINVAL;
12651267

12661268
if (device_wakeup_path(dev) && genpd_is_active_wakeup(genpd))
1267-
return pm_generic_resume_noirq(dev);
1269+
return resume_noirq(dev);
12681270

12691271
genpd_lock(genpd);
12701272
genpd_sync_power_on(genpd, true, 0);
@@ -1281,6 +1283,19 @@ static int genpd_resume_noirq(struct device *dev)
12811283
return pm_generic_resume_noirq(dev);
12821284
}
12831285

1286+
/**
1287+
* genpd_resume_noirq - Start of resume of device in an I/O PM domain.
1288+
* @dev: Device to resume.
1289+
*
1290+
* Restore power to the device's PM domain, if necessary, and start the device.
1291+
*/
1292+
static int genpd_resume_noirq(struct device *dev)
1293+
{
1294+
dev_dbg(dev, "%s()\n", __func__);
1295+
1296+
return genpd_finish_resume(dev, pm_generic_resume_noirq);
1297+
}
1298+
12841299
/**
12851300
* genpd_freeze_noirq - Completion of freezing a device in an I/O PM domain.
12861301
* @dev: Device to freeze.
@@ -1366,27 +1381,9 @@ static int genpd_poweroff_noirq(struct device *dev)
13661381
*/
13671382
static int genpd_restore_noirq(struct device *dev)
13681383
{
1369-
struct generic_pm_domain *genpd;
1370-
int ret = 0;
1371-
13721384
dev_dbg(dev, "%s()\n", __func__);
13731385

1374-
genpd = dev_to_genpd(dev);
1375-
if (IS_ERR(genpd))
1376-
return -EINVAL;
1377-
1378-
genpd_lock(genpd);
1379-
genpd_sync_power_on(genpd, true, 0);
1380-
genpd_unlock(genpd);
1381-
1382-
if (genpd->dev_ops.stop && genpd->dev_ops.start &&
1383-
!pm_runtime_status_suspended(dev)) {
1384-
ret = genpd_start_dev(genpd, dev);
1385-
if (ret)
1386-
return ret;
1387-
}
1388-
1389-
return pm_generic_restore_noirq(dev);
1386+
return genpd_finish_resume(dev, pm_generic_restore_noirq);
13901387
}
13911388

13921389
/**

0 commit comments

Comments
 (0)