diff options
Diffstat (limited to 'drivers/base/power/runtime.c')
| -rw-r--r-- | drivers/base/power/runtime.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 70624695b6d5..457be03b744d 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -121,7 +121,7 @@ static void pm_runtime_cancel_pending(struct device *dev)   * Compute the autosuspend-delay expiration time based on the device's   * power.last_busy time.  If the delay has already expired or is disabled   * (negative) or the power.use_autosuspend flag isn't set, return 0. - * Otherwise return the expiration time in jiffies (adjusted to be nonzero). + * Otherwise return the expiration time in nanoseconds (adjusted to be nonzero).   *   * This function may be called either with or without dev->power.lock held.   * Either way it can be racy, since power.last_busy may be updated at any time. @@ -141,7 +141,7 @@ u64 pm_runtime_autosuspend_expiration(struct device *dev)  	last_busy = READ_ONCE(dev->power.last_busy); -	expires = last_busy + autosuspend_delay * NSEC_PER_MSEC; +	expires = last_busy + (u64)autosuspend_delay * NSEC_PER_MSEC;  	if (expires <= now)  		expires = 0;	/* Already expired. */ @@ -525,7 +525,7 @@ static int rpm_suspend(struct device *dev, int rpmflags)  				 * We add a slack of 25% to gather wakeups  				 * without sacrificing the granularity.  				 */ -				u64 slack = READ_ONCE(dev->power.autosuspend_delay) * +				u64 slack = (u64)READ_ONCE(dev->power.autosuspend_delay) *  						    (NSEC_PER_MSEC >> 2);  				dev->power.timer_expires = expires; @@ -905,7 +905,10 @@ static enum hrtimer_restart  pm_suspend_timer_fn(struct hrtimer *timer)  	spin_lock_irqsave(&dev->power.lock, flags);  	expires = dev->power.timer_expires; -	/* If 'expire' is after 'jiffies' we've been called too early. */ +	/* +	 * If 'expires' is after the current time, we've been called +	 * too early. +	 */  	if (expires > 0 && expires < ktime_to_ns(ktime_get())) {  		dev->power.timer_expires = 0;  		rpm_suspend(dev, dev->power.timer_autosuspends ?  | 
