aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario Kleiner <mario.kleiner.de@gmail.com>2014-05-05 17:03:18 -0400
committerAlex Deucher <alexander.deucher@amd.com>2014-06-02 18:37:33 -0400
commit89b92339c1362ee910b0c73c2db32af11246c250 (patch)
tree9e22da5a0c40ba4439273d51fe04debde926b942
parent7b555e068de613b52b068adf3c74f0c774c28365 (diff)
drm/radeon: Limit hdmi deep color bit depth to 12 bpc.
DCE-4/5/6 can't support more than 12 bpc deep color over hdmi, so clamp to 12 bpc when a hdmi deep color capable display is connected. This even makes sense on DCE-8+, which could do up to 16 bpc, as driving with more than 12 bpc would only waste video bandwidth as long as we don't support framebuffers with more than 12 bpc depth. On pre-DCE4 we clamp hdmi bit depth to 8 bpc, as those asics don't support hdmi deep color. Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/radeon/radeon_connectors.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index bf73a04791ed..0dc61dde4c3e 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -145,6 +145,31 @@ int radeon_get_monitor_bpc(struct drm_connector *connector)
145 } 145 }
146 break; 146 break;
147 } 147 }
148
149 if (drm_detect_hdmi_monitor(radeon_connector->edid)) {
150 /* hdmi deep color only implemented on DCE4+ */
151 if ((bpc > 8) && !ASIC_IS_DCE4(rdev)) {
152 DRM_DEBUG("%s: HDMI deep color %d bpc unsupported. Using 8 bpc.\n",
153 drm_get_connector_name(connector), bpc);
154 bpc = 8;
155 }
156
157 /*
158 * Pre DCE-8 hw can't handle > 12 bpc, and more than 12 bpc doesn't make
159 * much sense without support for > 12 bpc framebuffers. RGB 4:4:4 at
160 * 12 bpc is always supported on hdmi deep color sinks, as this is
161 * required by the HDMI-1.3 spec. Clamp to a safe 12 bpc maximum.
162 */
163 if (bpc > 12) {
164 DRM_DEBUG("%s: HDMI deep color %d bpc unsupported. Using 12 bpc.\n",
165 drm_get_connector_name(connector), bpc);
166 bpc = 12;
167 }
168 }
169
170 DRM_DEBUG("%s: Display bpc=%d, returned bpc=%d\n",
171 drm_get_connector_name(connector), connector->display_info.bpc, bpc);
172
148 return bpc; 173 return bpc;
149} 174}
150 175