/* Wa_1604370585:icl (pre-prod)
         * Formerly known as WaPushConstantDereferenceHoldDisable
         */
-       if (IS_ICL_REVID(i915, ICL_REVID_A0, ICL_REVID_B0))
+       if (IS_ICL_GT_STEP(i915, STEP_A0, STEP_B0))
                wa_masked_en(wal, GEN7_ROW_CHICKEN2,
                             PUSH_CONSTANT_DEREF_DISABLE);
 
        /* Wa_2006611047:icl (pre-prod)
         * Formerly known as WaDisableImprovedTdlClkGating
         */
-       if (IS_ICL_REVID(i915, ICL_REVID_A0, ICL_REVID_A0))
+       if (IS_ICL_GT_STEP(i915, STEP_A0, STEP_A0))
                wa_masked_en(wal, GEN7_ROW_CHICKEN2,
                             GEN11_TDL_CLOCK_GATING_FIX_DISABLE);
 
        /* Wa_2006665173:icl (pre-prod) */
-       if (IS_ICL_REVID(i915, ICL_REVID_A0, ICL_REVID_A0))
+       if (IS_ICL_GT_STEP(i915, STEP_A0, STEP_A0))
                wa_masked_en(wal, GEN11_COMMON_SLICE_CHICKEN3,
                             GEN11_BLEND_EMB_FIX_DISABLE_IN_RCC);
 
                    GAMW_ECO_DEV_CTX_RELOAD_DISABLE);
 
        /* Wa_1405779004:icl (pre-prod) */
-       if (IS_ICL_REVID(i915, ICL_REVID_A0, ICL_REVID_A0))
+       if (IS_ICL_GT_STEP(i915, STEP_A0, STEP_A0))
                wa_write_or(wal,
                            SLICE_UNIT_LEVEL_CLKGATE,
                            MSCUNIT_CLKGATE_DIS);
 
        /* Wa_1406838659:icl (pre-prod) */
-       if (IS_ICL_REVID(i915, ICL_REVID_A0, ICL_REVID_B0))
+       if (IS_ICL_GT_STEP(i915, STEP_A0, STEP_B0))
                wa_write_or(wal,
                            INF_UNIT_LEVEL_CLKGATE,
                            CGPSF_CLKGATE_DIS);
                            PMFLUSHDONE_LNEBLK);
 
                /* Wa_1406609255:icl (pre-prod) */
-               if (IS_ICL_REVID(i915, ICL_REVID_A0, ICL_REVID_B0))
+               if (IS_ICL_GT_STEP(i915, STEP_A0, STEP_B0))
                        wa_write_or(wal,
                                    GEN7_SARCHKMD,
                                    GEN7_DISABLE_DEMAND_PREFETCH);
 
 #define IS_CNL_REVID(p, since, until) \
        (IS_CANNONLAKE(p) && IS_REVID(p, since, until))
 
-#define ICL_REVID_A0           0x0
-#define ICL_REVID_A2           0x1
-#define ICL_REVID_B0           0x3
-#define ICL_REVID_B2           0x4
-#define ICL_REVID_C0           0x5
-
-#define IS_ICL_REVID(p, since, until) \
-       (IS_ICELAKE(p) && IS_REVID(p, since, until))
+#define IS_ICL_GT_STEP(p, since, until) \
+       (IS_ICELAKE(p) && IS_GT_STEP(p, since, until))
 
 #define EHL_REVID_A0            0x0
 #define EHL_REVID_B0            0x1
 
        [3] = { COMMON_STEP(B0) },
 };
 
+static const struct intel_step_info icl_revids[] = {
+       [7] = { COMMON_STEP(D0) },
+};
+
 static const struct intel_step_info tgl_uy_revids[] = {
        [0] = { .gt_step = STEP_A0, .display_step = STEP_A0 },
        [1] = { .gt_step = STEP_B0, .display_step = STEP_C0 },
        } else if (IS_TIGERLAKE(i915)) {
                revids = tgl_revids;
                size = ARRAY_SIZE(tgl_revids);
+       } else if (IS_ICELAKE(i915)) {
+               revids = icl_revids;
+               size = ARRAY_SIZE(icl_revids);
        } else if (IS_GEMINILAKE(i915)) {
                revids = glk_revids;
                size = ARRAY_SIZE(glk_revids);