vsub = 1;
 
                /* Wa_16023981245 */
-               if ((DISPLAY_VER_FULL(i915) == IP_VER(20, 0) ||
-                    DISPLAY_VER_FULL(i915) == IP_VER(30, 0)) &&
+               if ((DISPLAY_VERx100(i915) == 2000 ||
+                    DISPLAY_VERx100(i915) == 3000) &&
                     src_x % 2 != 0)
                        hsub = 2;
        } else {
 
        if (!HAS_DISPLAY(dev_priv))
                return;
 
-       if (DISPLAY_VER_FULL(dev_priv) >= IP_VER(14, 1) && IS_DGFX(dev_priv))
+       if (DISPLAY_VERx100(dev_priv) >= 1401 && IS_DGFX(dev_priv))
                xe2_hpd_get_bw_info(dev_priv, &xe2_hpd_sa_info);
        else if (DISPLAY_VER(dev_priv) >= 14)
                tgl_get_bw_info(dev_priv, &mtl_sa_info);
 
 {
        struct drm_i915_private *dev_priv = to_i915(display->drm);
 
-       return (DISPLAY_VER_FULL(display) == IP_VER(20, 0) ||
-               DISPLAY_VER_FULL(display) == IP_VER(14, 0) ||
+       return (DISPLAY_VERx100(display) == 2000 ||
+               DISPLAY_VERx100(display) == 1400 ||
                IS_DG2(dev_priv)) &&
                display->cdclk.hw.vco > 0;
 }
        } else if (DISPLAY_VER(display) >= 20) {
                display->funcs.cdclk = &rplu_cdclk_funcs;
                display->cdclk.table = xe2lpd_cdclk_table;
-       } else if (DISPLAY_VER_FULL(display) >= IP_VER(14, 1)) {
+       } else if (DISPLAY_VERx100(display) >= 1401) {
                display->funcs.cdclk = &rplu_cdclk_funcs;
                display->cdclk.table = xe2hpd_cdclk_table;
        } else if (DISPLAY_VER(display) >= 14) {
 
                if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) {
                        if (DISPLAY_RUNTIME_INFO(display)->edp_typec_support)
                                return xe3lpd_c20_dp_edp_tables;
-                       if (DISPLAY_VER_FULL(display) == IP_VER(14, 1))
+                       if (DISPLAY_VERx100(display) == 1401)
                                return xe2hpd_c20_edp_tables;
                }
 
                if (DISPLAY_VER(display) >= 30)
                        return xe3lpd_c20_dp_edp_tables;
-               else if (DISPLAY_VER_FULL(display) == IP_VER(14, 1))
+               else if (DISPLAY_VERx100(display) == 1401)
                        return xe2hpd_c20_dp_tables;
                else
                        return mtl_c20_dp_tables;
 
 #define _XE2HPD_C20_A_MPLLB_CFG                0xCCC2
 #define _XE2HPD_C20_B_MPLLB_CFG                0xCCB6
 
-#define _IS_XE2HPD_C20(i915)   (DISPLAY_VER_FULL(i915) == IP_VER(14, 1))
+#define _IS_XE2HPD_C20(i915)   (DISPLAY_VERx100(i915) == 1401)
 
 #define PHY_C20_A_TX_CNTX_CFG(i915, idx) \
                ((_IS_XE2HPD_C20(i915) ? _XE2HPD_C20_A_TX_CNTX_CFG : _MTL_C20_A_TX_CNTX_CFG) - (idx))
 
 #define SUPPORTS_TV(i915)              (DISPLAY_INFO(i915)->supports_tv)
 
 /* Check that device has a display IP version within the specific range. */
-#define IS_DISPLAY_VER_FULL(__i915, from, until) ( \
-       BUILD_BUG_ON_ZERO((from) < IP_VER(2, 0)) + \
-       (DISPLAY_VER_FULL(__i915) >= (from) && \
-        DISPLAY_VER_FULL(__i915) <= (until)))
+#define IS_DISPLAY_VERx100(__i915, from, until) ( \
+       BUILD_BUG_ON_ZERO((from) < 200) + \
+       (DISPLAY_VERx100(__i915) >= (from) && \
+        DISPLAY_VERx100(__i915) <= (until)))
 
 /*
  * Check if a device has a specific IP version as well as a stepping within the
  * hardware fix is present and the software workaround is no longer necessary.
  * E.g.,
  *
- *    IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_B2)
- *    IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_C0, STEP_FOREVER)
+ *    IS_DISPLAY_VERx100_STEP(i915, 1400, STEP_A0, STEP_B2)
+ *    IS_DISPLAY_VERx100_STEP(i915, 1400, STEP_C0, STEP_FOREVER)
  *
  * "STEP_FOREVER" can be passed as "until" for workarounds that have no upper
  * stepping bound for the specified IP version.
  */
-#define IS_DISPLAY_VER_STEP(__i915, ipver, from, until) \
-       (IS_DISPLAY_VER_FULL((__i915), (ipver), (ipver)) && \
+#define IS_DISPLAY_VERx100_STEP(__i915, ipver, from, until) \
+       (IS_DISPLAY_VERx100((__i915), (ipver), (ipver)) && \
         IS_DISPLAY_STEP((__i915), (from), (until)))
 
 #define DISPLAY_INFO(i915)             (__to_intel_display(i915)->info.__device_info)
 #define DISPLAY_RUNTIME_INFO(i915)     (&__to_intel_display(i915)->info.__runtime_info)
 
 #define DISPLAY_VER(i915)      (DISPLAY_RUNTIME_INFO(i915)->ip.ver)
-#define DISPLAY_VER_FULL(i915) IP_VER(DISPLAY_RUNTIME_INFO(i915)->ip.ver, \
-                                      DISPLAY_RUNTIME_INFO(i915)->ip.rel)
+#define DISPLAY_VERx100(i915)  (DISPLAY_RUNTIME_INFO(i915)->ip.ver * 100 + \
+                                DISPLAY_RUNTIME_INFO(i915)->ip.rel)
 #define IS_DISPLAY_VER(i915, from, until) \
        (DISPLAY_VER(i915) >= (from) && DISPLAY_VER(i915) <= (until))
 
 
                intel_snps_phy_wait_for_calibration(dev_priv);
 
        /* 9. XE2_HPD: Program CHICKEN_MISC_2 before any cursor or planes are enabled */
-       if (DISPLAY_VER_FULL(dev_priv) == IP_VER(14, 1))
+       if (DISPLAY_VERx100(dev_priv) == 1401)
                intel_de_rmw(dev_priv, CHICKEN_MISC_2, BMG_DARB_HALF_BLK_END_BURST, 1);
 
        if (resume)
                intel_dmc_load_program(display);
 
        /* Wa_14011508470:tgl,dg1,rkl,adl-s,adl-p,dg2 */
-       if (IS_DISPLAY_VER_FULL(dev_priv, IP_VER(12, 0), IP_VER(13, 0)))
+       if (IS_DISPLAY_VERx100(dev_priv, 1200, 1300))
                intel_de_rmw(dev_priv, GEN11_CHICKEN_DCPR_2, 0,
                             DCPR_CLEAR_MEMSTAT_DIS | DCPR_SEND_RESP_IMM |
                             DCPR_MASK_LPMODE | DCPR_MASK_MAXLATENCY_MEMUP_CLR);
 
        const char *fw_path = NULL;
        u32 max_fw_size = 0;
 
-       if (DISPLAY_VER_FULL(display) == IP_VER(30, 0)) {
+       if (DISPLAY_VERx100(display) == 3000) {
                fw_path = XE3LPD_DMC_PATH;
                max_fw_size = XE2LPD_DMC_MAX_FW_SIZE;
-       } else if (DISPLAY_VER_FULL(display) == IP_VER(20, 0)) {
+       } else if (DISPLAY_VERx100(display) == 2000) {
                fw_path = XE2LPD_DMC_PATH;
                max_fw_size = XE2LPD_DMC_MAX_FW_SIZE;
-       } else if (DISPLAY_VER_FULL(display) == IP_VER(14, 1)) {
+       } else if (DISPLAY_VERx100(display) == 1401) {
                fw_path = BMG_DMC_PATH;
                max_fw_size = XELPDP_DMC_MAX_FW_SIZE;
-       } else if (DISPLAY_VER_FULL(display) == IP_VER(14, 0)) {
+       } else if (DISPLAY_VERx100(display) == 1400) {
                fw_path = MTL_DMC_PATH;
                max_fw_size = XELPDP_DMC_MAX_FW_SIZE;
        } else if (IS_DG2(i915)) {
 
        if (intel_encoder_is_c10phy(encoder))
                return 810000;
 
-       if (DISPLAY_VER_FULL(to_i915(encoder->base.dev)) == IP_VER(14, 1))
+       if (DISPLAY_VERx100(to_i915(encoder->base.dev)) == 1401)
                return 1350000;
 
        return 2000000;
 
 
        /* Wa_14016291713 */
        if ((IS_DISPLAY_VER(display, 12, 13) ||
-            IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0)) &&
+            IS_DISPLAY_VERx100_STEP(i915, 1400, STEP_A0, STEP_C0)) &&
            crtc_state->has_psr && !crtc_state->has_panel_replay) {
                plane_state->no_fbc_reason = "PSR1 enabled (Wa_14016291713)";
                return 0;
 
                return;
 
        if (DISPLAY_VER(display) >= 14) {
-               if (IS_DISPLAY_VER_STEP(display, IP_VER(14, 0), STEP_D0, STEP_FOREVER))
+               if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER))
                        intel_de_rmw(display, MTL_CHICKEN_TRANS(hdcp->cpu_transcoder),
                                     0, HDCP_LINE_REKEY_DISABLE);
-               else if (IS_DISPLAY_VER_STEP(display, IP_VER(14, 1), STEP_B0, STEP_FOREVER) ||
-                        IS_DISPLAY_VER_STEP(display, IP_VER(20, 0), STEP_B0, STEP_FOREVER))
+               else if (IS_DISPLAY_VERx100_STEP(display, 1401, STEP_B0, STEP_FOREVER) ||
+                        IS_DISPLAY_VERx100_STEP(display, 2000, STEP_B0, STEP_FOREVER))
                        intel_de_rmw(display,
                                     TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder),
                                     0, TRANS_DDI_HDCP_LINE_REKEY_DISABLE);
 
                                     &pmdemand_state->base,
                                     &intel_pmdemand_funcs);
 
-       if (IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0))
+       if (IS_DISPLAY_VERx100_STEP(i915, 1400, STEP_A0, STEP_C0))
                /* Wa_14016740474 */
                intel_de_rmw(i915, XELPD_CHICKEN_DCPR_3, 0, DMD_RSP_TIMEOUT_DISABLE);
 
 
                 * cause issues if non-supported panels are used.
                 */
                if (!intel_dp->psr.panel_replay_enabled &&
-                   (IS_DISPLAY_VER_STEP(display, IP_VER(14, 0), STEP_A0, STEP_B0) ||
+                   (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_A0, STEP_B0) ||
                     IS_ALDERLAKE_P(dev_priv)))
                        intel_de_rmw(display, hsw_chicken_trans_reg(dev_priv, cpu_transcoder),
                                     0, ADLP_1_BASED_X_GRANULARITY);
 
                /* Wa_16012604467:adlp,mtl[a0,b0] */
                if (!intel_dp->psr.panel_replay_enabled &&
-                   IS_DISPLAY_VER_STEP(display, IP_VER(14, 0), STEP_A0, STEP_B0))
+                   IS_DISPLAY_VERx100_STEP(display, 1400, STEP_A0, STEP_B0))
                        intel_de_rmw(display,
                                     MTL_CLKGATE_DIS_TRANS(display, cpu_transcoder),
                                     0,
        if (intel_dp->psr.sel_update_enabled) {
                /* Wa_16012604467:adlp,mtl[a0,b0] */
                if (!intel_dp->psr.panel_replay_enabled &&
-                   IS_DISPLAY_VER_STEP(display, IP_VER(14, 0), STEP_A0, STEP_B0))
+                   IS_DISPLAY_VERx100_STEP(display, 1400, STEP_A0, STEP_B0))
                        intel_de_rmw(display,
                                     MTL_CLKGATE_DIS_TRANS(display, cpu_transcoder),
                                     MTL_CLKGATE_DIS_TRANS_DMASC_GATING_DIS, 0);
 
        /* Wa_14014971492 */
        if (!crtc_state->has_panel_replay &&
-           ((IS_DISPLAY_VER_STEP(display, IP_VER(14, 0), STEP_A0, STEP_B0) ||
+           ((IS_DISPLAY_VERx100_STEP(display, 1400, STEP_A0, STEP_B0) ||
              IS_ALDERLAKE_P(i915) || IS_TIGERLAKE(i915))) &&
            crtc_state->splitter.enable)
                crtc_state->psr2_su_area.y1 = 0;
 
        for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc, new_dbuf_state->active_pipes) {
                u32 pipe_val = val;
 
-               if (DISPLAY_VER_FULL(i915) == IP_VER(14, 0)) {
+               if (DISPLAY_VERx100(i915) == 1400) {
                        if (xelpdp_is_only_pipe_per_dbuf_bank(crtc->pipe,
                                                              new_dbuf_state->active_pipes))
                                pipe_val |= MBUS_DBOX_BW_8CREDITS_MTL;
 
 #define IS_BROADWELL_ULT(dev_priv) (dev_priv && 0)
 #define IS_BROADWELL_ULX(dev_priv) (dev_priv && 0)
 
-#define IP_VER(ver, rel)                ((ver) << 8 | (rel))
-
 #define IS_MOBILE(xe) (xe && 0)
 
 #define IS_TIGERLAKE_UY(xe) (xe && 0)