diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-11-14 23:31:13 -0500 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-12-21 04:01:43 -0500 |
commit | d4c2c99bdc8385a0e51ce4ef2df124d14b6b9c9d (patch) | |
tree | 43b5f136b139ce5b310cfbbd8060ade68bc0ca95 | |
parent | c37e99050c84c40441e614bd41474e12b6cc2079 (diff) |
drm/nouveau/dp: remove broken display depth function, use the improved one
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_connector.c | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c index f6c8e1da4228..df99c7f1191a 100644 --- a/drivers/gpu/drm/nouveau/nouveau_connector.c +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c | |||
@@ -78,23 +78,6 @@ nouveau_encoder_connector_get(struct nouveau_encoder *encoder) | |||
78 | return NULL; | 78 | return NULL; |
79 | } | 79 | } |
80 | 80 | ||
81 | /*TODO: This could use improvement, and learn to handle the fixed | ||
82 | * BIOS tables etc. It's fine currently, for its only user. | ||
83 | */ | ||
84 | int | ||
85 | nouveau_connector_bpp(struct drm_connector *connector) | ||
86 | { | ||
87 | struct nouveau_connector *nv_connector = nouveau_connector(connector); | ||
88 | |||
89 | if (nv_connector->edid && nv_connector->edid->revision >= 4) { | ||
90 | u8 bpc = ((nv_connector->edid->input & 0x70) >> 3) + 4; | ||
91 | if (bpc > 4) | ||
92 | return bpc; | ||
93 | } | ||
94 | |||
95 | return 18; | ||
96 | } | ||
97 | |||
98 | static void | 81 | static void |
99 | nouveau_connector_destroy(struct drm_connector *connector) | 82 | nouveau_connector_destroy(struct drm_connector *connector) |
100 | { | 83 | { |
@@ -714,6 +697,12 @@ nouveau_connector_get_modes(struct drm_connector *connector) | |||
714 | nv_connector->native_mode = drm_mode_duplicate(dev, &mode); | 697 | nv_connector->native_mode = drm_mode_duplicate(dev, &mode); |
715 | } | 698 | } |
716 | 699 | ||
700 | /* Determine display colour depth for everything except LVDS now, | ||
701 | * DP requires this before mode_valid() is called. | ||
702 | */ | ||
703 | if (connector->connector_type != DRM_MODE_CONNECTOR_LVDS) | ||
704 | nouveau_connector_detect_depth(connector); | ||
705 | |||
717 | /* Find the native mode if this is a digital panel, if we didn't | 706 | /* Find the native mode if this is a digital panel, if we didn't |
718 | * find any modes through DDC previously add the native mode to | 707 | * find any modes through DDC previously add the native mode to |
719 | * the list of modes. | 708 | * the list of modes. |
@@ -729,11 +718,12 @@ nouveau_connector_get_modes(struct drm_connector *connector) | |||
729 | ret = 1; | 718 | ret = 1; |
730 | } | 719 | } |
731 | 720 | ||
732 | /* Attempt to determine display colour depth, this has to happen after | 721 | /* Determine LVDS colour depth, must happen after determining |
733 | * we've determined the "native" mode for LVDS, as the VBIOS tables | 722 | * "native" mode as some VBIOS tables require us to use the |
734 | * require us to compare against a pixel clock in some cases.. | 723 | * pixel clock as part of the lookup... |
735 | */ | 724 | */ |
736 | nouveau_connector_detect_depth(connector); | 725 | if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) |
726 | nouveau_connector_detect_depth(connector); | ||
737 | 727 | ||
738 | if (nv_encoder->dcb->type == OUTPUT_TV) | 728 | if (nv_encoder->dcb->type == OUTPUT_TV) |
739 | ret = get_slave_funcs(encoder)->get_modes(encoder, connector); | 729 | ret = get_slave_funcs(encoder)->get_modes(encoder, connector); |
@@ -799,7 +789,7 @@ nouveau_connector_mode_valid(struct drm_connector *connector, | |||
799 | case OUTPUT_DP: | 789 | case OUTPUT_DP: |
800 | max_clock = nv_encoder->dp.link_nr; | 790 | max_clock = nv_encoder->dp.link_nr; |
801 | max_clock *= nv_encoder->dp.link_bw; | 791 | max_clock *= nv_encoder->dp.link_bw; |
802 | clock = clock * nouveau_connector_bpp(connector) / 10; | 792 | clock = clock * (connector->display_info.bpc * 3) / 10; |
803 | break; | 793 | break; |
804 | default: | 794 | default: |
805 | BUG_ON(1); | 795 | BUG_ON(1); |