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()
53 init_domain(fw, XE_FW_DOMAIN_ID_GT, in xe_force_wake_init_gt()
57 init_domain(fw, XE_FW_DOMAIN_ID_GT, in xe_force_wake_init_gt()
63 void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw) in xe_force_wake_init_engines() argument
68 init_domain(fw, XE_FW_DOMAIN_ID_RENDER, in xe_force_wake_init_engines()
76 init_domain(fw, XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j, in xe_force_wake_init_engines()
85 init_domain(fw, XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j, in xe_force_wake_init_engines()
91 init_domain(fw, XE_FW_DOMAIN_ID_GSC, in xe_force_wake_init_engines()
159 * @fw: struct xe_force_wake
172 unsigned int __must_check xe_force_wake_get(struct xe_force_wake *fw, in xe_force_wake_get() argument
175 struct xe_gt *gt = fw->gt; in xe_force_wake_get()
183 xe_gt_assert(gt, domains == XE_FORCEWAKE_ALL || fw->initialized_domains & domains); in xe_force_wake_get()
185 ref_rqst = (domains == XE_FORCEWAKE_ALL) ? fw->initialized_domains : domains; in xe_force_wake_get()
186 spin_lock_irqsave(&fw->lock, flags); in xe_force_wake_get()
187 for_each_fw_domain_masked(domain, ref_rqst, fw, tmp) { in xe_force_wake_get()
194 for_each_fw_domain_masked(domain, awake_rqst, fw, tmp) { in xe_force_wake_get()
196 fw->awake_domains |= BIT(domain->id); in xe_force_wake_get()
203 spin_unlock_irqrestore(&fw->lock, flags); in xe_force_wake_get()
208 if (domains == XE_FORCEWAKE_ALL && ref_incr == fw->initialized_domains) in xe_force_wake_get()
216 * @fw: Pointer to the force wake structure
224 void xe_force_wake_put(struct xe_force_wake *fw, unsigned int fw_ref) in xe_force_wake_put() argument
226 struct xe_gt *gt = fw->gt; in xe_force_wake_put()
240 fw_ref = fw->initialized_domains; in xe_force_wake_put()
242 spin_lock_irqsave(&fw->lock, flags); in xe_force_wake_put()
243 for_each_fw_domain_masked(domain, fw_ref, fw, tmp) { in xe_force_wake_put()
251 for_each_fw_domain_masked(domain, sleep, fw, tmp) { in xe_force_wake_put()
253 fw->awake_domains &= ~BIT(domain->id); in xe_force_wake_put()
257 spin_unlock_irqrestore(&fw->lock, flags); in xe_force_wake_put()