1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2022 Intel Corporation 4 */ 5 6 #ifndef _XE_FORCE_WAKE_H_ 7 #define _XE_FORCE_WAKE_H_ 8 9 #include "xe_force_wake_types.h" 10 #include "xe_macros.h" 11 12 struct xe_gt; 13 14 void xe_force_wake_init_gt(struct xe_gt *gt, 15 struct xe_force_wake *fw); 16 void xe_force_wake_init_engines(struct xe_gt *gt, 17 struct xe_force_wake *fw); 18 void xe_force_wake_prune(struct xe_gt *gt, 19 struct xe_force_wake *fw); 20 int xe_force_wake_get(struct xe_force_wake *fw, 21 enum xe_force_wake_domains domains); 22 int xe_force_wake_put(struct xe_force_wake *fw, 23 enum xe_force_wake_domains domains); 24 25 static inline int 26 xe_force_wake_ref(struct xe_force_wake *fw, 27 enum xe_force_wake_domains domain) 28 { 29 XE_BUG_ON(!domain); 30 return fw->domains[ffs(domain) - 1].ref; 31 } 32 33 static inline void 34 xe_force_wake_assert_held(struct xe_force_wake *fw, 35 enum xe_force_wake_domains domain) 36 { 37 XE_BUG_ON(!(fw->awake_domains & domain)); 38 } 39 40 #endif 41