xref: /OK3568_Linux_fs/kernel/block/blk-pm.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static inline void blk_pm_mark_last_busy(struct request *rq)
52*4882a593Smuzhiyun {
53*4882a593Smuzhiyun }
54*4882a593Smuzhiyun 
blk_pm_requeue_request(struct request * rq)55*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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