1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun #ifndef _BLOCK_BLK_PM_H_ 4*4882a593Smuzhiyun #define _BLOCK_BLK_PM_H_ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #include <linux/pm_runtime.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifdef CONFIG_PM blk_pm_request_resume(struct request_queue * q)9*4882a593Smuzhiyunstatic inline void blk_pm_request_resume(struct request_queue *q) 10*4882a593Smuzhiyun { 11*4882a593Smuzhiyun if (q->dev && (q->rpm_status == RPM_SUSPENDED || 12*4882a593Smuzhiyun q->rpm_status == RPM_SUSPENDING)) 13*4882a593Smuzhiyun pm_request_resume(q->dev); 14*4882a593Smuzhiyun } 15*4882a593Smuzhiyun blk_pm_mark_last_busy(struct request * rq)16*4882a593Smuzhiyunstatic inline void blk_pm_mark_last_busy(struct request *rq) 17*4882a593Smuzhiyun { 18*4882a593Smuzhiyun if (rq->q->dev && !(rq->rq_flags & RQF_PM)) 19*4882a593Smuzhiyun pm_runtime_mark_last_busy(rq->q->dev); 20*4882a593Smuzhiyun } 21*4882a593Smuzhiyun blk_pm_requeue_request(struct request * rq)22*4882a593Smuzhiyunstatic inline void blk_pm_requeue_request(struct request *rq) 23*4882a593Smuzhiyun { 24*4882a593Smuzhiyun lockdep_assert_held(&rq->q->queue_lock); 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun if (rq->q->dev && !(rq->rq_flags & RQF_PM)) 27*4882a593Smuzhiyun rq->q->nr_pending--; 28*4882a593Smuzhiyun } 29*4882a593Smuzhiyun blk_pm_add_request(struct request_queue * q,struct request * rq)30*4882a593Smuzhiyunstatic inline void blk_pm_add_request(struct request_queue *q, 31*4882a593Smuzhiyun struct request *rq) 32*4882a593Smuzhiyun { 33*4882a593Smuzhiyun lockdep_assert_held(&q->queue_lock); 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun if (q->dev && !(rq->rq_flags & RQF_PM)) 36*4882a593Smuzhiyun q->nr_pending++; 37*4882a593Smuzhiyun } 38*4882a593Smuzhiyun blk_pm_put_request(struct request * rq)39*4882a593Smuzhiyunstatic inline void blk_pm_put_request(struct request *rq) 40*4882a593Smuzhiyun { 41*4882a593Smuzhiyun lockdep_assert_held(&rq->q->queue_lock); 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun if (rq->q->dev && !(rq->rq_flags & RQF_PM)) 44*4882a593Smuzhiyun --rq->q->nr_pending; 45*4882a593Smuzhiyun } 46*4882a593Smuzhiyun #else blk_pm_request_resume(struct request_queue * q)47*4882a593Smuzhiyunstatic inline void blk_pm_request_resume(struct request_queue *q) 48*4882a593Smuzhiyun { 49*4882a593Smuzhiyun } 50*4882a593Smuzhiyun blk_pm_mark_last_busy(struct request * rq)51*4882a593Smuzhiyunstatic inline void blk_pm_mark_last_busy(struct request *rq) 52*4882a593Smuzhiyun { 53*4882a593Smuzhiyun } 54*4882a593Smuzhiyun blk_pm_requeue_request(struct request * rq)55*4882a593Smuzhiyunstatic inline void blk_pm_requeue_request(struct request *rq) 56*4882a593Smuzhiyun { 57*4882a593Smuzhiyun } 58*4882a593Smuzhiyun blk_pm_add_request(struct request_queue * q,struct request * rq)59*4882a593Smuzhiyunstatic inline void blk_pm_add_request(struct request_queue *q, 60*4882a593Smuzhiyun struct request *rq) 61*4882a593Smuzhiyun { 62*4882a593Smuzhiyun } 63*4882a593Smuzhiyun blk_pm_put_request(struct request * rq)64*4882a593Smuzhiyunstatic inline void blk_pm_put_request(struct request *rq) 65*4882a593Smuzhiyun { 66*4882a593Smuzhiyun } 67*4882a593Smuzhiyun #endif 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun #endif /* _BLOCK_BLK_PM_H_ */ 70