Rev 5097 | Rev 6084 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5097 | Rev 5354 | ||
---|---|---|---|
Line 625... | Line 625... | ||
625 | break; |
625 | break; |
626 | } |
626 | } |
Line 627... | Line 627... | ||
627 | 627 | ||
628 | switch (edp_link_params->preemphasis) { |
628 | switch (edp_link_params->preemphasis) { |
629 | case EDP_PREEMPHASIS_NONE: |
629 | case EDP_PREEMPHASIS_NONE: |
630 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_0; |
630 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0; |
631 | break; |
631 | break; |
632 | case EDP_PREEMPHASIS_3_5dB: |
632 | case EDP_PREEMPHASIS_3_5dB: |
633 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_3_5; |
633 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1; |
634 | break; |
634 | break; |
635 | case EDP_PREEMPHASIS_6dB: |
635 | case EDP_PREEMPHASIS_6dB: |
636 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_6; |
636 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2; |
637 | break; |
637 | break; |
638 | case EDP_PREEMPHASIS_9_5dB: |
638 | case EDP_PREEMPHASIS_9_5dB: |
639 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_9_5; |
639 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3; |
640 | break; |
640 | break; |
641 | default: |
641 | default: |
642 | DRM_DEBUG_KMS("VBT has unknown eDP pre-emphasis value %u\n", |
642 | DRM_DEBUG_KMS("VBT has unknown eDP pre-emphasis value %u\n", |
643 | edp_link_params->preemphasis); |
643 | edp_link_params->preemphasis); |
644 | break; |
644 | break; |
Line 645... | Line 645... | ||
645 | } |
645 | } |
646 | 646 | ||
647 | switch (edp_link_params->vswing) { |
647 | switch (edp_link_params->vswing) { |
648 | case EDP_VSWING_0_4V: |
648 | case EDP_VSWING_0_4V: |
649 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_400; |
649 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0; |
650 | break; |
650 | break; |
651 | case EDP_VSWING_0_6V: |
651 | case EDP_VSWING_0_6V: |
652 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_600; |
652 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1; |
653 | break; |
653 | break; |
654 | case EDP_VSWING_0_8V: |
654 | case EDP_VSWING_0_8V: |
655 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_800; |
655 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2; |
656 | break; |
656 | break; |
657 | case EDP_VSWING_1_2V: |
657 | case EDP_VSWING_1_2V: |
658 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_1200; |
658 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3; |
659 | break; |
659 | break; |
660 | default: |
660 | default: |
661 | DRM_DEBUG_KMS("VBT has unknown eDP voltage swing value %u\n", |
661 | DRM_DEBUG_KMS("VBT has unknown eDP voltage swing value %u\n", |
Line 944... | Line 944... | ||
944 | DRM_DEBUG_KMS("Port %c is analog\n", port_name(port)); |
944 | DRM_DEBUG_KMS("Port %c is analog\n", port_name(port)); |
945 | if (is_crt && (is_dvi || is_dp)) |
945 | if (is_crt && (is_dvi || is_dp)) |
946 | DRM_DEBUG_KMS("Analog port %c is also DP or TMDS compatible\n", |
946 | DRM_DEBUG_KMS("Analog port %c is also DP or TMDS compatible\n", |
947 | port_name(port)); |
947 | port_name(port)); |
948 | if (is_dvi && (port == PORT_A || port == PORT_E)) |
948 | if (is_dvi && (port == PORT_A || port == PORT_E)) |
949 | DRM_DEBUG_KMS("Port %c is TMDS compabile\n", port_name(port)); |
949 | DRM_DEBUG_KMS("Port %c is TMDS compatible\n", port_name(port)); |
950 | if (!is_dvi && !is_dp && !is_crt) |
950 | if (!is_dvi && !is_dp && !is_crt) |
951 | DRM_DEBUG_KMS("Port %c is not DP/TMDS/CRT compatible\n", |
951 | DRM_DEBUG_KMS("Port %c is not DP/TMDS/CRT compatible\n", |
952 | port_name(port)); |
952 | port_name(port)); |
953 | if (is_edp && (port == PORT_B || port == PORT_C || port == PORT_E)) |
953 | if (is_edp && (port == PORT_B || port == PORT_C || port == PORT_E)) |
954 | DRM_DEBUG_KMS("Port %c is internal DP\n", port_name(port)); |
954 | DRM_DEBUG_KMS("Port %c is internal DP\n", port_name(port)); |
Line 974... | Line 974... | ||
974 | } |
974 | } |
Line 975... | Line 975... | ||
975 | 975 | ||
976 | if (bdb->version >= 158) { |
976 | if (bdb->version >= 158) { |
977 | /* The VBT HDMI level shift values match the table we have. */ |
977 | /* The VBT HDMI level shift values match the table we have. */ |
978 | hdmi_level_shift = child->raw[7] & 0xF; |
- | |
979 | if (hdmi_level_shift < 0xC) { |
978 | hdmi_level_shift = child->raw[7] & 0xF; |
980 | DRM_DEBUG_KMS("VBT HDMI level shift for port %c: %d\n", |
979 | DRM_DEBUG_KMS("VBT HDMI level shift for port %c: %d\n", |
981 | port_name(port), |
980 | port_name(port), |
982 | hdmi_level_shift); |
981 | hdmi_level_shift); |
983 | info->hdmi_level_shift = hdmi_level_shift; |
982 | info->hdmi_level_shift = hdmi_level_shift; |
984 | } |
983 | } |
985 | } |
- | |
Line 986... | Line 984... | ||
986 | } |
984 | } |
987 | 985 | ||
988 | static void parse_ddi_ports(struct drm_i915_private *dev_priv, |
986 | static void parse_ddi_ports(struct drm_i915_private *dev_priv, |
989 | struct bdb_header *bdb) |
987 | struct bdb_header *bdb) |
Line 1112... | Line 1110... | ||
1112 | 1110 | ||
1113 | for (port = PORT_A; port < I915_MAX_PORTS; port++) { |
1111 | for (port = PORT_A; port < I915_MAX_PORTS; port++) { |
1114 | struct ddi_vbt_port_info *info = |
1112 | struct ddi_vbt_port_info *info = |
Line 1115... | Line -... | ||
1115 | &dev_priv->vbt.ddi_port_info[port]; |
- | |
1116 | 1113 | &dev_priv->vbt.ddi_port_info[port]; |
|
Line 1117... | Line 1114... | ||
1117 | /* Recommended BSpec default: 800mV 0dB. */ |
1114 | |
1118 | info->hdmi_level_shift = 6; |
1115 | info->hdmi_level_shift = HDMI_LEVEL_SHIFT_UNKNOWN; |
1119 | 1116 | ||
1120 | info->supports_dvi = (port != PORT_A && port != PORT_E); |
1117 | info->supports_dvi = (port != PORT_A && port != PORT_E); |