[Intel-gfx] [PATCH] drm/i915: Organize VBT stuff inside drm_i915_private
Rodrigo Vivi
rodrigo.vivi at gmail.com
Fri May 10 00:58:10 CEST 2013
Hi Daniel,
This patch is a prep one for PSR series and had been reviewed by Ville already.
I'm sending it standalone because it's been a pain to rebase psr work,
because this one always conflicts.
Since I solved many conflicts during the way probably Ville would like
to give a second look.
Anyway, it would be good if you could merge this one already.
Thanks
On Thu, May 9, 2013 at 7:53 PM, Rodrigo Vivi <rodrigo.vivi at gmail.com> wrote:
> drm_i915_private is getting bigger and bigger when adding new vbt stuff.
> So, the better way of getting drm_i915_private organized is to create
> a special structure for vbt stuff.
>
> Reviewed-by: Jani Nikula <jani.nikula at intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at gmail.com>
> ---
> drivers/gpu/drm/i915/i915_dma.c | 8 +--
> drivers/gpu/drm/i915/i915_drv.h | 57 +++++++++++---------
> drivers/gpu/drm/i915/intel_bios.c | 100 +++++++++++++++++------------------
> drivers/gpu/drm/i915/intel_crt.c | 4 +-
> drivers/gpu/drm/i915/intel_display.c | 12 ++---
> drivers/gpu/drm/i915/intel_dp.c | 18 +++----
> drivers/gpu/drm/i915/intel_lvds.c | 16 +++---
> drivers/gpu/drm/i915/intel_sdvo.c | 6 +--
> drivers/gpu/drm/i915/intel_tv.c | 8 +--
> 9 files changed, 118 insertions(+), 111 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> index a1648eb..f5addac 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -1742,10 +1742,10 @@ int i915_driver_unload(struct drm_device *dev)
> * free the memory space allocated for the child device
> * config parsed from VBT
> */
> - if (dev_priv->child_dev && dev_priv->child_dev_num) {
> - kfree(dev_priv->child_dev);
> - dev_priv->child_dev = NULL;
> - dev_priv->child_dev_num = 0;
> + if (dev_priv->vbt.child_dev && dev_priv->vbt.child_dev_num) {
> + kfree(dev_priv->vbt.child_dev);
> + dev_priv->vbt.child_dev = NULL;
> + dev_priv->vbt.child_dev_num = 0;
> }
>
> vga_switcheroo_unregister_client(dev->pdev);
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index ab172c2..10d0fc4 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -889,6 +889,37 @@ enum modeset_restore {
> MODESET_SUSPENDED,
> };
>
> +struct intel_vbt_data {
> + struct drm_display_mode *lfp_lvds_vbt_mode; /* if any */
> + struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */
> +
> + /* Feature bits */
> + unsigned int int_tv_support:1;
> + unsigned int lvds_dither:1;
> + unsigned int lvds_vbt:1;
> + unsigned int int_crt_support:1;
> + unsigned int lvds_use_ssc:1;
> + unsigned int display_clock_mode:1;
> + unsigned int fdi_rx_polarity_inverted:1;
> + int lvds_ssc_freq;
> + unsigned int bios_lvds_val; /* initial [PCH_]LVDS reg val in VBIOS */
> +
> + /* eDP */
> + int edp_rate;
> + int edp_lanes;
> + int edp_preemphasis;
> + int edp_vswing;
> + bool edp_initialized;
> + bool edp_support;
> + int edp_bpp;
> + struct edp_power_seq edp_pps;
> +
> + int crt_ddc_pin;
> +
> + int child_dev_num;
> + struct child_device_config *child_dev;
> +};
> +
> typedef struct drm_i915_private {
> struct drm_device *dev;
> struct kmem_cache *slab;
> @@ -968,6 +999,7 @@ typedef struct drm_i915_private {
> struct intel_fbc_work *fbc_work;
>
> struct intel_opregion opregion;
> + struct intel_vbt_data vbt;
>
> /* overlay */
> struct intel_overlay *overlay;
> @@ -984,31 +1016,8 @@ typedef struct drm_i915_private {
> /* LVDS info */
> struct drm_display_mode *lfp_lvds_vbt_mode; /* if any */
> struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */
> -
> - /* Feature bits from the VBIOS */
> - unsigned int int_tv_support:1;
> - unsigned int lvds_dither:1;
> - unsigned int lvds_vbt:1;
> - unsigned int int_crt_support:1;
> - unsigned int lvds_use_ssc:1;
> - unsigned int display_clock_mode:1;
> - unsigned int fdi_rx_polarity_inverted:1;
> - int lvds_ssc_freq;
> - unsigned int bios_lvds_val; /* initial [PCH_]LVDS reg val in VBIOS */
> - struct {
> - int rate;
> - int lanes;
> - int preemphasis;
> - int vswing;
> -
> - bool initialized;
> - bool support;
> - int bpp;
> - struct edp_power_seq pps;
> - } edp;
> bool no_aux_handshake;
>
> - int crt_ddc_pin;
> struct drm_i915_fence_reg fence_regs[I915_MAX_NUM_FENCES]; /* assume 965 */
> int fence_reg_start; /* 4 if userland hasn't ioctl'd us yet */
> int num_fence_regs; /* 8 on pre-965, 16 otherwise */
> @@ -1050,8 +1059,6 @@ typedef struct drm_i915_private {
> /* indicates the reduced downclock for LVDS*/
> int lvds_downclock;
> u16 orig_clock;
> - int child_dev_num;
> - struct child_device_config *child_dev;
>
> bool mchbar_need_disable;
>
> diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
> index 95070b2..53f2bed 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -212,7 +212,7 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv,
> if (!lvds_options)
> return;
>
> - dev_priv->lvds_dither = lvds_options->pixel_dither;
> + dev_priv->vbt.lvds_dither = lvds_options->pixel_dither;
> if (lvds_options->panel_type == 0xff)
> return;
>
> @@ -226,7 +226,7 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv,
> if (!lvds_lfp_data_ptrs)
> return;
>
> - dev_priv->lvds_vbt = 1;
> + dev_priv->vbt.lvds_vbt = 1;
>
> panel_dvo_timing = get_lvds_dvo_timing(lvds_lfp_data,
> lvds_lfp_data_ptrs,
> @@ -238,7 +238,7 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv,
>
> fill_detail_timing_data(panel_fixed_mode, panel_dvo_timing);
>
> - dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode;
> + dev_priv->vbt.lfp_lvds_vbt_mode = panel_fixed_mode;
>
> DRM_DEBUG_KMS("Found panel mode in BIOS VBT tables:\n");
> drm_mode_debug_printmodeline(panel_fixed_mode);
> @@ -274,9 +274,9 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv,
> /* check the resolution, just to be sure */
> if (fp_timing->x_res == panel_fixed_mode->hdisplay &&
> fp_timing->y_res == panel_fixed_mode->vdisplay) {
> - dev_priv->bios_lvds_val = fp_timing->lvds_reg_val;
> + dev_priv->vbt.bios_lvds_val = fp_timing->lvds_reg_val;
> DRM_DEBUG_KMS("VBT initial LVDS value %x\n",
> - dev_priv->bios_lvds_val);
> + dev_priv->vbt.bios_lvds_val);
> }
> }
> }
> @@ -316,7 +316,7 @@ parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
>
> fill_detail_timing_data(panel_fixed_mode, dvo_timing + index);
>
> - dev_priv->sdvo_lvds_vbt_mode = panel_fixed_mode;
> + dev_priv->vbt.sdvo_lvds_vbt_mode = panel_fixed_mode;
>
> DRM_DEBUG_KMS("Found SDVO panel mode in BIOS VBT tables:\n");
> drm_mode_debug_printmodeline(panel_fixed_mode);
> @@ -345,20 +345,20 @@ parse_general_features(struct drm_i915_private *dev_priv,
>
> general = find_section(bdb, BDB_GENERAL_FEATURES);
> if (general) {
> - dev_priv->int_tv_support = general->int_tv_support;
> - dev_priv->int_crt_support = general->int_crt_support;
> - dev_priv->lvds_use_ssc = general->enable_ssc;
> - dev_priv->lvds_ssc_freq =
> + dev_priv->vbt.int_tv_support = general->int_tv_support;
> + dev_priv->vbt.int_crt_support = general->int_crt_support;
> + dev_priv->vbt.lvds_use_ssc = general->enable_ssc;
> + dev_priv->vbt.lvds_ssc_freq =
> intel_bios_ssc_frequency(dev, general->ssc_freq);
> - dev_priv->display_clock_mode = general->display_clock_mode;
> - dev_priv->fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted;
> + dev_priv->vbt.display_clock_mode = general->display_clock_mode;
> + dev_priv->vbt.fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted;
> DRM_DEBUG_KMS("BDB_GENERAL_FEATURES int_tv_support %d int_crt_support %d lvds_use_ssc %d lvds_ssc_freq %d display_clock_mode %d fdi_rx_polarity_inverted %d\n",
> - dev_priv->int_tv_support,
> - dev_priv->int_crt_support,
> - dev_priv->lvds_use_ssc,
> - dev_priv->lvds_ssc_freq,
> - dev_priv->display_clock_mode,
> - dev_priv->fdi_rx_polarity_inverted);
> + dev_priv->vbt.int_tv_support,
> + dev_priv->vbt.int_crt_support,
> + dev_priv->vbt.lvds_use_ssc,
> + dev_priv->vbt.lvds_ssc_freq,
> + dev_priv->vbt.display_clock_mode,
> + dev_priv->vbt.fdi_rx_polarity_inverted);
> }
> }
>
> @@ -375,7 +375,7 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
> int bus_pin = general->crt_ddc_gmbus_pin;
> DRM_DEBUG_KMS("crt_ddc_bus_pin: %d\n", bus_pin);
> if (intel_gmbus_is_port_valid(bus_pin))
> - dev_priv->crt_ddc_pin = bus_pin;
> + dev_priv->vbt.crt_ddc_pin = bus_pin;
> } else {
> DRM_DEBUG_KMS("BDB_GD too small (%d). Invalid.\n",
> block_size);
> @@ -486,7 +486,7 @@ parse_driver_features(struct drm_i915_private *dev_priv,
>
> if (SUPPORTS_EDP(dev) &&
> driver->lvds_config == BDB_DRIVER_FEATURE_EDP)
> - dev_priv->edp.support = 1;
> + dev_priv->vbt.edp_support = 1;
>
> if (driver->dual_frequency)
> dev_priv->render_reclock_avail = true;
> @@ -501,20 +501,20 @@ parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
>
> edp = find_section(bdb, BDB_EDP);
> if (!edp) {
> - if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->edp.support)
> + if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->vbt.edp_support)
> DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported.\n");
> return;
> }
>
> switch ((edp->color_depth >> (panel_type * 2)) & 3) {
> case EDP_18BPP:
> - dev_priv->edp.bpp = 18;
> + dev_priv->vbt.edp_bpp = 18;
> break;
> case EDP_24BPP:
> - dev_priv->edp.bpp = 24;
> + dev_priv->vbt.edp_bpp = 24;
> break;
> case EDP_30BPP:
> - dev_priv->edp.bpp = 30;
> + dev_priv->vbt.edp_bpp = 30;
> break;
> }
>
> @@ -522,48 +522,48 @@ parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> edp_pps = &edp->power_seqs[panel_type];
> edp_link_params = &edp->link_params[panel_type];
>
> - dev_priv->edp.pps = *edp_pps;
> + dev_priv->vbt.edp_pps = *edp_pps;
>
> - dev_priv->edp.rate = edp_link_params->rate ? DP_LINK_BW_2_7 :
> + dev_priv->vbt.edp_rate = edp_link_params->rate ? DP_LINK_BW_2_7 :
> DP_LINK_BW_1_62;
> switch (edp_link_params->lanes) {
> case 0:
> - dev_priv->edp.lanes = 1;
> + dev_priv->vbt.edp_lanes = 1;
> break;
> case 1:
> - dev_priv->edp.lanes = 2;
> + dev_priv->vbt.edp_lanes = 2;
> break;
> case 3:
> default:
> - dev_priv->edp.lanes = 4;
> + dev_priv->vbt.edp_lanes = 4;
> break;
> }
> switch (edp_link_params->preemphasis) {
> case 0:
> - dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_0;
> + dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_0;
> break;
> case 1:
> - dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_3_5;
> + dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_3_5;
> break;
> case 2:
> - dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_6;
> + dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_6;
> break;
> case 3:
> - dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_9_5;
> + dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_9_5;
> break;
> }
> switch (edp_link_params->vswing) {
> case 0:
> - dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_400;
> + dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_400;
> break;
> case 1:
> - dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_600;
> + dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_600;
> break;
> case 2:
> - dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_800;
> + dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_800;
> break;
> case 3:
> - dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_1200;
> + dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_1200;
> break;
> }
> }
> @@ -611,13 +611,13 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
> DRM_DEBUG_KMS("no child dev is parsed from VBT\n");
> return;
> }
> - dev_priv->child_dev = kcalloc(count, sizeof(*p_child), GFP_KERNEL);
> - if (!dev_priv->child_dev) {
> + dev_priv->vbt.child_dev = kcalloc(count, sizeof(*p_child), GFP_KERNEL);
> + if (!dev_priv->vbt.child_dev) {
> DRM_DEBUG_KMS("No memory space for child device\n");
> return;
> }
>
> - dev_priv->child_dev_num = count;
> + dev_priv->vbt.child_dev_num = count;
> count = 0;
> for (i = 0; i < child_device_num; i++) {
> p_child = &(p_defs->devices[i]);
> @@ -625,7 +625,7 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
> /* skip the device block if device type is invalid */
> continue;
> }
> - child_dev_ptr = dev_priv->child_dev + count;
> + child_dev_ptr = dev_priv->vbt.child_dev + count;
> count++;
> memcpy((void *)child_dev_ptr, (void *)p_child,
> sizeof(*p_child));
> @@ -638,23 +638,23 @@ init_vbt_defaults(struct drm_i915_private *dev_priv)
> {
> struct drm_device *dev = dev_priv->dev;
>
> - dev_priv->crt_ddc_pin = GMBUS_PORT_VGADDC;
> + dev_priv->vbt.crt_ddc_pin = GMBUS_PORT_VGADDC;
>
> /* LFP panel data */
> - dev_priv->lvds_dither = 1;
> - dev_priv->lvds_vbt = 0;
> + dev_priv->vbt.lvds_dither = 1;
> + dev_priv->vbt.lvds_vbt = 0;
>
> /* SDVO panel data */
> - dev_priv->sdvo_lvds_vbt_mode = NULL;
> + dev_priv->vbt.sdvo_lvds_vbt_mode = NULL;
>
> /* general features */
> - dev_priv->int_tv_support = 1;
> - dev_priv->int_crt_support = 1;
> + dev_priv->vbt.int_tv_support = 1;
> + dev_priv->vbt.int_crt_support = 1;
>
> /* Default to using SSC */
> - dev_priv->lvds_use_ssc = 1;
> - dev_priv->lvds_ssc_freq = intel_bios_ssc_frequency(dev, 1);
> - DRM_DEBUG_KMS("Set default to SSC at %dMHz\n", dev_priv->lvds_ssc_freq);
> + dev_priv->vbt.lvds_use_ssc = 1;
> + dev_priv->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(dev, 1);
> + DRM_DEBUG_KMS("Set default to SSC at %dMHz\n", dev_priv->vbt.lvds_ssc_freq);
> }
>
> static int __init intel_no_opregion_vbt_callback(const struct dmi_system_id *id)
> diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
> index 991e530..cc414f1 100644
> --- a/drivers/gpu/drm/i915/intel_crt.c
> +++ b/drivers/gpu/drm/i915/intel_crt.c
> @@ -442,7 +442,7 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
>
> BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG);
>
> - i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin);
> + i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->vbt.crt_ddc_pin);
> edid = intel_crt_get_edid(connector, i2c);
>
> if (edid) {
> @@ -648,7 +648,7 @@ static int intel_crt_get_modes(struct drm_connector *connector)
> int ret;
> struct i2c_adapter *i2c;
>
> - i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin);
> + i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->vbt.crt_ddc_pin);
> ret = intel_crt_ddc_get_modes(connector, i2c);
> if (ret || !IS_G4X(dev))
> return ret;
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 2b19f43..ab6bbb4 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4243,7 +4243,7 @@ static inline bool intel_panel_use_ssc(struct drm_i915_private *dev_priv)
> {
> if (i915_panel_use_ssc >= 0)
> return i915_panel_use_ssc != 0;
> - return dev_priv->lvds_use_ssc
> + return dev_priv->vbt.lvds_use_ssc
> && !(dev_priv->quirks & QUIRK_LVDS_SSC_DISABLE);
> }
>
> @@ -4279,7 +4279,7 @@ static int i9xx_get_refclk(struct drm_crtc *crtc, int num_connectors)
> refclk = vlv_get_refclk(crtc);
> } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) &&
> intel_panel_use_ssc(dev_priv) && num_connectors < 2) {
> - refclk = dev_priv->lvds_ssc_freq * 1000;
> + refclk = dev_priv->vbt.lvds_ssc_freq * 1000;
> DRM_DEBUG_KMS("using SSC reference clock of %d MHz\n",
> refclk / 1000);
> } else if (!IS_GEN2(dev)) {
> @@ -5070,7 +5070,7 @@ static void ironlake_init_pch_refclk(struct drm_device *dev)
> }
>
> if (HAS_PCH_IBX(dev)) {
> - has_ck505 = dev_priv->display_clock_mode;
> + has_ck505 = dev_priv->vbt.display_clock_mode;
> can_ssc = has_ck505;
> } else {
> has_ck505 = false;
> @@ -5387,8 +5387,8 @@ static int ironlake_get_refclk(struct drm_crtc *crtc)
>
> if (is_lvds && intel_panel_use_ssc(dev_priv) && num_connectors < 2) {
> DRM_DEBUG_KMS("using SSC reference clock of %d MHz\n",
> - dev_priv->lvds_ssc_freq);
> - return dev_priv->lvds_ssc_freq * 1000;
> + dev_priv->vbt.lvds_ssc_freq);
> + return dev_priv->vbt.lvds_ssc_freq * 1000;
> }
>
> return 120000;
> @@ -5684,7 +5684,7 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
> factor = 21;
> if (is_lvds) {
> if ((intel_panel_use_ssc(dev_priv) &&
> - dev_priv->lvds_ssc_freq == 100) ||
> + dev_priv->vbt.lvds_ssc_freq == 100) ||
> (HAS_PCH_IBX(dev) && intel_is_dual_link_lvds(dev)))
> factor = 25;
> } else if (is_sdvo && is_tv)
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 3df1383..ca94185 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -755,10 +755,10 @@ intel_dp_compute_config(struct intel_encoder *encoder,
> * recomments. This means we'll up-dither 16bpp framebuffers on
> * high-depth panels.
> */
> - if (is_edp(intel_dp) && dev_priv->edp.bpp) {
> + if (is_edp(intel_dp) && dev_priv->vbt.edp_bpp) {
> DRM_DEBUG_KMS("forcing bpp for eDP panel to BIOS-provided %i\n",
> - dev_priv->edp.bpp);
> - bpp = dev_priv->edp.bpp;
> + dev_priv->vbt.edp_bpp);
> + bpp = dev_priv->vbt.edp_bpp;
> }
>
> for (; bpp >= 6*3; bpp -= 2*3) {
> @@ -2773,11 +2773,11 @@ bool intel_dpd_is_edp(struct drm_device *dev)
> struct child_device_config *p_child;
> int i;
>
> - if (!dev_priv->child_dev_num)
> + if (!dev_priv->vbt.child_dev_num)
> return false;
>
> - for (i = 0; i < dev_priv->child_dev_num; i++) {
> - p_child = dev_priv->child_dev + i;
> + for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
> + p_child = dev_priv->vbt.child_dev + i;
>
> if (p_child->dvo_port == PORT_IDPD &&
> p_child->device_type == DEVICE_TYPE_eDP)
> @@ -2855,7 +2855,7 @@ intel_dp_init_panel_power_sequencer(struct drm_device *dev,
> DRM_DEBUG_KMS("cur t1_t3 %d t8 %d t9 %d t10 %d t11_t12 %d\n",
> cur.t1_t3, cur.t8, cur.t9, cur.t10, cur.t11_t12);
>
> - vbt = dev_priv->edp.pps;
> + vbt = dev_priv->vbt.edp_pps;
>
> /* Upper limits from eDP 1.3 spec. Note that we use the clunky units of
> * our hw here, which are all in 100usec. */
> @@ -3114,8 +3114,8 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
> }
>
> /* fallback to VBT if available for eDP */
> - if (!fixed_mode && dev_priv->lfp_lvds_vbt_mode) {
> - fixed_mode = drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode);
> + if (!fixed_mode && dev_priv->vbt.lfp_lvds_vbt_mode) {
> + fixed_mode = drm_mode_duplicate(dev, dev_priv->vbt.lfp_lvds_vbt_mode);
> if (fixed_mode)
> fixed_mode->type |= DRM_MODE_TYPE_PREFERRED;
> }
> diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
> index d256fe4..e34e290 100644
> --- a/drivers/gpu/drm/i915/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/intel_lvds.c
> @@ -735,11 +735,11 @@ static bool lvds_is_present_in_vbt(struct drm_device *dev,
> struct drm_i915_private *dev_priv = dev->dev_private;
> int i;
>
> - if (!dev_priv->child_dev_num)
> + if (!dev_priv->vbt.child_dev_num)
> return true;
>
> - for (i = 0; i < dev_priv->child_dev_num; i++) {
> - struct child_device_config *child = dev_priv->child_dev + i;
> + for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
> + struct child_device_config *child = dev_priv->vbt.child_dev + i;
>
> /* If the device type is not LFP, continue.
> * We have to check both the new identifiers as well as the
> @@ -827,7 +827,7 @@ static bool compute_is_dual_link_lvds(struct intel_lvds_encoder *lvds_encoder)
> */
> val = I915_READ(lvds_encoder->reg);
> if (!(val & ~(LVDS_PIPE_MASK | LVDS_DETECTED)))
> - val = dev_priv->bios_lvds_val;
> + val = dev_priv->vbt.bios_lvds_val;
>
> return (val & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP;
> }
> @@ -887,7 +887,7 @@ bool intel_lvds_init(struct drm_device *dev)
> if (HAS_PCH_SPLIT(dev)) {
> if ((I915_READ(PCH_LVDS) & LVDS_DETECTED) == 0)
> return false;
> - if (dev_priv->edp.support) {
> + if (dev_priv->vbt.edp_support) {
> DRM_DEBUG_KMS("disable LVDS for eDP support\n");
> return false;
> }
> @@ -1005,11 +1005,11 @@ bool intel_lvds_init(struct drm_device *dev)
> }
>
> /* Failed to get EDID, what about VBT? */
> - if (dev_priv->lfp_lvds_vbt_mode) {
> + if (dev_priv->vbt.lfp_lvds_vbt_mode) {
> DRM_DEBUG_KMS("using mode from VBT: ");
> - drm_mode_debug_printmodeline(dev_priv->lfp_lvds_vbt_mode);
> + drm_mode_debug_printmodeline(dev_priv->vbt.lfp_lvds_vbt_mode);
>
> - fixed_mode = drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode);
> + fixed_mode = drm_mode_duplicate(dev, dev_priv->vbt.lfp_lvds_vbt_mode);
> if (fixed_mode) {
> fixed_mode->type |= DRM_MODE_TYPE_PREFERRED;
> goto out;
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index a618a6a..c0a012a 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -1495,7 +1495,7 @@ intel_sdvo_get_analog_edid(struct drm_connector *connector)
>
> return drm_get_edid(connector,
> intel_gmbus_get_adapter(dev_priv,
> - dev_priv->crt_ddc_pin));
> + dev_priv->vbt.crt_ddc_pin));
> }
>
> static enum drm_connector_status
> @@ -1781,9 +1781,9 @@ static void intel_sdvo_get_lvds_modes(struct drm_connector *connector)
> goto end;
>
> /* Fetch modes from VBT */
> - if (dev_priv->sdvo_lvds_vbt_mode != NULL) {
> + if (dev_priv->vbt.sdvo_lvds_vbt_mode != NULL) {
> newmode = drm_mode_duplicate(connector->dev,
> - dev_priv->sdvo_lvds_vbt_mode);
> + dev_priv->vbt.sdvo_lvds_vbt_mode);
> if (newmode != NULL) {
> /* Guarantee the mode is preferred */
> newmode->type = (DRM_MODE_TYPE_PREFERRED |
> diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
> index b945bc5..7d11a5a 100644
> --- a/drivers/gpu/drm/i915/intel_tv.c
> +++ b/drivers/gpu/drm/i915/intel_tv.c
> @@ -1521,12 +1521,12 @@ static int tv_is_present_in_vbt(struct drm_device *dev)
> struct child_device_config *p_child;
> int i, ret;
>
> - if (!dev_priv->child_dev_num)
> + if (!dev_priv->vbt.child_dev_num)
> return 1;
>
> ret = 0;
> - for (i = 0; i < dev_priv->child_dev_num; i++) {
> - p_child = dev_priv->child_dev + i;
> + for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
> + p_child = dev_priv->vbt.child_dev + i;
> /*
> * If the device type is not TV, continue.
> */
> @@ -1564,7 +1564,7 @@ intel_tv_init(struct drm_device *dev)
> return;
> }
> /* Even if we have an encoder we may not have a connector */
> - if (!dev_priv->int_tv_support)
> + if (!dev_priv->vbt.int_tv_support)
> return;
>
> /*
> --
> 1.7.11.7
>
--
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
More information about the Intel-gfx
mailing list