aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2016-03-24 11:50:20 -0400
committerJani Nikula <jani.nikula@intel.com>2016-03-29 08:12:04 -0400
commit6aa23e658d910342e8fedb23780638ddaed744d7 (patch)
tree63e3c27fb723d8b04706f79cfdc7280912bc2c6e
parentb4ac5afc6b8398b15d061e909bbad153aae41f15 (diff)
drm/i915: use a substruct in vbt data for edp
Housekeeping, similar to psr, backlight, and dsi. No functional changes. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1458834623-8734-2-git-send-email-jani.nikula@intel.com
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h19
-rw-r--r--drivers/gpu/drm/i915/intel_bios.c38
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c8
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c16
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c2
5 files changed, 42 insertions, 41 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index b93ef7017c93..fe8021ecb254 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1446,15 +1446,16 @@ struct intel_vbt_data {
1446 1446
1447 enum drrs_support_type drrs_type; 1447 enum drrs_support_type drrs_type;
1448 1448
1449 /* eDP */ 1449 struct {
1450 int edp_rate; 1450 int rate;
1451 int edp_lanes; 1451 int lanes;
1452 int edp_preemphasis; 1452 int preemphasis;
1453 int edp_vswing; 1453 int vswing;
1454 bool edp_initialized; 1454 bool initialized;
1455 bool edp_support; 1455 bool support;
1456 int edp_bpp; 1456 int bpp;
1457 struct edp_power_seq edp_pps; 1457 struct edp_power_seq pps;
1458 } edp;
1458 1459
1459 struct { 1460 struct {
1460 bool full_link; 1461 bool full_link;
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 083003b015f5..61eb7a6bb8f0 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -527,7 +527,7 @@ parse_driver_features(struct drm_i915_private *dev_priv,
527 return; 527 return;
528 528
529 if (driver->lvds_config == BDB_DRIVER_FEATURE_EDP) 529 if (driver->lvds_config == BDB_DRIVER_FEATURE_EDP)
530 dev_priv->vbt.edp_support = 1; 530 dev_priv->vbt.edp.support = 1;
531 531
532 if (driver->dual_frequency) 532 if (driver->dual_frequency)
533 dev_priv->render_reclock_avail = true; 533 dev_priv->render_reclock_avail = true;
@@ -552,20 +552,20 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
552 552
553 edp = find_section(bdb, BDB_EDP); 553 edp = find_section(bdb, BDB_EDP);
554 if (!edp) { 554 if (!edp) {
555 if (dev_priv->vbt.edp_support) 555 if (dev_priv->vbt.edp.support)
556 DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported.\n"); 556 DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported.\n");
557 return; 557 return;
558 } 558 }
559 559
560 switch ((edp->color_depth >> (panel_type * 2)) & 3) { 560 switch ((edp->color_depth >> (panel_type * 2)) & 3) {
561 case EDP_18BPP: 561 case EDP_18BPP:
562 dev_priv->vbt.edp_bpp = 18; 562 dev_priv->vbt.edp.bpp = 18;
563 break; 563 break;
564 case EDP_24BPP: 564 case EDP_24BPP:
565 dev_priv->vbt.edp_bpp = 24; 565 dev_priv->vbt.edp.bpp = 24;
566 break; 566 break;
567 case EDP_30BPP: 567 case EDP_30BPP:
568 dev_priv->vbt.edp_bpp = 30; 568 dev_priv->vbt.edp.bpp = 30;
569 break; 569 break;
570 } 570 }
571 571
@@ -573,14 +573,14 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
573 edp_pps = &edp->power_seqs[panel_type]; 573 edp_pps = &edp->power_seqs[panel_type];
574 edp_link_params = &edp->link_params[panel_type]; 574 edp_link_params = &edp->link_params[panel_type];
575 575
576 dev_priv->vbt.edp_pps = *edp_pps; 576 dev_priv->vbt.edp.pps = *edp_pps;
577 577
578 switch (edp_link_params->rate) { 578 switch (edp_link_params->rate) {
579 case EDP_RATE_1_62: 579 case EDP_RATE_1_62:
580 dev_priv->vbt.edp_rate = DP_LINK_BW_1_62; 580 dev_priv->vbt.edp.rate = DP_LINK_BW_1_62;
581 break; 581 break;
582 case EDP_RATE_2_7: 582 case EDP_RATE_2_7:
583 dev_priv->vbt.edp_rate = DP_LINK_BW_2_7; 583 dev_priv->vbt.edp.rate = DP_LINK_BW_2_7;
584 break; 584 break;
585 default: 585 default:
586 DRM_DEBUG_KMS("VBT has unknown eDP link rate value %u\n", 586 DRM_DEBUG_KMS("VBT has unknown eDP link rate value %u\n",
@@ -590,13 +590,13 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
590 590
591 switch (edp_link_params->lanes) { 591 switch (edp_link_params->lanes) {
592 case EDP_LANE_1: 592 case EDP_LANE_1:
593 dev_priv->vbt.edp_lanes = 1; 593 dev_priv->vbt.edp.lanes = 1;
594 break; 594 break;
595 case EDP_LANE_2: 595 case EDP_LANE_2:
596 dev_priv->vbt.edp_lanes = 2; 596 dev_priv->vbt.edp.lanes = 2;
597 break; 597 break;
598 case EDP_LANE_4: 598 case EDP_LANE_4:
599 dev_priv->vbt.edp_lanes = 4; 599 dev_priv->vbt.edp.lanes = 4;
600 break; 600 break;
601 default: 601 default:
602 DRM_DEBUG_KMS("VBT has unknown eDP lane count value %u\n", 602 DRM_DEBUG_KMS("VBT has unknown eDP lane count value %u\n",
@@ -606,16 +606,16 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
606 606
607 switch (edp_link_params->preemphasis) { 607 switch (edp_link_params->preemphasis) {
608 case EDP_PREEMPHASIS_NONE: 608 case EDP_PREEMPHASIS_NONE:
609 dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0; 609 dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0;
610 break; 610 break;
611 case EDP_PREEMPHASIS_3_5dB: 611 case EDP_PREEMPHASIS_3_5dB:
612 dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1; 612 dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1;
613 break; 613 break;
614 case EDP_PREEMPHASIS_6dB: 614 case EDP_PREEMPHASIS_6dB:
615 dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2; 615 dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2;
616 break; 616 break;
617 case EDP_PREEMPHASIS_9_5dB: 617 case EDP_PREEMPHASIS_9_5dB:
618 dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3; 618 dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3;
619 break; 619 break;
620 default: 620 default:
621 DRM_DEBUG_KMS("VBT has unknown eDP pre-emphasis value %u\n", 621 DRM_DEBUG_KMS("VBT has unknown eDP pre-emphasis value %u\n",
@@ -625,16 +625,16 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
625 625
626 switch (edp_link_params->vswing) { 626 switch (edp_link_params->vswing) {
627 case EDP_VSWING_0_4V: 627 case EDP_VSWING_0_4V:
628 dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0; 628 dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0;
629 break; 629 break;
630 case EDP_VSWING_0_6V: 630 case EDP_VSWING_0_6V:
631 dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1; 631 dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1;
632 break; 632 break;
633 case EDP_VSWING_0_8V: 633 case EDP_VSWING_0_8V:
634 dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2; 634 dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
635 break; 635 break;
636 case EDP_VSWING_1_2V: 636 case EDP_VSWING_1_2V:
637 dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3; 637 dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
638 break; 638 break;
639 default: 639 default:
640 DRM_DEBUG_KMS("VBT has unknown eDP voltage swing value %u\n", 640 DRM_DEBUG_KMS("VBT has unknown eDP voltage swing value %u\n",
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index e6c3a80e1360..50e4978359a4 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2002,8 +2002,8 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
2002 pipe_config->has_audio = 2002 pipe_config->has_audio =
2003 intel_ddi_is_audio_enabled(dev_priv, intel_crtc); 2003 intel_ddi_is_audio_enabled(dev_priv, intel_crtc);
2004 2004
2005 if (encoder->type == INTEL_OUTPUT_EDP && dev_priv->vbt.edp_bpp && 2005 if (encoder->type == INTEL_OUTPUT_EDP && dev_priv->vbt.edp.bpp &&
2006 pipe_config->pipe_bpp > dev_priv->vbt.edp_bpp) { 2006 pipe_config->pipe_bpp > dev_priv->vbt.edp.bpp) {
2007 /* 2007 /*
2008 * This is a big fat ugly hack. 2008 * This is a big fat ugly hack.
2009 * 2009 *
@@ -2018,8 +2018,8 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
2018 * load. 2018 * load.
2019 */ 2019 */
2020 DRM_DEBUG_KMS("pipe has %d bpp for eDP panel, overriding BIOS-provided max %d bpp\n", 2020 DRM_DEBUG_KMS("pipe has %d bpp for eDP panel, overriding BIOS-provided max %d bpp\n",
2021 pipe_config->pipe_bpp, dev_priv->vbt.edp_bpp); 2021 pipe_config->pipe_bpp, dev_priv->vbt.edp.bpp);
2022 dev_priv->vbt.edp_bpp = pipe_config->pipe_bpp; 2022 dev_priv->vbt.edp.bpp = pipe_config->pipe_bpp;
2023 } 2023 }
2024 2024
2025 intel_ddi_clock_get(encoder, pipe_config); 2025 intel_ddi_clock_get(encoder, pipe_config);
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 3ff8f1d67594..55faad13174d 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1500,10 +1500,10 @@ intel_dp_compute_config(struct intel_encoder *encoder,
1500 1500
1501 /* Get bpp from vbt only for panels that dont have bpp in edid */ 1501 /* Get bpp from vbt only for panels that dont have bpp in edid */
1502 if (intel_connector->base.display_info.bpc == 0 && 1502 if (intel_connector->base.display_info.bpc == 0 &&
1503 (dev_priv->vbt.edp_bpp && dev_priv->vbt.edp_bpp < bpp)) { 1503 (dev_priv->vbt.edp.bpp && dev_priv->vbt.edp.bpp < bpp)) {
1504 DRM_DEBUG_KMS("clamping bpp for eDP panel to BIOS-provided %i\n", 1504 DRM_DEBUG_KMS("clamping bpp for eDP panel to BIOS-provided %i\n",
1505 dev_priv->vbt.edp_bpp); 1505 dev_priv->vbt.edp.bpp);
1506 bpp = dev_priv->vbt.edp_bpp; 1506 bpp = dev_priv->vbt.edp.bpp;
1507 } 1507 }
1508 1508
1509 /* 1509 /*
@@ -2386,8 +2386,8 @@ static void intel_dp_get_config(struct intel_encoder *encoder,
2386 intel_dotclock_calculate(pipe_config->port_clock, 2386 intel_dotclock_calculate(pipe_config->port_clock,
2387 &pipe_config->dp_m_n); 2387 &pipe_config->dp_m_n);
2388 2388
2389 if (is_edp(intel_dp) && dev_priv->vbt.edp_bpp && 2389 if (is_edp(intel_dp) && dev_priv->vbt.edp.bpp &&
2390 pipe_config->pipe_bpp > dev_priv->vbt.edp_bpp) { 2390 pipe_config->pipe_bpp > dev_priv->vbt.edp.bpp) {
2391 /* 2391 /*
2392 * This is a big fat ugly hack. 2392 * This is a big fat ugly hack.
2393 * 2393 *
@@ -2402,8 +2402,8 @@ static void intel_dp_get_config(struct intel_encoder *encoder,
2402 * load. 2402 * load.
2403 */ 2403 */
2404 DRM_DEBUG_KMS("pipe has %d bpp for eDP panel, overriding BIOS-provided max %d bpp\n", 2404 DRM_DEBUG_KMS("pipe has %d bpp for eDP panel, overriding BIOS-provided max %d bpp\n",
2405 pipe_config->pipe_bpp, dev_priv->vbt.edp_bpp); 2405 pipe_config->pipe_bpp, dev_priv->vbt.edp.bpp);
2406 dev_priv->vbt.edp_bpp = pipe_config->pipe_bpp; 2406 dev_priv->vbt.edp.bpp = pipe_config->pipe_bpp;
2407 } 2407 }
2408} 2408}
2409 2409
@@ -5111,7 +5111,7 @@ intel_dp_init_panel_power_sequencer(struct drm_device *dev,
5111 DRM_DEBUG_KMS("cur t1_t3 %d t8 %d t9 %d t10 %d t11_t12 %d\n", 5111 DRM_DEBUG_KMS("cur t1_t3 %d t8 %d t9 %d t10 %d t11_t12 %d\n",
5112 cur.t1_t3, cur.t8, cur.t9, cur.t10, cur.t11_t12); 5112 cur.t1_t3, cur.t8, cur.t9, cur.t10, cur.t11_t12);
5113 5113
5114 vbt = dev_priv->vbt.edp_pps; 5114 vbt = dev_priv->vbt.edp.pps;
5115 5115
5116 /* Upper limits from eDP 1.3 spec. Note that we use the clunky units of 5116 /* Upper limits from eDP 1.3 spec. Note that we use the clunky units of
5117 * our hw here, which are all in 100usec. */ 5117 * our hw here, which are all in 100usec. */
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 766ba566fef1..5d2b2575de33 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -924,7 +924,7 @@ void intel_lvds_init(struct drm_device *dev)
924 if (HAS_PCH_SPLIT(dev)) { 924 if (HAS_PCH_SPLIT(dev)) {
925 if ((lvds & LVDS_DETECTED) == 0) 925 if ((lvds & LVDS_DETECTED) == 0)
926 return; 926 return;
927 if (dev_priv->vbt.edp_support) { 927 if (dev_priv->vbt.edp.support) {
928 DRM_DEBUG_KMS("disable LVDS for eDP support\n"); 928 DRM_DEBUG_KMS("disable LVDS for eDP support\n");
929 return; 929 return;
930 } 930 }