@@ -59,18 +59,19 @@ intel_uncore_forcewake_domain_to_str(const enum forcewake_domain_id id)
59
59
}
60
60
61
61
#define fw_ack (d ) readl((d)->reg_ack)
62
- #define fw_set (d , val ) writel((val), (d)->reg_set)
62
+ #define fw_set (d , val ) writel(_MASKED_BIT_ENABLE((val)), (d)->reg_set)
63
+ #define fw_clear (d , val ) writel(_MASKED_BIT_DISABLE((val)), (d)->reg_set)
63
64
64
65
static inline void
65
- fw_domain_reset (const struct intel_uncore * uncore ,
66
- const struct intel_uncore_forcewake_domain * d )
66
+ fw_domain_reset (const struct intel_uncore_forcewake_domain * d )
67
67
{
68
68
/*
69
69
* We don't really know if the powerwell for the forcewake domain we are
70
70
* trying to reset here does exist at this point (engines could be fused
71
71
* off in ICL+), so no waiting for acks
72
72
*/
73
- fw_set (d , uncore -> fw_reset );
73
+ /* WaRsClearFWBitsAtReset:bdw,skl */
74
+ fw_clear (d , 0xffff );
74
75
}
75
76
76
77
static inline void
@@ -146,14 +147,14 @@ fw_domain_wait_ack_with_fallback(const struct intel_uncore_forcewake_domain *d,
146
147
do {
147
148
wait_ack_clear (d , FORCEWAKE_KERNEL_FALLBACK );
148
149
149
- fw_set (d , _MASKED_BIT_ENABLE ( FORCEWAKE_KERNEL_FALLBACK ) );
150
+ fw_set (d , FORCEWAKE_KERNEL_FALLBACK );
150
151
/* Give gt some time to relax before the polling frenzy */
151
152
udelay (10 * pass );
152
153
wait_ack_set (d , FORCEWAKE_KERNEL_FALLBACK );
153
154
154
155
ack_detected = (fw_ack (d ) & ack_bit ) == value ;
155
156
156
- fw_set (d , _MASKED_BIT_DISABLE ( FORCEWAKE_KERNEL_FALLBACK ) );
157
+ fw_clear (d , FORCEWAKE_KERNEL_FALLBACK );
157
158
} while (!ack_detected && pass ++ < 10 );
158
159
159
160
DRM_DEBUG_DRIVER ("%s had to use fallback to %s ack, 0x%x (passes %u)\n" ,
@@ -176,10 +177,9 @@ fw_domain_wait_ack_clear_fallback(const struct intel_uncore_forcewake_domain *d)
176
177
}
177
178
178
179
static inline void
179
- fw_domain_get (const struct intel_uncore * uncore ,
180
- const struct intel_uncore_forcewake_domain * d )
180
+ fw_domain_get (const struct intel_uncore_forcewake_domain * d )
181
181
{
182
- fw_set (d , uncore -> fw_set );
182
+ fw_set (d , FORCEWAKE_KERNEL );
183
183
}
184
184
185
185
static inline void
@@ -201,10 +201,9 @@ fw_domain_wait_ack_set_fallback(const struct intel_uncore_forcewake_domain *d)
201
201
}
202
202
203
203
static inline void
204
- fw_domain_put (const struct intel_uncore * uncore ,
205
- const struct intel_uncore_forcewake_domain * d )
204
+ fw_domain_put (const struct intel_uncore_forcewake_domain * d )
206
205
{
207
- fw_set (d , uncore -> fw_clear );
206
+ fw_clear (d , FORCEWAKE_KERNEL );
208
207
}
209
208
210
209
static void
@@ -218,7 +217,7 @@ fw_domains_get(struct drm_i915_private *i915, enum forcewake_domains fw_domains)
218
217
219
218
for_each_fw_domain_masked (d , fw_domains , i915 , tmp ) {
220
219
fw_domain_wait_ack_clear (d );
221
- fw_domain_get (uncore , d );
220
+ fw_domain_get (d );
222
221
}
223
222
224
223
for_each_fw_domain_masked (d , fw_domains , i915 , tmp )
@@ -239,7 +238,7 @@ fw_domains_get_with_fallback(struct drm_i915_private *i915,
239
238
240
239
for_each_fw_domain_masked (d , fw_domains , i915 , tmp ) {
241
240
fw_domain_wait_ack_clear_fallback (d );
242
- fw_domain_get (uncore , d );
241
+ fw_domain_get (d );
243
242
}
244
243
245
244
for_each_fw_domain_masked (d , fw_domains , i915 , tmp )
@@ -258,7 +257,7 @@ fw_domains_put(struct drm_i915_private *i915, enum forcewake_domains fw_domains)
258
257
GEM_BUG_ON (fw_domains & ~uncore -> fw_domains );
259
258
260
259
for_each_fw_domain_masked (d , fw_domains , i915 , tmp )
261
- fw_domain_put (uncore , d );
260
+ fw_domain_put (d );
262
261
263
262
uncore -> fw_domains_active &= ~fw_domains ;
264
263
}
@@ -277,7 +276,7 @@ fw_domains_reset(struct drm_i915_private *i915,
277
276
GEM_BUG_ON (fw_domains & ~uncore -> fw_domains );
278
277
279
278
for_each_fw_domain_masked (d , fw_domains , i915 , tmp )
280
- fw_domain_reset (uncore , d );
279
+ fw_domain_reset (d );
281
280
}
282
281
283
282
static inline u32 gt_thread_status (struct drm_i915_private * dev_priv )
@@ -1371,7 +1370,7 @@ static void fw_domain_init(struct drm_i915_private *dev_priv,
1371
1370
1372
1371
uncore -> fw_domains |= BIT (domain_id );
1373
1372
1374
- fw_domain_reset (uncore , d );
1373
+ fw_domain_reset (d );
1375
1374
}
1376
1375
1377
1376
static void fw_domain_fini (struct drm_i915_private * dev_priv ,
@@ -1396,17 +1395,6 @@ static void intel_uncore_fw_domains_init(struct drm_i915_private *dev_priv)
1396
1395
if (INTEL_GEN (dev_priv ) <= 5 || intel_vgpu_active (dev_priv ))
1397
1396
return ;
1398
1397
1399
- if (IS_GEN (dev_priv , 6 )) {
1400
- dev_priv -> uncore .fw_reset = 0 ;
1401
- dev_priv -> uncore .fw_set = FORCEWAKE_KERNEL ;
1402
- dev_priv -> uncore .fw_clear = 0 ;
1403
- } else {
1404
- /* WaRsClearFWBitsAtReset:bdw,skl */
1405
- dev_priv -> uncore .fw_reset = _MASKED_BIT_DISABLE (0xffff );
1406
- dev_priv -> uncore .fw_set = _MASKED_BIT_ENABLE (FORCEWAKE_KERNEL );
1407
- dev_priv -> uncore .fw_clear = _MASKED_BIT_DISABLE (FORCEWAKE_KERNEL );
1408
- }
1409
-
1410
1398
if (INTEL_GEN (dev_priv ) >= 11 ) {
1411
1399
int i ;
1412
1400
0 commit comments