diff options
author | Jani Nikula <jani.nikula@intel.com> | 2016-03-24 11:50:20 -0400 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2016-03-29 08:12:04 -0400 |
commit | 6aa23e658d910342e8fedb23780638ddaed744d7 (patch) | |
tree | 63e3c27fb723d8b04706f79cfdc7280912bc2c6e | |
parent | b4ac5afc6b8398b15d061e909bbad153aae41f15 (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.h | 19 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_bios.c | 38 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_ddi.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 16 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 2 |
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 | } |