On Tue, Oct 22, 2024 at 06:57:18PM +0300, Jani Nikula wrote:
> struct intel_display will replace struct drm_i915_private as the main
> device pointer for display code. Switch gmbus code over to it.
> 
> Signed-off-by: Jani Nikula <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_bios.c     |   6 +-
>  drivers/gpu/drm/i915/display/intel_crt.c      |   6 +-
>  .../drm/i915/display/intel_display_driver.c   |   4 +-
>  .../gpu/drm/i915/display/intel_display_irq.c  |  11 +-
>  drivers/gpu/drm/i915/display/intel_dsi_vbt.c  |   5 +-
>  drivers/gpu/drm/i915/display/intel_dvo.c      |   8 +-
>  drivers/gpu/drm/i915/display/intel_gmbus.c    | 290 +++++++++---------
>  drivers/gpu/drm/i915/display/intel_gmbus.h    |  15 +-
>  .../gpu/drm/i915/display/intel_gmbus_regs.h   |  16 +-
>  drivers/gpu/drm/i915/display/intel_hdmi.c     |   8 +-
>  .../gpu/drm/i915/display/intel_hotplug_irq.c  |   6 +-
>  drivers/gpu/drm/i915/display/intel_lvds.c     |   2 +-
>  drivers/gpu/drm/i915/display/intel_sdvo.c     |   9 +-
>  drivers/gpu/drm/i915/i915_suspend.c           |   2 +-
>  14 files changed, 202 insertions(+), 186 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c 
> b/drivers/gpu/drm/i915/display/intel_bios.c
> index 9967b65e3cf6..48c010b5b150 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -2796,7 +2796,6 @@ static bool child_device_size_valid(struct 
> intel_display *display, int size)
>  static void
>  parse_general_definitions(struct intel_display *display)
>  {
> -     struct drm_i915_private *i915 = to_i915(display->drm);
>       const struct bdb_general_definitions *defs;
>       struct intel_bios_encoder_data *devdata;
>       const struct child_device_config *child;
> @@ -2821,7 +2820,7 @@ parse_general_definitions(struct intel_display *display)
>  
>       bus_pin = defs->crt_ddc_gmbus_pin;
>       drm_dbg_kms(display->drm, "crt_ddc_bus_pin: %d\n", bus_pin);
> -     if (intel_gmbus_is_valid_pin(i915, bus_pin))
> +     if (intel_gmbus_is_valid_pin(display, bus_pin))
>               display->vbt.crt_ddc_pin = bus_pin;
>  
>       if (!child_device_size_valid(display, defs->child_dev_size))
> @@ -3338,7 +3337,6 @@ bool intel_bios_is_tv_present(struct intel_display 
> *display)
>   */
>  bool intel_bios_is_lvds_present(struct intel_display *display, u8 *i2c_pin)
>  {
> -     struct drm_i915_private *i915 = to_i915(display->drm);
>       const struct intel_bios_encoder_data *devdata;
>  
>       if (list_empty(&display->vbt.display_devices))
> @@ -3355,7 +3353,7 @@ bool intel_bios_is_lvds_present(struct intel_display 
> *display, u8 *i2c_pin)
>                   child->device_type != DEVICE_TYPE_LFP)
>                       continue;
>  
> -             if (intel_gmbus_is_valid_pin(i915, child->i2c_pin))
> +             if (intel_gmbus_is_valid_pin(display, child->i2c_pin))
>                       *i2c_pin = child->i2c_pin;
>  
>               /* However, we cannot trust the BIOS writers to populate
> diff --git a/drivers/gpu/drm/i915/display/intel_crt.c 
> b/drivers/gpu/drm/i915/display/intel_crt.c
> index fd78adbaadbe..8222b1c251db 100644
> --- a/drivers/gpu/drm/i915/display/intel_crt.c
> +++ b/drivers/gpu/drm/i915/display/intel_crt.c
> @@ -935,6 +935,7 @@ intel_crt_detect(struct drm_connector *connector,
>  
>  static int intel_crt_get_modes(struct drm_connector *connector)
>  {
> +     struct intel_display *display = to_intel_display(connector->dev);
>       struct drm_device *dev = connector->dev;
>       struct drm_i915_private *dev_priv = to_i915(dev);
>       struct intel_crt *crt = 
> intel_attached_crt(to_intel_connector(connector));
> @@ -954,7 +955,7 @@ static int intel_crt_get_modes(struct drm_connector 
> *connector)
>               goto out;
>  
>       /* Try to probe digital port for output in DVI-I -> VGA mode. */
> -     ddc = intel_gmbus_get_adapter(dev_priv, GMBUS_PIN_DPB);
> +     ddc = intel_gmbus_get_adapter(display, GMBUS_PIN_DPB);
>       ret = intel_crt_ddc_get_modes(connector, ddc);
>  
>  out:
> @@ -1009,6 +1010,7 @@ static const struct drm_encoder_funcs 
> intel_crt_enc_funcs = {
>  
>  void intel_crt_init(struct drm_i915_private *dev_priv)
>  {
> +     struct intel_display *display = &dev_priv->display;
>       struct drm_connector *connector;
>       struct intel_crt *crt;
>       struct intel_connector *intel_connector;
> @@ -1057,7 +1059,7 @@ void intel_crt_init(struct drm_i915_private *dev_priv)
>       drm_connector_init_with_ddc(&dev_priv->drm, connector,
>                                   &intel_crt_connector_funcs,
>                                   DRM_MODE_CONNECTOR_VGA,
> -                                 intel_gmbus_get_adapter(dev_priv, ddc_pin));
> +                                 intel_gmbus_get_adapter(display, ddc_pin));
>  
>       drm_encoder_init(&dev_priv->drm, &crt->base.base, &intel_crt_enc_funcs,
>                        DRM_MODE_ENCODER_DAC, "CRT");
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c 
> b/drivers/gpu/drm/i915/display/intel_display_driver.c
> index 673f9b965494..ae5470078173 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
> @@ -432,7 +432,7 @@ int intel_display_driver_probe_nogem(struct 
> drm_i915_private *i915)
>  
>       intel_pps_setup(display);
>  
> -     intel_gmbus_setup(i915);
> +     intel_gmbus_setup(display);
>  
>       drm_dbg_kms(&i915->drm, "%d display pipe%s available.\n",
>                   INTEL_NUM_PIPES(i915),
> @@ -608,7 +608,7 @@ void intel_display_driver_remove_noirq(struct 
> drm_i915_private *i915)
>  
>       intel_overlay_cleanup(i915);
>  
> -     intel_gmbus_teardown(i915);
> +     intel_gmbus_teardown(display);
>  
>       destroy_workqueue(i915->display.wq.flip);
>       destroy_workqueue(i915->display.wq.modeset);
> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c 
> b/drivers/gpu/drm/i915/display/intel_display_irq.c
> index a4f42ed3f21a..0478fe3cdd86 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
> @@ -543,12 +543,13 @@ void i965_pipestat_irq_handler(struct drm_i915_private 
> *dev_priv,
>               intel_opregion_asle_intr(display);
>  
>       if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS)
> -             intel_gmbus_irq_handler(dev_priv);
> +             intel_gmbus_irq_handler(display);
>  }
>  
>  void valleyview_pipestat_irq_handler(struct drm_i915_private *dev_priv,
>                                    u32 pipe_stats[I915_MAX_PIPES])
>  {
> +     struct intel_display *display = &dev_priv->display;
>       enum pipe pipe;
>  
>       for_each_pipe(dev_priv, pipe) {
> @@ -566,7 +567,7 @@ void valleyview_pipestat_irq_handler(struct 
> drm_i915_private *dev_priv,
>       }
>  
>       if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS)
> -             intel_gmbus_irq_handler(dev_priv);
> +             intel_gmbus_irq_handler(display);
>  }
>  
>  static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
> @@ -588,7 +589,7 @@ static void ibx_irq_handler(struct drm_i915_private 
> *dev_priv, u32 pch_iir)
>               intel_dp_aux_irq_handler(display);
>  
>       if (pch_iir & SDE_GMBUS)
> -             intel_gmbus_irq_handler(dev_priv);
> +             intel_gmbus_irq_handler(display);
>  
>       if (pch_iir & SDE_AUDIO_HDCP_MASK)
>               drm_dbg(&dev_priv->drm, "PCH HDCP audio interrupt\n");
> @@ -677,7 +678,7 @@ static void cpt_irq_handler(struct drm_i915_private 
> *dev_priv, u32 pch_iir)
>               intel_dp_aux_irq_handler(display);
>  
>       if (pch_iir & SDE_GMBUS_CPT)
> -             intel_gmbus_irq_handler(dev_priv);
> +             intel_gmbus_irq_handler(display);
>  
>       if (pch_iir & SDE_AUDIO_CP_REQ_CPT)
>               drm_dbg(&dev_priv->drm, "Audio CP request interrupt\n");
> @@ -1109,7 +1110,7 @@ void gen8_de_irq_handler(struct drm_i915_private 
> *dev_priv, u32 master_ctl)
>  
>                       if ((IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) &&
>                           (iir & BXT_DE_PORT_GMBUS)) {
> -                             intel_gmbus_irq_handler(dev_priv);
> +                             intel_gmbus_irq_handler(display);
>                               found = true;
>                       }
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c 
> b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> index f0e3be0fe420..e8129a720210 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> @@ -323,6 +323,7 @@ enum {
>  static void icl_native_gpio_set_value(struct drm_i915_private *dev_priv,
>                                     int gpio, bool value)
>  {
> +     struct intel_display *display = &dev_priv->display;
>       int index;
>  
>       if (drm_WARN_ON(&dev_priv->drm, DISPLAY_VER(dev_priv) == 11 && gpio >= 
> MIPI_RESET_2))
> @@ -367,7 +368,7 @@ static void icl_native_gpio_set_value(struct 
> drm_i915_private *dev_priv,
>       case MIPI_AVEE_EN_2:
>               index = gpio == MIPI_AVEE_EN_1 ? 1 : 2;
>  
> -             intel_de_rmw(dev_priv, GPIO(dev_priv, index),
> +             intel_de_rmw(display, GPIO(display, index),
>                            GPIO_CLOCK_VAL_OUT,
>                            GPIO_CLOCK_DIR_MASK | GPIO_CLOCK_DIR_OUT |
>                            GPIO_CLOCK_VAL_MASK | (value ? GPIO_CLOCK_VAL_OUT 
> : 0));
> @@ -376,7 +377,7 @@ static void icl_native_gpio_set_value(struct 
> drm_i915_private *dev_priv,
>       case MIPI_VIO_EN_2:
>               index = gpio == MIPI_VIO_EN_1 ? 1 : 2;
>  
> -             intel_de_rmw(dev_priv, GPIO(dev_priv, index),
> +             intel_de_rmw(display, GPIO(display, index),
>                            GPIO_DATA_VAL_OUT,
>                            GPIO_DATA_DIR_MASK | GPIO_DATA_DIR_OUT |
>                            GPIO_DATA_VAL_MASK | (value ? GPIO_DATA_VAL_OUT : 
> 0));
> diff --git a/drivers/gpu/drm/i915/display/intel_dvo.c 
> b/drivers/gpu/drm/i915/display/intel_dvo.c
> index 9508ceae0d84..2d5ffb37eac9 100644
> --- a/drivers/gpu/drm/i915/display/intel_dvo.c
> +++ b/drivers/gpu/drm/i915/display/intel_dvo.c
> @@ -417,6 +417,7 @@ static bool intel_dvo_init_dev(struct drm_i915_private 
> *dev_priv,
>                              struct intel_dvo *intel_dvo,
>                              const struct intel_dvo_device *dvo)
>  {
> +     struct intel_display *display = &dev_priv->display;
>       struct i2c_adapter *i2c;
>       u32 dpll[I915_MAX_PIPES];
>       enum pipe pipe;
> @@ -428,7 +429,7 @@ static bool intel_dvo_init_dev(struct drm_i915_private 
> *dev_priv,
>        * special cases, but otherwise default to what's defined
>        * in the spec.
>        */
> -     if (intel_gmbus_is_valid_pin(dev_priv, dvo->gpio))
> +     if (intel_gmbus_is_valid_pin(display, dvo->gpio))
>               gpio = dvo->gpio;
>       else if (dvo->type == INTEL_DVO_CHIP_LVDS)
>               gpio = GMBUS_PIN_SSC;
> @@ -440,7 +441,7 @@ static bool intel_dvo_init_dev(struct drm_i915_private 
> *dev_priv,
>        * It appears that everything is on GPIOE except for panels
>        * on i830 laptops, which are on GPIOB (DVOA).
>        */
> -     i2c = intel_gmbus_get_adapter(dev_priv, gpio);
> +     i2c = intel_gmbus_get_adapter(display, gpio);
>  
>       intel_dvo->dev = *dvo;
>  
> @@ -489,6 +490,7 @@ static bool intel_dvo_probe(struct drm_i915_private *i915,
>  
>  void intel_dvo_init(struct drm_i915_private *i915)
>  {
> +     struct intel_display *display = &i915->display;
>       struct intel_connector *connector;
>       struct intel_encoder *encoder;
>       struct intel_dvo *intel_dvo;
> @@ -549,7 +551,7 @@ void intel_dvo_init(struct drm_i915_private *i915)
>       drm_connector_init_with_ddc(&i915->drm, &connector->base,
>                                   &intel_dvo_connector_funcs,
>                                   intel_dvo_connector_type(&intel_dvo->dev),
> -                                 intel_gmbus_get_adapter(i915, 
> GMBUS_PIN_DPC));
> +                                 intel_gmbus_get_adapter(display, 
> GMBUS_PIN_DPC));
>  
>       drm_connector_helper_add(&connector->base,
>                                &intel_dvo_connector_helper_funcs);
> diff --git a/drivers/gpu/drm/i915/display/intel_gmbus.c 
> b/drivers/gpu/drm/i915/display/intel_gmbus.c
> index 6470f75106bd..e3d938c7f83e 100644
> --- a/drivers/gpu/drm/i915/display/intel_gmbus.c
> +++ b/drivers/gpu/drm/i915/display/intel_gmbus.c
> @@ -48,7 +48,7 @@ struct intel_gmbus {
>       u32 reg0;
>       i915_reg_t gpio_reg;
>       struct i2c_algo_bit_data bit_algo;
> -     struct drm_i915_private *i915;
> +     struct intel_display *display;
>  };
>  
>  enum gmbus_gpio {
> @@ -149,9 +149,10 @@ static const struct gmbus_pin gmbus_pins_mtp[] = {
>       [GMBUS_PIN_12_TC4_ICP] = { "tc4", GPIOM },
>  };
>  
> -static const struct gmbus_pin *get_gmbus_pin(struct drm_i915_private *i915,
> +static const struct gmbus_pin *get_gmbus_pin(struct intel_display *display,
>                                            unsigned int pin)
>  {
> +     struct drm_i915_private *i915 = to_i915(display->drm);

hmmm! Great idea!
So we the other conversion doesn't block this to go in parallel!


Reviewed-by: Rodrigo Vivi <[email protected]>

>       const struct gmbus_pin *pins;
>       size_t size;
>  
> @@ -173,7 +174,7 @@ static const struct gmbus_pin *get_gmbus_pin(struct 
> drm_i915_private *i915,
>       } else if (IS_GEMINILAKE(i915) || IS_BROXTON(i915)) {
>               pins = gmbus_pins_bxt;
>               size = ARRAY_SIZE(gmbus_pins_bxt);
> -     } else if (DISPLAY_VER(i915) == 9) {
> +     } else if (DISPLAY_VER(display) == 9) {
>               pins = gmbus_pins_skl;
>               size = ARRAY_SIZE(gmbus_pins_skl);
>       } else if (IS_BROADWELL(i915)) {
> @@ -190,9 +191,9 @@ static const struct gmbus_pin *get_gmbus_pin(struct 
> drm_i915_private *i915,
>       return &pins[pin];
>  }
>  
> -bool intel_gmbus_is_valid_pin(struct drm_i915_private *i915, unsigned int 
> pin)
> +bool intel_gmbus_is_valid_pin(struct intel_display *display, unsigned int 
> pin)
>  {
> -     return get_gmbus_pin(i915, pin);
> +     return get_gmbus_pin(display, pin);
>  }
>  
>  /* Intel GPIO access functions */
> @@ -206,42 +207,45 @@ to_intel_gmbus(struct i2c_adapter *i2c)
>  }
>  
>  void
> -intel_gmbus_reset(struct drm_i915_private *i915)
> +intel_gmbus_reset(struct intel_display *display)
>  {
> -     intel_de_write(i915, GMBUS0(i915), 0);
> -     intel_de_write(i915, GMBUS4(i915), 0);
> +     intel_de_write(display, GMBUS0(display), 0);
> +     intel_de_write(display, GMBUS4(display), 0);
>  }
>  
> -static void pnv_gmbus_clock_gating(struct drm_i915_private *i915,
> +static void pnv_gmbus_clock_gating(struct intel_display *display,
>                                  bool enable)
>  {
>       /* When using bit bashing for I2C, this bit needs to be set to 1 */
> -     intel_de_rmw(i915, DSPCLK_GATE_D(i915), 
> PNV_GMBUSUNIT_CLOCK_GATE_DISABLE,
> +     intel_de_rmw(display, DSPCLK_GATE_D(display),
> +                  PNV_GMBUSUNIT_CLOCK_GATE_DISABLE,
>                    !enable ? PNV_GMBUSUNIT_CLOCK_GATE_DISABLE : 0);
>  }
>  
> -static void pch_gmbus_clock_gating(struct drm_i915_private *i915,
> +static void pch_gmbus_clock_gating(struct intel_display *display,
>                                  bool enable)
>  {
> -     intel_de_rmw(i915, SOUTH_DSPCLK_GATE_D, 
> PCH_GMBUSUNIT_CLOCK_GATE_DISABLE,
> +     intel_de_rmw(display, SOUTH_DSPCLK_GATE_D,
> +                  PCH_GMBUSUNIT_CLOCK_GATE_DISABLE,
>                    !enable ? PCH_GMBUSUNIT_CLOCK_GATE_DISABLE : 0);
>  }
>  
> -static void bxt_gmbus_clock_gating(struct drm_i915_private *i915,
> +static void bxt_gmbus_clock_gating(struct intel_display *display,
>                                  bool enable)
>  {
> -     intel_de_rmw(i915, GEN9_CLKGATE_DIS_4, BXT_GMBUS_GATING_DIS,
> +     intel_de_rmw(display, GEN9_CLKGATE_DIS_4, BXT_GMBUS_GATING_DIS,
>                    !enable ? BXT_GMBUS_GATING_DIS : 0);
>  }
>  
>  static u32 get_reserved(struct intel_gmbus *bus)
>  {
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
> +     struct drm_i915_private *i915 = to_i915(display->drm);
>       u32 reserved = 0;
>  
>       /* On most chips, these bits must be preserved in software. */
>       if (!IS_I830(i915) && !IS_I845G(i915))
> -             reserved = intel_de_read_notrace(i915, bus->gpio_reg) &
> +             reserved = intel_de_read_notrace(display, bus->gpio_reg) &
>                       (GPIO_DATA_PULLUP_DISABLE | GPIO_CLOCK_PULLUP_DISABLE);
>  
>       return reserved;
> @@ -250,31 +254,31 @@ static u32 get_reserved(struct intel_gmbus *bus)
>  static int get_clock(void *data)
>  {
>       struct intel_gmbus *bus = data;
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
>       u32 reserved = get_reserved(bus);
>  
> -     intel_de_write_notrace(i915, bus->gpio_reg, reserved | 
> GPIO_CLOCK_DIR_MASK);
> -     intel_de_write_notrace(i915, bus->gpio_reg, reserved);
> +     intel_de_write_notrace(display, bus->gpio_reg, reserved | 
> GPIO_CLOCK_DIR_MASK);
> +     intel_de_write_notrace(display, bus->gpio_reg, reserved);
>  
> -     return (intel_de_read_notrace(i915, bus->gpio_reg) & GPIO_CLOCK_VAL_IN) 
> != 0;
> +     return (intel_de_read_notrace(display, bus->gpio_reg) & 
> GPIO_CLOCK_VAL_IN) != 0;
>  }
>  
>  static int get_data(void *data)
>  {
>       struct intel_gmbus *bus = data;
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
>       u32 reserved = get_reserved(bus);
>  
> -     intel_de_write_notrace(i915, bus->gpio_reg, reserved | 
> GPIO_DATA_DIR_MASK);
> -     intel_de_write_notrace(i915, bus->gpio_reg, reserved);
> +     intel_de_write_notrace(display, bus->gpio_reg, reserved | 
> GPIO_DATA_DIR_MASK);
> +     intel_de_write_notrace(display, bus->gpio_reg, reserved);
>  
> -     return (intel_de_read_notrace(i915, bus->gpio_reg) & GPIO_DATA_VAL_IN) 
> != 0;
> +     return (intel_de_read_notrace(display, bus->gpio_reg) & 
> GPIO_DATA_VAL_IN) != 0;
>  }
>  
>  static void set_clock(void *data, int state_high)
>  {
>       struct intel_gmbus *bus = data;
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
>       u32 reserved = get_reserved(bus);
>       u32 clock_bits;
>  
> @@ -284,14 +288,14 @@ static void set_clock(void *data, int state_high)
>               clock_bits = GPIO_CLOCK_DIR_OUT | GPIO_CLOCK_DIR_MASK |
>                            GPIO_CLOCK_VAL_MASK;
>  
> -     intel_de_write_notrace(i915, bus->gpio_reg, reserved | clock_bits);
> -     intel_de_posting_read(i915, bus->gpio_reg);
> +     intel_de_write_notrace(display, bus->gpio_reg, reserved | clock_bits);
> +     intel_de_posting_read(display, bus->gpio_reg);
>  }
>  
>  static void set_data(void *data, int state_high)
>  {
>       struct intel_gmbus *bus = data;
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
>       u32 reserved = get_reserved(bus);
>       u32 data_bits;
>  
> @@ -301,20 +305,21 @@ static void set_data(void *data, int state_high)
>               data_bits = GPIO_DATA_DIR_OUT | GPIO_DATA_DIR_MASK |
>                       GPIO_DATA_VAL_MASK;
>  
> -     intel_de_write_notrace(i915, bus->gpio_reg, reserved | data_bits);
> -     intel_de_posting_read(i915, bus->gpio_reg);
> +     intel_de_write_notrace(display, bus->gpio_reg, reserved | data_bits);
> +     intel_de_posting_read(display, bus->gpio_reg);
>  }
>  
>  static int
>  intel_gpio_pre_xfer(struct i2c_adapter *adapter)
>  {
>       struct intel_gmbus *bus = to_intel_gmbus(adapter);
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
> +     struct drm_i915_private *i915 = to_i915(display->drm);
>  
> -     intel_gmbus_reset(i915);
> +     intel_gmbus_reset(display);
>  
>       if (IS_PINEVIEW(i915))
> -             pnv_gmbus_clock_gating(i915, false);
> +             pnv_gmbus_clock_gating(display, false);
>  
>       set_data(bus, 1);
>       set_clock(bus, 1);
> @@ -326,13 +331,14 @@ static void
>  intel_gpio_post_xfer(struct i2c_adapter *adapter)
>  {
>       struct intel_gmbus *bus = to_intel_gmbus(adapter);
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
> +     struct drm_i915_private *i915 = to_i915(display->drm);
>  
>       set_data(bus, 1);
>       set_clock(bus, 1);
>  
>       if (IS_PINEVIEW(i915))
> -             pnv_gmbus_clock_gating(i915, true);
> +             pnv_gmbus_clock_gating(display, true);
>  }
>  
>  static void
> @@ -355,16 +361,17 @@ intel_gpio_setup(struct intel_gmbus *bus, i915_reg_t 
> gpio_reg)
>       algo->data = bus;
>  }
>  
> -static bool has_gmbus_irq(struct drm_i915_private *i915)
> +static bool has_gmbus_irq(struct intel_display *display)
>  {
> +     struct drm_i915_private *i915 = to_i915(display->drm);
>       /*
>        * encoder->shutdown() may want to use GMBUS
>        * after irqs have already been disabled.
>        */
> -     return HAS_GMBUS_IRQ(i915) && intel_irqs_enabled(i915);
> +     return HAS_GMBUS_IRQ(display) && intel_irqs_enabled(i915);
>  }
>  
> -static int gmbus_wait(struct drm_i915_private *i915, u32 status, u32 irq_en)
> +static int gmbus_wait(struct intel_display *display, u32 status, u32 irq_en)
>  {
>       DEFINE_WAIT(wait);
>       u32 gmbus2;
> @@ -374,21 +381,21 @@ static int gmbus_wait(struct drm_i915_private *i915, 
> u32 status, u32 irq_en)
>        * we also need to check for NAKs besides the hw ready/idle signal, we
>        * need to wake up periodically and check that ourselves.
>        */
> -     if (!has_gmbus_irq(i915))
> +     if (!has_gmbus_irq(display))
>               irq_en = 0;
>  
> -     add_wait_queue(&i915->display.gmbus.wait_queue, &wait);
> -     intel_de_write_fw(i915, GMBUS4(i915), irq_en);
> +     add_wait_queue(&display->gmbus.wait_queue, &wait);
> +     intel_de_write_fw(display, GMBUS4(display), irq_en);
>  
>       status |= GMBUS_SATOER;
> -     ret = wait_for_us((gmbus2 = intel_de_read_fw(i915, GMBUS2(i915))) & 
> status,
> +     ret = wait_for_us((gmbus2 = intel_de_read_fw(display, GMBUS2(display))) 
> & status,
>                         2);
>       if (ret)
> -             ret = wait_for((gmbus2 = intel_de_read_fw(i915, GMBUS2(i915))) 
> & status,
> +             ret = wait_for((gmbus2 = intel_de_read_fw(display, 
> GMBUS2(display))) & status,
>                              50);
>  
> -     intel_de_write_fw(i915, GMBUS4(i915), 0);
> -     remove_wait_queue(&i915->display.gmbus.wait_queue, &wait);
> +     intel_de_write_fw(display, GMBUS4(display), 0);
> +     remove_wait_queue(&display->gmbus.wait_queue, &wait);
>  
>       if (gmbus2 & GMBUS_SATOER)
>               return -ENXIO;
> @@ -397,7 +404,7 @@ static int gmbus_wait(struct drm_i915_private *i915, u32 
> status, u32 irq_en)
>  }
>  
>  static int
> -gmbus_wait_idle(struct drm_i915_private *i915)
> +gmbus_wait_idle(struct intel_display *display)
>  {
>       DEFINE_WAIT(wait);
>       u32 irq_enable;
> @@ -405,33 +412,33 @@ gmbus_wait_idle(struct drm_i915_private *i915)
>  
>       /* Important: The hw handles only the first bit, so set only one! */
>       irq_enable = 0;
> -     if (has_gmbus_irq(i915))
> +     if (has_gmbus_irq(display))
>               irq_enable = GMBUS_IDLE_EN;
>  
> -     add_wait_queue(&i915->display.gmbus.wait_queue, &wait);
> -     intel_de_write_fw(i915, GMBUS4(i915), irq_enable);
> +     add_wait_queue(&display->gmbus.wait_queue, &wait);
> +     intel_de_write_fw(display, GMBUS4(display), irq_enable);
>  
> -     ret = intel_de_wait_fw(i915, GMBUS2(i915), GMBUS_ACTIVE, 0, 10);
> +     ret = intel_de_wait_fw(display, GMBUS2(display), GMBUS_ACTIVE, 0, 10);
>  
> -     intel_de_write_fw(i915, GMBUS4(i915), 0);
> -     remove_wait_queue(&i915->display.gmbus.wait_queue, &wait);
> +     intel_de_write_fw(display, GMBUS4(display), 0);
> +     remove_wait_queue(&display->gmbus.wait_queue, &wait);
>  
>       return ret;
>  }
>  
> -static unsigned int gmbus_max_xfer_size(struct drm_i915_private *i915)
> +static unsigned int gmbus_max_xfer_size(struct intel_display *display)
>  {
> -     return DISPLAY_VER(i915) >= 9 ? GEN9_GMBUS_BYTE_COUNT_MAX :
> +     return DISPLAY_VER(display) >= 9 ? GEN9_GMBUS_BYTE_COUNT_MAX :
>              GMBUS_BYTE_COUNT_MAX;
>  }
>  
>  static int
> -gmbus_xfer_read_chunk(struct drm_i915_private *i915,
> +gmbus_xfer_read_chunk(struct intel_display *display,
>                     unsigned short addr, u8 *buf, unsigned int len,
>                     u32 gmbus0_reg, u32 gmbus1_index)
>  {
>       unsigned int size = len;
> -     bool burst_read = len > gmbus_max_xfer_size(i915);
> +     bool burst_read = len > gmbus_max_xfer_size(display);
>       bool extra_byte_added = false;
>  
>       if (burst_read) {
> @@ -444,21 +451,21 @@ gmbus_xfer_read_chunk(struct drm_i915_private *i915,
>                       len++;
>               }
>               size = len % 256 + 256;
> -             intel_de_write_fw(i915, GMBUS0(i915),
> +             intel_de_write_fw(display, GMBUS0(display),
>                                 gmbus0_reg | GMBUS_BYTE_CNT_OVERRIDE);
>       }
>  
> -     intel_de_write_fw(i915, GMBUS1(i915),
> +     intel_de_write_fw(display, GMBUS1(display),
>                         gmbus1_index | GMBUS_CYCLE_WAIT | (size << 
> GMBUS_BYTE_COUNT_SHIFT) | (addr << GMBUS_SLAVE_ADDR_SHIFT) | GMBUS_SLAVE_READ 
> | GMBUS_SW_RDY);
>       while (len) {
>               int ret;
>               u32 val, loop = 0;
>  
> -             ret = gmbus_wait(i915, GMBUS_HW_RDY, GMBUS_HW_RDY_EN);
> +             ret = gmbus_wait(display, GMBUS_HW_RDY, GMBUS_HW_RDY_EN);
>               if (ret)
>                       return ret;
>  
> -             val = intel_de_read_fw(i915, GMBUS3(i915));
> +             val = intel_de_read_fw(display, GMBUS3(display));
>               do {
>                       if (extra_byte_added && len == 1)
>                               break;
> @@ -469,7 +476,7 @@ gmbus_xfer_read_chunk(struct drm_i915_private *i915,
>  
>               if (burst_read && len == size - 4)
>                       /* Reset the override bit */
> -                     intel_de_write_fw(i915, GMBUS0(i915), gmbus0_reg);
> +                     intel_de_write_fw(display, GMBUS0(display), gmbus0_reg);
>       }
>  
>       return 0;
> @@ -486,9 +493,10 @@ gmbus_xfer_read_chunk(struct drm_i915_private *i915,
>  #define INTEL_GMBUS_BURST_READ_MAX_LEN               767U
>  
>  static int
> -gmbus_xfer_read(struct drm_i915_private *i915, struct i2c_msg *msg,
> +gmbus_xfer_read(struct intel_display *display, struct i2c_msg *msg,
>               u32 gmbus0_reg, u32 gmbus1_index)
>  {
> +     struct drm_i915_private *i915 = to_i915(display->drm);
>       u8 *buf = msg->buf;
>       unsigned int rx_size = msg->len;
>       unsigned int len;
> @@ -498,9 +506,9 @@ gmbus_xfer_read(struct drm_i915_private *i915, struct 
> i2c_msg *msg,
>               if (HAS_GMBUS_BURST_READ(i915))
>                       len = min(rx_size, INTEL_GMBUS_BURST_READ_MAX_LEN);
>               else
> -                     len = min(rx_size, gmbus_max_xfer_size(i915));
> +                     len = min(rx_size, gmbus_max_xfer_size(display));
>  
> -             ret = gmbus_xfer_read_chunk(i915, msg->addr, buf, len,
> +             ret = gmbus_xfer_read_chunk(display, msg->addr, buf, len,
>                                           gmbus0_reg, gmbus1_index);
>               if (ret)
>                       return ret;
> @@ -513,7 +521,7 @@ gmbus_xfer_read(struct drm_i915_private *i915, struct 
> i2c_msg *msg,
>  }
>  
>  static int
> -gmbus_xfer_write_chunk(struct drm_i915_private *i915,
> +gmbus_xfer_write_chunk(struct intel_display *display,
>                      unsigned short addr, u8 *buf, unsigned int len,
>                      u32 gmbus1_index)
>  {
> @@ -526,8 +534,8 @@ gmbus_xfer_write_chunk(struct drm_i915_private *i915,
>               len -= 1;
>       }
>  
> -     intel_de_write_fw(i915, GMBUS3(i915), val);
> -     intel_de_write_fw(i915, GMBUS1(i915),
> +     intel_de_write_fw(display, GMBUS3(display), val);
> +     intel_de_write_fw(display, GMBUS1(display),
>                         gmbus1_index | GMBUS_CYCLE_WAIT | (chunk_size << 
> GMBUS_BYTE_COUNT_SHIFT) | (addr << GMBUS_SLAVE_ADDR_SHIFT) | 
> GMBUS_SLAVE_WRITE | GMBUS_SW_RDY);
>       while (len) {
>               int ret;
> @@ -537,9 +545,9 @@ gmbus_xfer_write_chunk(struct drm_i915_private *i915,
>                       val |= *buf++ << (8 * loop);
>               } while (--len && ++loop < 4);
>  
> -             intel_de_write_fw(i915, GMBUS3(i915), val);
> +             intel_de_write_fw(display, GMBUS3(display), val);
>  
> -             ret = gmbus_wait(i915, GMBUS_HW_RDY, GMBUS_HW_RDY_EN);
> +             ret = gmbus_wait(display, GMBUS_HW_RDY, GMBUS_HW_RDY_EN);
>               if (ret)
>                       return ret;
>       }
> @@ -548,7 +556,7 @@ gmbus_xfer_write_chunk(struct drm_i915_private *i915,
>  }
>  
>  static int
> -gmbus_xfer_write(struct drm_i915_private *i915, struct i2c_msg *msg,
> +gmbus_xfer_write(struct intel_display *display, struct i2c_msg *msg,
>                u32 gmbus1_index)
>  {
>       u8 *buf = msg->buf;
> @@ -557,9 +565,9 @@ gmbus_xfer_write(struct drm_i915_private *i915, struct 
> i2c_msg *msg,
>       int ret;
>  
>       do {
> -             len = min(tx_size, gmbus_max_xfer_size(i915));
> +             len = min(tx_size, gmbus_max_xfer_size(display));
>  
> -             ret = gmbus_xfer_write_chunk(i915, msg->addr, buf, len,
> +             ret = gmbus_xfer_write_chunk(display, msg->addr, buf, len,
>                                            gmbus1_index);
>               if (ret)
>                       return ret;
> @@ -586,7 +594,7 @@ gmbus_is_index_xfer(struct i2c_msg *msgs, int i, int num)
>  }
>  
>  static int
> -gmbus_index_xfer(struct drm_i915_private *i915, struct i2c_msg *msgs,
> +gmbus_index_xfer(struct intel_display *display, struct i2c_msg *msgs,
>                u32 gmbus0_reg)
>  {
>       u32 gmbus1_index = 0;
> @@ -602,17 +610,17 @@ gmbus_index_xfer(struct drm_i915_private *i915, struct 
> i2c_msg *msgs,
>  
>       /* GMBUS5 holds 16-bit index */
>       if (gmbus5)
> -             intel_de_write_fw(i915, GMBUS5(i915), gmbus5);
> +             intel_de_write_fw(display, GMBUS5(display), gmbus5);
>  
>       if (msgs[1].flags & I2C_M_RD)
> -             ret = gmbus_xfer_read(i915, &msgs[1], gmbus0_reg,
> +             ret = gmbus_xfer_read(display, &msgs[1], gmbus0_reg,
>                                     gmbus1_index);
>       else
> -             ret = gmbus_xfer_write(i915, &msgs[1], gmbus1_index);
> +             ret = gmbus_xfer_write(display, &msgs[1], gmbus1_index);
>  
>       /* Clear GMBUS5 after each index transfer */
>       if (gmbus5)
> -             intel_de_write_fw(i915, GMBUS5(i915), 0);
> +             intel_de_write_fw(display, GMBUS5(display), 0);
>  
>       return ret;
>  }
> @@ -622,34 +630,35 @@ do_gmbus_xfer(struct i2c_adapter *adapter, struct 
> i2c_msg *msgs, int num,
>             u32 gmbus0_source)
>  {
>       struct intel_gmbus *bus = to_intel_gmbus(adapter);
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
> +     struct drm_i915_private *i915 = to_i915(display->drm);
>       int i = 0, inc, try = 0;
>       int ret = 0;
>  
>       /* Display WA #0868: skl,bxt,kbl,cfl,glk */
>       if (IS_GEMINILAKE(i915) || IS_BROXTON(i915))
> -             bxt_gmbus_clock_gating(i915, false);
> +             bxt_gmbus_clock_gating(display, false);
>       else if (HAS_PCH_SPT(i915) || HAS_PCH_CNP(i915))
> -             pch_gmbus_clock_gating(i915, false);
> +             pch_gmbus_clock_gating(display, false);
>  
>  retry:
> -     intel_de_write_fw(i915, GMBUS0(i915), gmbus0_source | bus->reg0);
> +     intel_de_write_fw(display, GMBUS0(display), gmbus0_source | bus->reg0);
>  
>       for (; i < num; i += inc) {
>               inc = 1;
>               if (gmbus_is_index_xfer(msgs, i, num)) {
> -                     ret = gmbus_index_xfer(i915, &msgs[i],
> +                     ret = gmbus_index_xfer(display, &msgs[i],
>                                              gmbus0_source | bus->reg0);
>                       inc = 2; /* an index transmission is two msgs */
>               } else if (msgs[i].flags & I2C_M_RD) {
> -                     ret = gmbus_xfer_read(i915, &msgs[i],
> +                     ret = gmbus_xfer_read(display, &msgs[i],
>                                             gmbus0_source | bus->reg0, 0);
>               } else {
> -                     ret = gmbus_xfer_write(i915, &msgs[i], 0);
> +                     ret = gmbus_xfer_write(display, &msgs[i], 0);
>               }
>  
>               if (!ret)
> -                     ret = gmbus_wait(i915,
> +                     ret = gmbus_wait(display,
>                                        GMBUS_HW_WAIT_PHASE, GMBUS_HW_WAIT_EN);
>               if (ret == -ETIMEDOUT)
>                       goto timeout;
> @@ -661,19 +670,19 @@ do_gmbus_xfer(struct i2c_adapter *adapter, struct 
> i2c_msg *msgs, int num,
>        * a STOP on the very first cycle. To simplify the code we
>        * unconditionally generate the STOP condition with an additional gmbus
>        * cycle. */
> -     intel_de_write_fw(i915, GMBUS1(i915), GMBUS_CYCLE_STOP | GMBUS_SW_RDY);
> +     intel_de_write_fw(display, GMBUS1(display), GMBUS_CYCLE_STOP | 
> GMBUS_SW_RDY);
>  
>       /* Mark the GMBUS interface as disabled after waiting for idle.
>        * We will re-enable it at the start of the next xfer,
>        * till then let it sleep.
>        */
> -     if (gmbus_wait_idle(i915)) {
> -             drm_dbg_kms(&i915->drm,
> +     if (gmbus_wait_idle(display)) {
> +             drm_dbg_kms(display->drm,
>                           "GMBUS [%s] timed out waiting for idle\n",
>                           adapter->name);
>               ret = -ETIMEDOUT;
>       }
> -     intel_de_write_fw(i915, GMBUS0(i915), 0);
> +     intel_de_write_fw(display, GMBUS0(display), 0);
>       ret = ret ?: i;
>       goto out;
>  
> @@ -692,8 +701,8 @@ do_gmbus_xfer(struct i2c_adapter *adapter, struct i2c_msg 
> *msgs, int num,
>        * it's slow responding and only answers on the 2nd retry.
>        */
>       ret = -ENXIO;
> -     if (gmbus_wait_idle(i915)) {
> -             drm_dbg_kms(&i915->drm,
> +     if (gmbus_wait_idle(display)) {
> +             drm_dbg_kms(display->drm,
>                           "GMBUS [%s] timed out after NAK\n",
>                           adapter->name);
>               ret = -ETIMEDOUT;
> @@ -703,11 +712,11 @@ do_gmbus_xfer(struct i2c_adapter *adapter, struct 
> i2c_msg *msgs, int num,
>        * of resetting the GMBUS controller and so clearing the
>        * BUS_ERROR raised by the target's NAK.
>        */
> -     intel_de_write_fw(i915, GMBUS1(i915), GMBUS_SW_CLR_INT);
> -     intel_de_write_fw(i915, GMBUS1(i915), 0);
> -     intel_de_write_fw(i915, GMBUS0(i915), 0);
> +     intel_de_write_fw(display, GMBUS1(display), GMBUS_SW_CLR_INT);
> +     intel_de_write_fw(display, GMBUS1(display), 0);
> +     intel_de_write_fw(display, GMBUS0(display), 0);
>  
> -     drm_dbg_kms(&i915->drm, "GMBUS [%s] NAK for addr: %04x %c(%d)\n",
> +     drm_dbg_kms(display->drm, "GMBUS [%s] NAK for addr: %04x %c(%d)\n",
>                   adapter->name, msgs[i].addr,
>                   (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len);
>  
> @@ -718,7 +727,7 @@ do_gmbus_xfer(struct i2c_adapter *adapter, struct i2c_msg 
> *msgs, int num,
>        * drm_do_probe_ddc_edid, which bails out on the first -ENXIO.
>        */
>       if (ret == -ENXIO && i == 0 && try++ == 0) {
> -             drm_dbg_kms(&i915->drm,
> +             drm_dbg_kms(display->drm,
>                           "GMBUS [%s] NAK on first message, retry\n",
>                           adapter->name);
>               goto retry;
> @@ -727,10 +736,10 @@ do_gmbus_xfer(struct i2c_adapter *adapter, struct 
> i2c_msg *msgs, int num,
>       goto out;
>  
>  timeout:
> -     drm_dbg_kms(&i915->drm,
> +     drm_dbg_kms(display->drm,
>                   "GMBUS [%s] timed out, falling back to bit banging on pin 
> %d\n",
>                   bus->adapter.name, bus->reg0 & 0xff);
> -     intel_de_write_fw(i915, GMBUS0(i915), 0);
> +     intel_de_write_fw(display, GMBUS0(display), 0);
>  
>       /*
>        * Hardware may not support GMBUS over these pins? Try GPIO bitbanging
> @@ -741,9 +750,9 @@ do_gmbus_xfer(struct i2c_adapter *adapter, struct i2c_msg 
> *msgs, int num,
>  out:
>       /* Display WA #0868: skl,bxt,kbl,cfl,glk */
>       if (IS_GEMINILAKE(i915) || IS_BROXTON(i915))
> -             bxt_gmbus_clock_gating(i915, true);
> +             bxt_gmbus_clock_gating(display, true);
>       else if (HAS_PCH_SPT(i915) || HAS_PCH_CNP(i915))
> -             pch_gmbus_clock_gating(i915, true);
> +             pch_gmbus_clock_gating(display, true);
>  
>       return ret;
>  }
> @@ -752,7 +761,8 @@ static int
>  gmbus_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num)
>  {
>       struct intel_gmbus *bus = to_intel_gmbus(adapter);
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
> +     struct drm_i915_private *i915 = to_i915(display->drm);
>       intel_wakeref_t wakeref;
>       int ret;
>  
> @@ -776,7 +786,8 @@ gmbus_xfer(struct i2c_adapter *adapter, struct i2c_msg 
> *msgs, int num)
>  int intel_gmbus_output_aksv(struct i2c_adapter *adapter)
>  {
>       struct intel_gmbus *bus = to_intel_gmbus(adapter);
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
> +     struct drm_i915_private *i915 = to_i915(display->drm);
>       u8 cmd = DRM_HDCP_DDC_AKSV;
>       u8 buf[DRM_HDCP_KSV_LEN] = {};
>       struct i2c_msg msgs[] = {
> @@ -797,7 +808,7 @@ int intel_gmbus_output_aksv(struct i2c_adapter *adapter)
>       int ret;
>  
>       wakeref = intel_display_power_get(i915, POWER_DOMAIN_GMBUS);
> -     mutex_lock(&i915->display.gmbus.mutex);
> +     mutex_lock(&display->gmbus.mutex);
>  
>       /*
>        * In order to output Aksv to the receiver, use an indexed write to
> @@ -806,7 +817,7 @@ int intel_gmbus_output_aksv(struct i2c_adapter *adapter)
>        */
>       ret = do_gmbus_xfer(adapter, msgs, ARRAY_SIZE(msgs), GMBUS_AKSV_SELECT);
>  
> -     mutex_unlock(&i915->display.gmbus.mutex);
> +     mutex_unlock(&display->gmbus.mutex);
>       intel_display_power_put(i915, POWER_DOMAIN_GMBUS, wakeref);
>  
>       return ret;
> @@ -830,27 +841,27 @@ static void gmbus_lock_bus(struct i2c_adapter *adapter,
>                          unsigned int flags)
>  {
>       struct intel_gmbus *bus = to_intel_gmbus(adapter);
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
>  
> -     mutex_lock(&i915->display.gmbus.mutex);
> +     mutex_lock(&display->gmbus.mutex);
>  }
>  
>  static int gmbus_trylock_bus(struct i2c_adapter *adapter,
>                            unsigned int flags)
>  {
>       struct intel_gmbus *bus = to_intel_gmbus(adapter);
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
>  
> -     return mutex_trylock(&i915->display.gmbus.mutex);
> +     return mutex_trylock(&display->gmbus.mutex);
>  }
>  
>  static void gmbus_unlock_bus(struct i2c_adapter *adapter,
>                            unsigned int flags)
>  {
>       struct intel_gmbus *bus = to_intel_gmbus(adapter);
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
>  
> -     mutex_unlock(&i915->display.gmbus.mutex);
> +     mutex_unlock(&display->gmbus.mutex);
>  }
>  
>  static const struct i2c_lock_operations gmbus_lock_ops = {
> @@ -861,31 +872,32 @@ static const struct i2c_lock_operations gmbus_lock_ops 
> = {
>  
>  /**
>   * intel_gmbus_setup - instantiate all Intel i2c GMBuses
> - * @i915: i915 device private
> + * @display: display device
>   */
> -int intel_gmbus_setup(struct drm_i915_private *i915)
> +int intel_gmbus_setup(struct intel_display *display)
>  {
> -     struct pci_dev *pdev = to_pci_dev(i915->drm.dev);
> +     struct drm_i915_private *i915 = to_i915(display->drm);
> +     struct pci_dev *pdev = to_pci_dev(display->drm->dev);
>       unsigned int pin;
>       int ret;
>  
>       if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915))
> -             i915->display.gmbus.mmio_base = VLV_DISPLAY_BASE;
> -     else if (!HAS_GMCH(i915))
> +             display->gmbus.mmio_base = VLV_DISPLAY_BASE;
> +     else if (!HAS_GMCH(display))
>               /*
>                * Broxton uses the same PCH offsets for South Display Engine,
>                * even though it doesn't have a PCH.
>                */
> -             i915->display.gmbus.mmio_base = PCH_DISPLAY_BASE;
> +             display->gmbus.mmio_base = PCH_DISPLAY_BASE;
>  
> -     mutex_init(&i915->display.gmbus.mutex);
> -     init_waitqueue_head(&i915->display.gmbus.wait_queue);
> +     mutex_init(&display->gmbus.mutex);
> +     init_waitqueue_head(&display->gmbus.wait_queue);
>  
> -     for (pin = 0; pin < ARRAY_SIZE(i915->display.gmbus.bus); pin++) {
> +     for (pin = 0; pin < ARRAY_SIZE(display->gmbus.bus); pin++) {
>               const struct gmbus_pin *gmbus_pin;
>               struct intel_gmbus *bus;
>  
> -             gmbus_pin = get_gmbus_pin(i915, pin);
> +             gmbus_pin = get_gmbus_pin(display, pin);
>               if (!gmbus_pin)
>                       continue;
>  
> @@ -901,7 +913,7 @@ int intel_gmbus_setup(struct drm_i915_private *i915)
>                        "i915 gmbus %s", gmbus_pin->name);
>  
>               bus->adapter.dev.parent = &pdev->dev;
> -             bus->i915 = i915;
> +             bus->display = display;
>  
>               bus->adapter.algo = &gmbus_algorithm;
>               bus->adapter.lock_ops = &gmbus_lock_ops;
> @@ -919,7 +931,7 @@ int intel_gmbus_setup(struct drm_i915_private *i915)
>               if (IS_I830(i915))
>                       bus->force_bit = 1;
>  
> -             intel_gpio_setup(bus, GPIO(i915, gmbus_pin->gpio));
> +             intel_gpio_setup(bus, GPIO(display, gmbus_pin->gpio));
>  
>               ret = i2c_add_adapter(&bus->adapter);
>               if (ret) {
> @@ -927,43 +939,43 @@ int intel_gmbus_setup(struct drm_i915_private *i915)
>                       goto err;
>               }
>  
> -             i915->display.gmbus.bus[pin] = bus;
> +             display->gmbus.bus[pin] = bus;
>       }
>  
> -     intel_gmbus_reset(i915);
> +     intel_gmbus_reset(display);
>  
>       return 0;
>  
>  err:
> -     intel_gmbus_teardown(i915);
> +     intel_gmbus_teardown(display);
>  
>       return ret;
>  }
>  
> -struct i2c_adapter *intel_gmbus_get_adapter(struct drm_i915_private *i915,
> +struct i2c_adapter *intel_gmbus_get_adapter(struct intel_display *display,
>                                           unsigned int pin)
>  {
> -     if (drm_WARN_ON(&i915->drm, pin >= ARRAY_SIZE(i915->display.gmbus.bus) 
> ||
> -                     !i915->display.gmbus.bus[pin]))
> +     if (drm_WARN_ON(display->drm, pin >= ARRAY_SIZE(display->gmbus.bus) ||
> +                     !display->gmbus.bus[pin]))
>               return NULL;
>  
> -     return &i915->display.gmbus.bus[pin]->adapter;
> +     return &display->gmbus.bus[pin]->adapter;
>  }
>  
>  void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit)
>  {
>       struct intel_gmbus *bus = to_intel_gmbus(adapter);
> -     struct drm_i915_private *i915 = bus->i915;
> +     struct intel_display *display = bus->display;
>  
> -     mutex_lock(&i915->display.gmbus.mutex);
> +     mutex_lock(&display->gmbus.mutex);
>  
>       bus->force_bit += force_bit ? 1 : -1;
> -     drm_dbg_kms(&i915->drm,
> +     drm_dbg_kms(display->drm,
>                   "%sabling bit-banging on %s. force bit now %d\n",
>                   force_bit ? "en" : "dis", adapter->name,
>                   bus->force_bit);
>  
> -     mutex_unlock(&i915->display.gmbus.mutex);
> +     mutex_unlock(&display->gmbus.mutex);
>  }
>  
>  bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter)
> @@ -973,25 +985,25 @@ bool intel_gmbus_is_forced_bit(struct i2c_adapter 
> *adapter)
>       return bus->force_bit;
>  }
>  
> -void intel_gmbus_teardown(struct drm_i915_private *i915)
> +void intel_gmbus_teardown(struct intel_display *display)
>  {
>       unsigned int pin;
>  
> -     for (pin = 0; pin < ARRAY_SIZE(i915->display.gmbus.bus); pin++) {
> +     for (pin = 0; pin < ARRAY_SIZE(display->gmbus.bus); pin++) {
>               struct intel_gmbus *bus;
>  
> -             bus = i915->display.gmbus.bus[pin];
> +             bus = display->gmbus.bus[pin];
>               if (!bus)
>                       continue;
>  
>               i2c_del_adapter(&bus->adapter);
>  
>               kfree(bus);
> -             i915->display.gmbus.bus[pin] = NULL;
> +             display->gmbus.bus[pin] = NULL;
>       }
>  }
>  
> -void intel_gmbus_irq_handler(struct drm_i915_private *i915)
> +void intel_gmbus_irq_handler(struct intel_display *display)
>  {
> -     wake_up_all(&i915->display.gmbus.wait_queue);
> +     wake_up_all(&display->gmbus.wait_queue);
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_gmbus.h 
> b/drivers/gpu/drm/i915/display/intel_gmbus.h
> index 8111eb23e2af..35a200a9efc0 100644
> --- a/drivers/gpu/drm/i915/display/intel_gmbus.h
> +++ b/drivers/gpu/drm/i915/display/intel_gmbus.h
> @@ -8,8 +8,8 @@
>  
>  #include <linux/types.h>
>  
> -struct drm_i915_private;
>  struct i2c_adapter;
> +struct intel_display;
>  
>  #define GMBUS_PIN_DISABLED   0
>  #define GMBUS_PIN_SSC                1
> @@ -34,18 +34,17 @@ struct i2c_adapter;
>  
>  #define GMBUS_NUM_PINS       15 /* including 0 */
>  
> -int intel_gmbus_setup(struct drm_i915_private *dev_priv);
> -void intel_gmbus_teardown(struct drm_i915_private *dev_priv);
> -bool intel_gmbus_is_valid_pin(struct drm_i915_private *dev_priv,
> -                           unsigned int pin);
> +int intel_gmbus_setup(struct intel_display *display);
> +void intel_gmbus_teardown(struct intel_display *display);
> +bool intel_gmbus_is_valid_pin(struct intel_display *display, unsigned int 
> pin);
>  int intel_gmbus_output_aksv(struct i2c_adapter *adapter);
>  
>  struct i2c_adapter *
> -intel_gmbus_get_adapter(struct drm_i915_private *dev_priv, unsigned int pin);
> +intel_gmbus_get_adapter(struct intel_display *display, unsigned int pin);
>  void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit);
>  bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter);
> -void intel_gmbus_reset(struct drm_i915_private *dev_priv);
> +void intel_gmbus_reset(struct intel_display *display);
>  
> -void intel_gmbus_irq_handler(struct drm_i915_private *i915);
> +void intel_gmbus_irq_handler(struct intel_display *display);
>  
>  #endif /* __INTEL_GMBUS_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_gmbus_regs.h 
> b/drivers/gpu/drm/i915/display/intel_gmbus_regs.h
> index 53aacbda983c..59bad1dda6d6 100644
> --- a/drivers/gpu/drm/i915/display/intel_gmbus_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_gmbus_regs.h
> @@ -8,9 +8,9 @@
>  
>  #include "i915_reg_defs.h"
>  
> -#define GMBUS_MMIO_BASE(__i915) ((__i915)->display.gmbus.mmio_base)
> +#define __GMBUS_MMIO_BASE(__display) ((__display)->gmbus.mmio_base)
>  
> -#define GPIO(__i915, gpio)   _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5010 + 4 * 
> (gpio))
> +#define GPIO(__display, gpio)        _MMIO(__GMBUS_MMIO_BASE(__display) + 
> 0x5010 + 4 * (gpio))
>  #define   GPIO_CLOCK_DIR_MASK                (1 << 0)
>  #define   GPIO_CLOCK_DIR_IN          (0 << 1)
>  #define   GPIO_CLOCK_DIR_OUT         (1 << 1)
> @@ -27,7 +27,7 @@
>  #define   GPIO_DATA_PULLUP_DISABLE   (1 << 13)
>  
>  /* clock/port select */
> -#define GMBUS0(__i915)               _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5100)
> +#define GMBUS0(__display)    _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5100)
>  #define   GMBUS_AKSV_SELECT          (1 << 11)
>  #define   GMBUS_RATE_100KHZ          (0 << 8)
>  #define   GMBUS_RATE_50KHZ           (1 << 8)
> @@ -37,7 +37,7 @@
>  #define   GMBUS_BYTE_CNT_OVERRIDE    (1 << 6)
>  
>  /* command/status */
> -#define GMBUS1(__i915)               _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5104)
> +#define GMBUS1(__display)    _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5104)
>  #define   GMBUS_SW_CLR_INT           (1 << 31)
>  #define   GMBUS_SW_RDY                       (1 << 30)
>  #define   GMBUS_ENT                  (1 << 29) /* enable timeout */
> @@ -54,7 +54,7 @@
>  #define   GMBUS_SLAVE_WRITE          (0 << 0)
>  
>  /* status */
> -#define GMBUS2(__i915)               _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5108)
> +#define GMBUS2(__display)    _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5108)
>  #define   GMBUS_INUSE                        (1 << 15)
>  #define   GMBUS_HW_WAIT_PHASE                (1 << 14)
>  #define   GMBUS_STALL_TIMEOUT                (1 << 13)
> @@ -64,10 +64,10 @@
>  #define   GMBUS_ACTIVE                       (1 << 9)
>  
>  /* data buffer bytes 3-0 */
> -#define GMBUS3(__i915)               _MMIO(GMBUS_MMIO_BASE(__i915) + 0x510c)
> +#define GMBUS3(__display)    _MMIO(__GMBUS_MMIO_BASE(__display) + 0x510c)
>  
>  /* interrupt mask (Pineview+) */
> -#define GMBUS4(__i915)               _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5110)
> +#define GMBUS4(__display)    _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5110)
>  #define   GMBUS_SLAVE_TIMEOUT_EN     (1 << 4)
>  #define   GMBUS_NAK_EN                       (1 << 3)
>  #define   GMBUS_IDLE_EN                      (1 << 2)
> @@ -75,7 +75,7 @@
>  #define   GMBUS_HW_RDY_EN            (1 << 0)
>  
>  /* byte index */
> -#define GMBUS5(__i915)               _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5120)
> +#define GMBUS5(__display)    _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5120)
>  #define   GMBUS_2BYTE_INDEX_EN               (1 << 31)
>  
>  #endif /* __INTEL_GMBUS_REGS_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c 
> b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 72ac910bf6ec..022ba3635101 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -2917,7 +2917,6 @@ static struct intel_encoder *
>  get_encoder_by_ddc_pin(struct intel_encoder *encoder, u8 ddc_pin)
>  {
>       struct intel_display *display = to_intel_display(encoder);
> -     struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>       struct intel_encoder *other;
>  
>       for_each_intel_encoder(display->drm, other) {
> @@ -2931,7 +2930,7 @@ get_encoder_by_ddc_pin(struct intel_encoder *encoder, 
> u8 ddc_pin)
>  
>               connector = enc_to_dig_port(other)->hdmi.attached_connector;
>  
> -             if (connector && connector->base.ddc == 
> intel_gmbus_get_adapter(i915, ddc_pin))
> +             if (connector && connector->base.ddc == 
> intel_gmbus_get_adapter(display, ddc_pin))
>                       return other;
>       }
>  
> @@ -2941,7 +2940,6 @@ get_encoder_by_ddc_pin(struct intel_encoder *encoder, 
> u8 ddc_pin)
>  static u8 intel_hdmi_ddc_pin(struct intel_encoder *encoder)
>  {
>       struct intel_display *display = to_intel_display(encoder);
> -     struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>       struct intel_encoder *other;
>       const char *source;
>       u8 ddc_pin;
> @@ -2954,7 +2952,7 @@ static u8 intel_hdmi_ddc_pin(struct intel_encoder 
> *encoder)
>               source = "platform default";
>       }
>  
> -     if (!intel_gmbus_is_valid_pin(i915, ddc_pin)) {
> +     if (!intel_gmbus_is_valid_pin(display, ddc_pin)) {
>               drm_dbg_kms(display->drm,
>                           "[ENCODER:%d:%s] Invalid DDC pin %d\n",
>                           encoder->base.base.id, encoder->base.name, ddc_pin);
> @@ -3052,7 +3050,7 @@ void intel_hdmi_init_connector(struct 
> intel_digital_port *dig_port,
>       drm_connector_init_with_ddc(dev, connector,
>                                   &intel_hdmi_connector_funcs,
>                                   DRM_MODE_CONNECTOR_HDMIA,
> -                                 intel_gmbus_get_adapter(dev_priv, ddc_pin));
> +                                 intel_gmbus_get_adapter(display, ddc_pin));
>  
>       drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c 
> b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c
> index 5d055dc9366f..cb64c6f0ad1b 100644
> --- a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c
> +++ b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c
> @@ -556,6 +556,7 @@ void xelpdp_pica_irq_handler(struct drm_i915_private 
> *i915, u32 iir)
>  
>  void icp_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
>  {
> +     struct intel_display *display = &dev_priv->display;
>       u32 ddi_hotplug_trigger = pch_iir & SDE_DDI_HOTPLUG_MASK_ICP;
>       u32 tc_hotplug_trigger = pch_iir & SDE_TC_HOTPLUG_MASK_ICP;
>       u32 pin_mask = 0, long_mask = 0;
> @@ -589,11 +590,12 @@ void icp_irq_handler(struct drm_i915_private *dev_priv, 
> u32 pch_iir)
>               intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
>  
>       if (pch_iir & SDE_GMBUS_ICP)
> -             intel_gmbus_irq_handler(dev_priv);
> +             intel_gmbus_irq_handler(display);
>  }
>  
>  void spt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
>  {
> +     struct intel_display *display = &dev_priv->display;
>       u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_SPT &
>               ~SDE_PORTE_HOTPLUG_SPT;
>       u32 hotplug2_trigger = pch_iir & SDE_PORTE_HOTPLUG_SPT;
> @@ -625,7 +627,7 @@ void spt_irq_handler(struct drm_i915_private *dev_priv, 
> u32 pch_iir)
>               intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
>  
>       if (pch_iir & SDE_GMBUS_CPT)
> -             intel_gmbus_irq_handler(dev_priv);
> +             intel_gmbus_irq_handler(display);
>  }
>  
>  void ilk_hpd_irq_handler(struct drm_i915_private *dev_priv, u32 
> hotplug_trigger)
> diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c 
> b/drivers/gpu/drm/i915/display/intel_lvds.c
> index 5f753ee743c6..96fa238b461d 100644
> --- a/drivers/gpu/drm/i915/display/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/display/intel_lvds.c
> @@ -900,7 +900,7 @@ void intel_lvds_init(struct drm_i915_private *i915)
>       drm_connector_init_with_ddc(&i915->drm, &connector->base,
>                                   &intel_lvds_connector_funcs,
>                                   DRM_MODE_CONNECTOR_LVDS,
> -                                 intel_gmbus_get_adapter(i915, ddc_pin));
> +                                 intel_gmbus_get_adapter(display, ddc_pin));
>  
>       drm_encoder_init(&i915->drm, &encoder->base, &intel_lvds_enc_funcs,
>                        DRM_MODE_ENCODER_LVDS, "LVDS");
> diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c 
> b/drivers/gpu/drm/i915/display/intel_sdvo.c
> index b83bf813677d..7a28104f68ad 100644
> --- a/drivers/gpu/drm/i915/display/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
> @@ -2082,10 +2082,10 @@ intel_sdvo_get_edid(struct drm_connector *connector)
>  static const struct drm_edid *
>  intel_sdvo_get_analog_edid(struct drm_connector *connector)
>  {
> -     struct drm_i915_private *i915 = to_i915(connector->dev);
> +     struct intel_display *display = to_intel_display(connector->dev);
>       struct i2c_adapter *ddc;
>  
> -     ddc = intel_gmbus_get_adapter(i915, i915->display.vbt.crt_ddc_pin);
> +     ddc = intel_gmbus_get_adapter(display, display->vbt.crt_ddc_pin);
>       if (!ddc)
>               return NULL;
>  
> @@ -2638,6 +2638,7 @@ intel_sdvo_select_ddc_bus(struct intel_sdvo *sdvo,
>  static void
>  intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo)
>  {
> +     struct intel_display *display = to_intel_display(&sdvo->base);
>       struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev);
>       const struct sdvo_device_mapping *mapping;
>       u8 pin;
> @@ -2648,7 +2649,7 @@ intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo)
>               mapping = &dev_priv->display.vbt.sdvo_mappings[1];
>  
>       if (mapping->initialized &&
> -         intel_gmbus_is_valid_pin(dev_priv, mapping->i2c_pin))
> +         intel_gmbus_is_valid_pin(display, mapping->i2c_pin))
>               pin = mapping->i2c_pin;
>       else
>               pin = GMBUS_PIN_DPB;
> @@ -2657,7 +2658,7 @@ intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo)
>                   sdvo->base.base.base.id, sdvo->base.base.name,
>                   pin, sdvo->target_addr);
>  
> -     sdvo->i2c = intel_gmbus_get_adapter(dev_priv, pin);
> +     sdvo->i2c = intel_gmbus_get_adapter(display, pin);
>  
>       /*
>        * With gmbus we should be able to drive sdvo i2c at 2MHz, but somehow
> diff --git a/drivers/gpu/drm/i915/i915_suspend.c 
> b/drivers/gpu/drm/i915/i915_suspend.c
> index 9d3d9b983032..f18f1acf2158 100644
> --- a/drivers/gpu/drm/i915/i915_suspend.c
> +++ b/drivers/gpu/drm/i915/i915_suspend.c
> @@ -137,5 +137,5 @@ void i915_restore_display(struct drm_i915_private 
> *dev_priv)
>  
>       intel_vga_redisable(display);
>  
> -     intel_gmbus_reset(dev_priv);
> +     intel_gmbus_reset(display);
>  }
> -- 
> 2.39.5
> 

Reply via email to