pc_init_fused_rp_values(pc);
}
+static bool pc_needs_min_freq_change(struct xe_guc_pc *pc)
+{
+ struct xe_device *xe = pc_to_xe(pc);
+ struct xe_gt *gt = pc_to_gt(pc);
+
+ if (XE_DEVICE_WA(xe, 14022085890))
+ return true;
+
+ if (xe_gt_is_media_type(gt))
+ return false;
+
+ if (xe->info.platform == XE_BATTLEMAGE ||
+ xe->info.platform == XE_CRESCENTISLAND)
+ return true;
+
+ return false;
+}
+
static int pc_adjust_freq_bounds(struct xe_guc_pc *pc)
{
- struct xe_tile *tile = gt_to_tile(pc_to_gt(pc));
int ret;
lockdep_assert_held(&pc->freq_lock);
if (pc_get_min_freq(pc) > pc->rp0_freq)
ret = pc_set_min_freq(pc, pc->rp0_freq);
- if (XE_DEVICE_WA(tile_to_xe(tile), 14022085890))
+ /*
+ * Setting GT RP min frequency to 1.2GHz by default for
+ * GT0(Graphics) Tile of BMG and CRI.
+ *
+ * While BMG G21 WA will apply min frequency for
+ * both GT0(Graphics) and GT1(Media) Tile.
+ *
+ * This is an active frequency, so if the device is idle
+ * we aren't expecting high power output across board
+ *
+ */
+ if (pc_needs_min_freq_change(pc))
ret = pc_set_min_freq(pc, max(BMG_MIN_FREQ, pc_get_min_freq(pc)));
out: