Lines Matching full:fw

24 static void mark_domain_initialized(struct xe_force_wake *fw,  in mark_domain_initialized()  argument
27 fw->initialized_domains |= BIT(id); in mark_domain_initialized()
30 static void init_domain(struct xe_force_wake *fw, in init_domain() argument
34 struct xe_force_wake_domain *domain = &fw->domains[id]; in init_domain()
42 mark_domain_initialized(fw, id); in init_domain()
45 void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw) in xe_force_wake_init_gt() argument
49 fw->gt = gt; in xe_force_wake_init_gt()
50 spin_lock_init(&fw->lock); in xe_force_wake_init_gt()
56 init_domain(fw, XE_FW_DOMAIN_ID_GT, in xe_force_wake_init_gt()
60 init_domain(fw, XE_FW_DOMAIN_ID_GT, in xe_force_wake_init_gt()
66 void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw) in xe_force_wake_init_engines() argument
74 init_domain(fw, XE_FW_DOMAIN_ID_RENDER, in xe_force_wake_init_engines()
82 init_domain(fw, XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j, in xe_force_wake_init_engines()
91 init_domain(fw, XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j, in xe_force_wake_init_engines()
97 init_domain(fw, XE_FW_DOMAIN_ID_GSC, in xe_force_wake_init_engines()
165 * @fw: struct xe_force_wake
178 unsigned int __must_check xe_force_wake_get(struct xe_force_wake *fw, in xe_force_wake_get() argument
181 struct xe_gt *gt = fw->gt; in xe_force_wake_get()
189 xe_gt_assert(gt, domains == XE_FORCEWAKE_ALL || fw->initialized_domains & domains); in xe_force_wake_get()
191 ref_rqst = (domains == XE_FORCEWAKE_ALL) ? fw->initialized_domains : domains; in xe_force_wake_get()
192 spin_lock_irqsave(&fw->lock, flags); in xe_force_wake_get()
193 for_each_fw_domain_masked(domain, ref_rqst, fw, tmp) { in xe_force_wake_get()
200 for_each_fw_domain_masked(domain, awake_rqst, fw, tmp) { in xe_force_wake_get()
202 fw->awake_domains |= BIT(domain->id); in xe_force_wake_get()
209 spin_unlock_irqrestore(&fw->lock, flags); in xe_force_wake_get()
214 if (domains == XE_FORCEWAKE_ALL && ref_incr == fw->initialized_domains) in xe_force_wake_get()
222 * @fw: Pointer to the force wake structure
230 void xe_force_wake_put(struct xe_force_wake *fw, unsigned int fw_ref) in xe_force_wake_put() argument
232 struct xe_gt *gt = fw->gt; in xe_force_wake_put()
246 fw_ref = fw->initialized_domains; in xe_force_wake_put()
248 spin_lock_irqsave(&fw->lock, flags); in xe_force_wake_put()
249 for_each_fw_domain_masked(domain, fw_ref, fw, tmp) { in xe_force_wake_put()
257 for_each_fw_domain_masked(domain, sleep, fw, tmp) { in xe_force_wake_put()
259 fw->awake_domains &= ~BIT(domain->id); in xe_force_wake_put()
263 spin_unlock_irqrestore(&fw->lock, flags); in xe_force_wake_put()