return 0;
 }
 
-static void band_gap_reset(struct drm_i915_private *dev_priv)
+static void band_gap_reset(struct intel_display *display)
 {
+       struct drm_i915_private *dev_priv = to_i915(display->drm);
+
        vlv_flisdsi_get(dev_priv);
 
        vlv_flisdsi_write(dev_priv, 0x08, 0x0001);
                                    struct intel_crtc_state *pipe_config,
                                    struct drm_connector_state *conn_state)
 {
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+       struct intel_display *display = to_intel_display(encoder);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        struct intel_connector *intel_connector = intel_dsi->attached_connector;
        struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode;
        int ret;
 
-       drm_dbg_kms(&dev_priv->drm, "\n");
+       drm_dbg_kms(display->drm, "\n");
        pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB;
        pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
 
        else
                pipe_config->pipe_bpp = 18;
 
-       if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+       if (display->platform.geminilake || display->platform.broxton) {
                /* Enable Frame time stamp based scanline reporting */
                pipe_config->mode_flags |=
                        I915_MODE_FLAG_GET_SCANLINE_FROM_TIMESTAMP;
        vlv_flisdsi_put(dev_priv);
 
        /* bandgap reset is needed after everytime we do power gate */
-       band_gap_reset(dev_priv);
+       band_gap_reset(display);
 
        for_each_dsi_port(port, intel_dsi->ports) {
 
 
 static void intel_dsi_device_ready(struct intel_encoder *encoder)
 {
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+       struct intel_display *display = to_intel_display(encoder);
 
-       if (IS_GEMINILAKE(dev_priv))
+       if (display->platform.geminilake)
                glk_dsi_device_ready(encoder);
-       else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
+       else if (display->platform.geminilake || display->platform.broxton)
                bxt_dsi_device_ready(encoder);
        else
                vlv_dsi_device_ready(encoder);
        glk_dsi_disable_mipi_io(encoder);
 }
 
-static i915_reg_t port_ctrl_reg(struct drm_i915_private *i915, enum port port)
+static i915_reg_t port_ctrl_reg(struct intel_display *display, enum port port)
 {
-       return IS_GEMINILAKE(i915) || IS_BROXTON(i915) ?
+       return display->platform.geminilake || display->platform.broxton ?
                BXT_MIPI_PORT_CTRL(port) : VLV_MIPI_PORT_CTRL(port);
 }
 
 static void vlv_dsi_clear_device_ready(struct intel_encoder *encoder)
 {
        struct intel_display *display = to_intel_display(encoder);
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        enum port port;
 
        drm_dbg_kms(display->drm, "\n");
        for_each_dsi_port(port, intel_dsi->ports) {
                /* Common bit for both MIPI Port A & MIPI Port C on VLV/CHV */
-               i915_reg_t port_ctrl = IS_BROXTON(dev_priv) ?
+               i915_reg_t port_ctrl = display->platform.broxton ?
                        BXT_MIPI_PORT_CTRL(port) : VLV_MIPI_PORT_CTRL(PORT_A);
 
                intel_de_write(display, MIPI_DEVICE_READY(display, port),
                 * On VLV/CHV, wait till Clock lanes are in LP-00 state for MIPI
                 * Port A only. MIPI Port C has no similar bit for checking.
                 */
-               if ((IS_BROXTON(dev_priv) || port == PORT_A) &&
+               if ((display->platform.broxton || port == PORT_A) &&
                    intel_de_wait_for_clear(display, port_ctrl,
                                            AFE_LATCHOUT, 30))
                        drm_err(display->drm, "DSI LP not going Low\n");
                                  const struct intel_crtc_state *crtc_state)
 {
        struct intel_display *display = to_intel_display(encoder);
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
        struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        enum port port;
        if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) {
                u32 temp = intel_dsi->pixel_overlap;
 
-               if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+               if (display->platform.geminilake || display->platform.broxton) {
                        for_each_dsi_port(port, intel_dsi->ports)
                                intel_de_rmw(display, MIPI_CTRL(display, port),
                                             BXT_PIXEL_OVERLAP_CNT_MASK,
        }
 
        for_each_dsi_port(port, intel_dsi->ports) {
-               i915_reg_t port_ctrl = port_ctrl_reg(dev_priv, port);
+               i915_reg_t port_ctrl = port_ctrl_reg(display, port);
                u32 temp;
 
                temp = intel_de_read(display, port_ctrl);
                if (intel_dsi->ports == (BIT(PORT_A) | BIT(PORT_C))) {
                        temp |= (intel_dsi->dual_link - 1)
                                                << DUAL_LINK_MODE_SHIFT;
-                       if (IS_BROXTON(dev_priv))
+                       if (display->platform.broxton)
                                temp |= LANE_CONFIGURATION_DUAL_LINK_A;
                        else
                                temp |= crtc->pipe ?
 static void intel_dsi_port_disable(struct intel_encoder *encoder)
 {
        struct intel_display *display = to_intel_display(encoder);
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        enum port port;
 
        for_each_dsi_port(port, intel_dsi->ports) {
-               i915_reg_t port_ctrl = port_ctrl_reg(dev_priv, port);
+               i915_reg_t port_ctrl = port_ctrl_reg(display, port);
 
                /* de-assert ip_tg_enable signal */
                intel_de_rmw(display, port_ctrl, DPI_ENABLE, 0);
        struct intel_display *display = to_intel_display(encoder);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc);
-       struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
        enum pipe pipe = crtc->pipe;
        enum port port;
        bool glk_cold_boot = false;
         * The BIOS may leave the PLL in a wonky state where it doesn't
         * lock. It needs to be fully powered down to fix it.
         */
-       if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+       if (display->platform.geminilake || display->platform.broxton) {
                bxt_dsi_pll_disable(encoder);
                bxt_dsi_pll_enable(encoder, pipe_config);
        } else {
                vlv_dsi_pll_enable(encoder, pipe_config);
        }
 
-       if (IS_BROXTON(dev_priv)) {
+       if (display->platform.broxton) {
                /* Add MIPI IO reset programming for modeset */
                intel_de_rmw(display, BXT_P_CR_GT_DISP_PWRON, 0, MIPIO_RST_CTRL);
 
                intel_de_write(display, BXT_P_DSI_REGULATOR_TX_CTRL, 0);
        }
 
-       if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
+       if (display->platform.valleyview || display->platform.cherryview) {
                /* Disable DPOunit clock gating, can stall pipe */
-               intel_de_rmw(display, DSPCLK_GATE_D(dev_priv),
+               intel_de_rmw(display, DSPCLK_GATE_D(display),
                             0, DPOUNIT_CLOCK_GATE_DISABLE);
        }
 
-       if (!IS_GEMINILAKE(dev_priv))
+       if (!display->platform.geminilake)
                intel_dsi_prepare(encoder, pipe_config);
 
        /* Give the panel time to power-on and then deassert its reset */
        msleep(intel_dsi->panel_on_delay);
        intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_DEASSERT_RESET);
 
-       if (IS_GEMINILAKE(dev_priv)) {
+       if (display->platform.geminilake) {
                glk_cold_boot = glk_dsi_enable_io(encoder);
 
                /* Prepare port in cold boot(s3/s4) scenario */
        intel_dsi_device_ready(encoder);
 
        /* Prepare port in normal boot scenario */
-       if (IS_GEMINILAKE(dev_priv) && !glk_cold_boot)
+       if (display->platform.geminilake && !glk_cold_boot)
                intel_dsi_prepare(encoder, pipe_config);
 
        /* Send initialization commands in LP mode */
                              const struct intel_crtc_state *old_crtc_state,
                              const struct drm_connector_state *old_conn_state)
 {
-       struct drm_i915_private *i915 = to_i915(encoder->base.dev);
+       struct intel_display *display = to_intel_display(encoder);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        enum port port;
 
-       drm_dbg_kms(&i915->drm, "\n");
+       drm_dbg_kms(display->drm, "\n");
 
        intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_BACKLIGHT_OFF);
        intel_backlight_disable(old_conn_state);
 
 static void intel_dsi_clear_device_ready(struct intel_encoder *encoder)
 {
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+       struct intel_display *display = to_intel_display(encoder);
 
-       if (IS_GEMINILAKE(dev_priv))
+       if (display->platform.geminilake)
                glk_dsi_clear_device_ready(encoder);
        else
                vlv_dsi_clear_device_ready(encoder);
                                   const struct drm_connector_state *old_conn_state)
 {
        struct intel_display *display = to_intel_display(encoder);
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        enum port port;
 
        drm_dbg_kms(display->drm, "\n");
 
-       if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+       if (display->platform.geminilake || display->platform.broxton) {
                intel_crtc_vblank_off(old_crtc_state);
 
                skl_scaler_disable(old_crtc_state);
        /* Transition to LP-00 */
        intel_dsi_clear_device_ready(encoder);
 
-       if (IS_BROXTON(dev_priv)) {
+       if (display->platform.broxton) {
                /* Power down DSI regulator to save power */
                intel_de_write(display, BXT_P_DSI_REGULATOR_CFG, STAP_SELECT);
                intel_de_write(display, BXT_P_DSI_REGULATOR_TX_CTRL,
                intel_de_rmw(display, BXT_P_CR_GT_DISP_PWRON, MIPIO_RST_CTRL, 0);
        }
 
-       if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+       if (display->platform.geminilake || display->platform.broxton) {
                bxt_dsi_pll_disable(encoder);
        } else {
                vlv_dsi_pll_disable(encoder);
 
-               intel_de_rmw(display, DSPCLK_GATE_D(dev_priv),
+               intel_de_rmw(display, DSPCLK_GATE_D(display),
                             DPOUNIT_CLOCK_GATE_DISABLE, 0);
        }
 
         * configuration, otherwise accessing DSI registers will hang the
         * machine. See BSpec North Display Engine registers/MIPI[BXT].
         */
-       if ((IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) &&
+       if ((display->platform.geminilake || display->platform.broxton) &&
            !bxt_dsi_pll_is_enabled(dev_priv))
                goto out_put_power;
 
        /* XXX: this only works for one DSI output */
        for_each_dsi_port(port, intel_dsi->ports) {
-               i915_reg_t port_ctrl = port_ctrl_reg(dev_priv, port);
+               i915_reg_t port_ctrl = port_ctrl_reg(display, port);
                bool enabled = intel_de_read(display, port_ctrl) & DPI_ENABLE;
 
                /*
                 * bit in port C control register does not get set. As a
                 * workaround, check pipe B conf instead.
                 */
-               if ((IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) &&
+               if ((display->platform.valleyview || display->platform.cherryview) &&
                    port == PORT_C)
                        enabled = intel_de_read(display,
-                                               TRANSCONF(dev_priv, PIPE_B)) & TRANSCONF_ENABLE;
+                                               TRANSCONF(display, PIPE_B)) & TRANSCONF_ENABLE;
 
                /* Try command mode if video mode not enabled */
                if (!enabled) {
                if (!(intel_de_read(display, MIPI_DEVICE_READY(display, port)) & DEVICE_READY))
                        continue;
 
-               if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+               if (display->platform.geminilake || display->platform.broxton) {
                        u32 tmp = intel_de_read(display, MIPI_CTRL(display, port));
                        tmp &= BXT_PIPE_SELECT_MASK;
                        tmp >>= BXT_PIPE_SELECT_SHIFT;
 static void intel_dsi_get_config(struct intel_encoder *encoder,
                                 struct intel_crtc_state *pipe_config)
 {
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+       struct intel_display *display = to_intel_display(encoder);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        u32 pclk;
 
-       drm_dbg_kms(&dev_priv->drm, "\n");
+       drm_dbg_kms(display->drm, "\n");
 
        pipe_config->output_types |= BIT(INTEL_OUTPUT_DSI);
 
-       if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+       if (display->platform.geminilake || display->platform.broxton) {
                bxt_dsi_get_pipe_config(encoder, pipe_config);
                pclk = bxt_dsi_get_pclk(encoder, pipe_config);
        } else {
                            const struct drm_display_mode *adjusted_mode)
 {
        struct intel_display *display = to_intel_display(encoder);
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        enum port port;
        unsigned int bpp = mipi_dsi_pixel_format_to_bpp(intel_dsi->pixel_format);
        hbp = txbyteclkhs(hbp, bpp, lane_count, intel_dsi->burst_mode_ratio);
 
        for_each_dsi_port(port, intel_dsi->ports) {
-               if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+               if (display->platform.geminilake || display->platform.broxton) {
                        /*
                         * Program hdisplay and vdisplay on MIPI transcoder.
                         * This is different from calculated hactive and
                              const struct intel_crtc_state *pipe_config)
 {
        struct intel_display *display = to_intel_display(encoder);
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
        struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        const struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode;
        }
 
        for_each_dsi_port(port, intel_dsi->ports) {
-               if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
+               if (display->platform.valleyview || display->platform.cherryview) {
                        /*
                         * escape clock divider, 20MHz, shared for A and C.
                         * device ready must be off when doing this! txclkesc?
                        tmp &= ~READ_REQUEST_PRIORITY_MASK;
                        intel_de_write(display, MIPI_CTRL(display, port),
                                       tmp | READ_REQUEST_PRIORITY_HIGH);
-               } else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+               } else if (display->platform.geminilake || display->platform.broxton) {
                        enum pipe pipe = crtc->pipe;
 
                        intel_de_rmw(display, MIPI_CTRL(display, port),
        if (intel_dsi->clock_stop)
                tmp |= CLOCKSTOP;
 
-       if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
+       if (display->platform.geminilake || display->platform.broxton) {
                tmp |= BXT_DPHY_DEFEATURE_EN;
                if (!is_cmd_mode(intel_dsi))
                        tmp |= BXT_DEFEATURE_DPI_FIFO_CTR;
                intel_de_write(display, MIPI_INIT_COUNT(display, port),
                               txclkesc(intel_dsi->escape_clk_div, 100));
 
-               if ((IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) &&
+               if ((display->platform.geminilake || display->platform.broxton) &&
                    !intel_dsi->dual_link) {
                        /*
                         * BXT spec says write MIPI_INIT_COUNT for
                intel_de_write(display, MIPI_LP_BYTECLK(display, port),
                               intel_dsi->lp_byte_clk);
 
-               if (IS_GEMINILAKE(dev_priv)) {
+               if (display->platform.geminilake) {
                        intel_de_write(display, MIPI_TLPX_TIME_COUNT(display, port),
                                       intel_dsi->lp_byte_clk);
                        /* Shadow of DPHY reg */
 static void intel_dsi_unprepare(struct intel_encoder *encoder)
 {
        struct intel_display *display = to_intel_display(encoder);
-       struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
        enum port port;
 
-       if (IS_GEMINILAKE(dev_priv))
+       if (display->platform.geminilake)
                return;
 
        for_each_dsi_port(port, intel_dsi->ports) {
                /* Panel commands can be sent when clock is in LP11 */
                intel_de_write(display, MIPI_DEVICE_READY(display, port), 0x0);
 
-               if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
+               if (display->platform.geminilake || display->platform.broxton)
                        bxt_dsi_reset_clocks(encoder, port);
                else
                        vlv_dsi_reset_clocks(encoder, port);
 
 static void vlv_dphy_param_init(struct intel_dsi *intel_dsi)
 {
-       struct drm_i915_private *dev_priv = to_i915(intel_dsi->base.base.dev);
        struct intel_connector *connector = intel_dsi->attached_connector;
+       struct intel_display *display = to_intel_display(connector);
        struct mipi_config *mipi_config = connector->panel.vbt.dsi.config;
        u32 tlpx_ns, extra_byte_count, tlpx_ui;
        u32 ui_num, ui_den;
         * For GEMINILAKE dphy_param_reg will be programmed in terms of
         * HS byte clock count for other platform in HS ddr clock count
         */
-       mul = IS_GEMINILAKE(dev_priv) ? 8 : 2;
+       mul = display->platform.geminilake ? 8 : 2;
        ths_prepare_ns = max(mipi_config->ths_prepare,
                             mipi_config->tclk_prepare);
 
        prepare_cnt = DIV_ROUND_UP(ths_prepare_ns * ui_den, ui_num * mul);
 
        if (prepare_cnt > PREPARE_CNT_MAX) {
-               drm_dbg_kms(&dev_priv->drm, "prepare count too high %u\n",
+               drm_dbg_kms(display->drm, "prepare count too high %u\n",
                            prepare_cnt);
                prepare_cnt = PREPARE_CNT_MAX;
        }
                exit_zero_cnt += 1;
 
        if (exit_zero_cnt > EXIT_ZERO_CNT_MAX) {
-               drm_dbg_kms(&dev_priv->drm, "exit zero count too high %u\n",
+               drm_dbg_kms(display->drm, "exit zero count too high %u\n",
                            exit_zero_cnt);
                exit_zero_cnt = EXIT_ZERO_CNT_MAX;
        }
                                * ui_den, ui_num * mul);
 
        if (clk_zero_cnt > CLK_ZERO_CNT_MAX) {
-               drm_dbg_kms(&dev_priv->drm, "clock zero count too high %u\n",
+               drm_dbg_kms(display->drm, "clock zero count too high %u\n",
                            clk_zero_cnt);
                clk_zero_cnt = CLK_ZERO_CNT_MAX;
        }
        trail_cnt = DIV_ROUND_UP(tclk_trail_ns * ui_den, ui_num * mul);
 
        if (trail_cnt > TRAIL_CNT_MAX) {
-               drm_dbg_kms(&dev_priv->drm, "trail count too high %u\n",
+               drm_dbg_kms(display->drm, "trail count too high %u\n",
                            trail_cnt);
                trail_cnt = TRAIL_CNT_MAX;
        }
 
 int vlv_dsi_min_cdclk(const struct intel_crtc_state *crtc_state)
 {
-       struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev);
+       struct intel_display *display = to_intel_display(crtc_state);
 
        if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DSI))
                return 0;
         * On Valleyview some DSI panels lose (v|h)sync when the clock is lower
         * than 320000KHz.
         */
-       if (IS_VALLEYVIEW(dev_priv))
+       if (display->platform.valleyview)
                return 320000;
 
        /*
         * picture gets unstable, despite that values are
         * correct for DSI PLL and DE PLL.
         */
-       if (IS_GEMINILAKE(dev_priv))
+       if (display->platform.geminilake)
                return 158400;
 
        return 0;
        { }
 };
 
-void vlv_dsi_init(struct drm_i915_private *dev_priv)
+void vlv_dsi_init(struct intel_display *display)
 {
-       struct intel_display *display = &dev_priv->display;
        struct intel_dsi *intel_dsi;
        struct intel_encoder *encoder;
        struct intel_connector *connector;
        enum port port;
        enum pipe pipe;
 
-       drm_dbg_kms(&dev_priv->drm, "\n");
+       drm_dbg_kms(display->drm, "\n");
 
        /* There is no detection method for MIPI so rely on VBT */
        if (!intel_bios_is_dsi_present(display, &port))
                return;
 
-       if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
-               dev_priv->display.dsi.mmio_base = BXT_MIPI_BASE;
+       if (display->platform.geminilake || display->platform.broxton)
+               display->dsi.mmio_base = BXT_MIPI_BASE;
        else
-               dev_priv->display.dsi.mmio_base = VLV_MIPI_BASE;
+               display->dsi.mmio_base = VLV_MIPI_BASE;
 
        intel_dsi = kzalloc(sizeof(*intel_dsi), GFP_KERNEL);
        if (!intel_dsi)
        encoder = &intel_dsi->base;
        intel_dsi->attached_connector = connector;
 
-       drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_dsi_funcs,
+       drm_encoder_init(display->drm, &encoder->base, &intel_dsi_funcs,
                         DRM_MODE_ENCODER_DSI, "DSI %c", port_name(port));
 
        encoder->compute_config = intel_dsi_compute_config;
        encoder->pre_enable = intel_dsi_pre_enable;
-       if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
+       if (display->platform.geminilake || display->platform.broxton)
                encoder->enable = bxt_dsi_enable;
        encoder->disable = intel_dsi_disable;
        encoder->post_disable = intel_dsi_post_disable;
         * On BYT/CHV, pipe A maps to MIPI DSI port A, pipe B maps to MIPI DSI
         * port C. BXT isn't limited like this.
         */
-       if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
+       if (display->platform.geminilake || display->platform.broxton)
                encoder->pipe_mask = ~0;
        else if (port == PORT_A)
                encoder->pipe_mask = BIT(PIPE_A);
        else
                intel_dsi->ports = BIT(port);
 
-       if (drm_WARN_ON(&dev_priv->drm, connector->panel.vbt.dsi.bl_ports & ~intel_dsi->ports))
+       if (drm_WARN_ON(display->drm, connector->panel.vbt.dsi.bl_ports & ~intel_dsi->ports))
                connector->panel.vbt.dsi.bl_ports &= intel_dsi->ports;
 
-       if (drm_WARN_ON(&dev_priv->drm, connector->panel.vbt.dsi.cabc_ports & ~intel_dsi->ports))
+       if (drm_WARN_ON(display->drm, connector->panel.vbt.dsi.cabc_ports & ~intel_dsi->ports))
                connector->panel.vbt.dsi.cabc_ports &= intel_dsi->ports;
 
        /* Create a DSI host (and a device) for each port. */
        }
 
        if (!intel_dsi_vbt_init(intel_dsi, MIPI_DSI_GENERIC_PANEL_ID)) {
-               drm_dbg_kms(&dev_priv->drm, "no device found\n");
+               drm_dbg_kms(display->drm, "no device found\n");
                goto err;
        }
 
        /* Use clock read-back from current hw-state for fastboot */
        current_mode = intel_encoder_current_mode(encoder);
        if (current_mode) {
-               drm_dbg_kms(&dev_priv->drm, "Calculated pclk %d GOP %d\n",
+               drm_dbg_kms(display->drm, "Calculated pclk %d GOP %d\n",
                            intel_dsi->pclk, current_mode->clock);
                if (intel_fuzzy_clock_check(intel_dsi->pclk,
                                            current_mode->clock)) {
-                       drm_dbg_kms(&dev_priv->drm, "Using GOP pclk\n");
+                       drm_dbg_kms(display->drm, "Using GOP pclk\n");
                        intel_dsi->pclk = current_mode->clock;
                }
 
        intel_dsi_vbt_gpio_init(intel_dsi,
                                intel_dsi_get_hw_state(encoder, &pipe));
 
-       drm_connector_init(&dev_priv->drm, &connector->base, &intel_dsi_connector_funcs,
+       drm_connector_init(display->drm, &connector->base, &intel_dsi_connector_funcs,
                           DRM_MODE_CONNECTOR_DSI);
 
        drm_connector_helper_add(&connector->base, &intel_dsi_connector_helper_funcs);
 
        intel_connector_attach_encoder(connector, encoder);
 
-       mutex_lock(&dev_priv->drm.mode_config.mutex);
+       mutex_lock(&display->drm->mode_config.mutex);
        intel_panel_add_vbt_lfp_fixed_mode(connector);
-       mutex_unlock(&dev_priv->drm.mode_config.mutex);
+       mutex_unlock(&display->drm->mode_config.mutex);
 
        if (!intel_panel_preferred_fixed_mode(connector)) {
-               drm_dbg_kms(&dev_priv->drm, "no fixed mode\n");
+               drm_dbg_kms(display->drm, "no fixed mode\n");
                goto err_cleanup_connector;
        }