|
@@ -148,10 +148,22 @@ static int _omap_device_activate(struct omap_device *od, u8 ignore_lat)
|
|
|
"%llu nsec\n", od->pdev.name, od->pm_lat_level,
|
|
|
act_lat);
|
|
|
|
|
|
- WARN(act_lat > odpl->activate_lat, "omap_device: %s.%d: "
|
|
|
- "activate step %d took longer than expected (%llu > %d)\n",
|
|
|
- od->pdev.name, od->pdev.id, od->pm_lat_level,
|
|
|
- act_lat, odpl->activate_lat);
|
|
|
+ if (act_lat > odpl->activate_lat) {
|
|
|
+ odpl->activate_lat_worst = act_lat;
|
|
|
+ if (odpl->flags & OMAP_DEVICE_LATENCY_AUTO_ADJUST) {
|
|
|
+ odpl->activate_lat = act_lat;
|
|
|
+ pr_warning("omap_device: %s.%d: new worst case "
|
|
|
+ "activate latency %d: %llu\n",
|
|
|
+ od->pdev.name, od->pdev.id,
|
|
|
+ od->pm_lat_level, act_lat);
|
|
|
+ } else
|
|
|
+ pr_warning("omap_device: %s.%d: activate "
|
|
|
+ "latency %d higher than exptected. "
|
|
|
+ "(%llu > %d)\n",
|
|
|
+ od->pdev.name, od->pdev.id,
|
|
|
+ od->pm_lat_level, act_lat,
|
|
|
+ odpl->activate_lat);
|
|
|
+ }
|
|
|
|
|
|
od->dev_wakeup_lat -= odpl->activate_lat;
|
|
|
}
|
|
@@ -204,10 +216,23 @@ static int _omap_device_deactivate(struct omap_device *od, u8 ignore_lat)
|
|
|
"%llu nsec\n", od->pdev.name, od->pm_lat_level,
|
|
|
deact_lat);
|
|
|
|
|
|
- WARN(deact_lat > odpl->deactivate_lat, "omap_device: %s.%d: "
|
|
|
- "deactivate step %d took longer than expected "
|
|
|
- "(%llu > %d)\n", od->pdev.name, od->pdev.id,
|
|
|
- od->pm_lat_level, deact_lat, odpl->deactivate_lat);
|
|
|
+ if (deact_lat > odpl->deactivate_lat) {
|
|
|
+ odpl->deactivate_lat_worst = deact_lat;
|
|
|
+ if (odpl->flags & OMAP_DEVICE_LATENCY_AUTO_ADJUST) {
|
|
|
+ odpl->deactivate_lat = deact_lat;
|
|
|
+ pr_warning("omap_device: %s.%d: new worst case "
|
|
|
+ "deactivate latency %d: %llu\n",
|
|
|
+ od->pdev.name, od->pdev.id,
|
|
|
+ od->pm_lat_level, deact_lat);
|
|
|
+ } else
|
|
|
+ pr_warning("omap_device: %s.%d: deactivate "
|
|
|
+ "latency %d higher than exptected. "
|
|
|
+ "(%llu > %d)\n",
|
|
|
+ od->pdev.name, od->pdev.id,
|
|
|
+ od->pm_lat_level, deact_lat,
|
|
|
+ odpl->deactivate_lat);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
od->dev_wakeup_lat += odpl->activate_lat;
|
|
|
|