xref: /linux/block/blk-pm.h (revision 9fb40717)
1bca6b067SBart Van Assche /* SPDX-License-Identifier: GPL-2.0 */
2bca6b067SBart Van Assche 
3bca6b067SBart Van Assche #ifndef _BLOCK_BLK_PM_H_
4bca6b067SBart Van Assche #define _BLOCK_BLK_PM_H_
5bca6b067SBart Van Assche 
6bca6b067SBart Van Assche #include <linux/pm_runtime.h>
7bca6b067SBart Van Assche 
8bca6b067SBart Van Assche #ifdef CONFIG_PM
blk_pm_resume_queue(const bool pm,struct request_queue * q)9*52abca64SAlan Stern static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q)
10154b00d5SBart Van Assche {
11*52abca64SAlan Stern 	if (!q->dev || !blk_queue_pm_only(q))
12*52abca64SAlan Stern 		return 1;	/* Nothing to do */
13*52abca64SAlan Stern 	if (pm && q->rpm_status != RPM_SUSPENDED)
14*52abca64SAlan Stern 		return 1;	/* Request allowed */
15154b00d5SBart Van Assche 	pm_request_resume(q->dev);
16*52abca64SAlan Stern 	return 0;
17154b00d5SBart Van Assche }
18154b00d5SBart Van Assche 
blk_pm_mark_last_busy(struct request * rq)19154b00d5SBart Van Assche static inline void blk_pm_mark_last_busy(struct request *rq)
20154b00d5SBart Van Assche {
21154b00d5SBart Van Assche 	if (rq->q->dev && !(rq->rq_flags & RQF_PM))
22154b00d5SBart Van Assche 		pm_runtime_mark_last_busy(rq->q->dev);
23154b00d5SBart Van Assche }
24bca6b067SBart Van Assche #else
blk_pm_resume_queue(const bool pm,struct request_queue * q)25*52abca64SAlan Stern static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q)
26154b00d5SBart Van Assche {
27*52abca64SAlan Stern 	return 1;
28154b00d5SBart Van Assche }
29154b00d5SBart Van Assche 
blk_pm_mark_last_busy(struct request * rq)30154b00d5SBart Van Assche static inline void blk_pm_mark_last_busy(struct request *rq)
31154b00d5SBart Van Assche {
32154b00d5SBart Van Assche }
33bca6b067SBart Van Assche #endif
34bca6b067SBart Van Assche 
35bca6b067SBart Van Assche #endif /* _BLOCK_BLK_PM_H_ */
36