From patchwork Thu Aug 30 00:02:04 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alex Deucher X-Patchwork-Id: 1386301 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork2.kernel.org (Postfix) with ESMTP id 77480DF2AB for ; Thu, 30 Aug 2012 00:02:29 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 65E5C9F6FA for ; Wed, 29 Aug 2012 17:02:29 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yw0-f53.google.com (mail-yw0-f53.google.com [209.85.213.53]) by gabe.freedesktop.org (Postfix) with ESMTP id B64F19EB5C for ; Wed, 29 Aug 2012 17:02:17 -0700 (PDT) Received: by yhp3 with SMTP id 3so271616yhp.26 for ; Wed, 29 Aug 2012 17:02:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=v/Ks1kzZPcHL5gnNtqkdyWR+8wTtRet5bVpaaklhX7Y=; b=j+SVnlExW1iuP+zgghbiK0i1/SKQ1C5982qoO5g/4ASw41zmBIx2EFOeVkPN4TLs4V rQbfnA48jsEsQb6gi+NLa+pIPXsvDIrqM9Owm7PwlJmmbEm/Cvu4pEYfTsyN1uh4gcMI x59pOGzHDvtj2qtT85OGcRj/6msDZfVUsEUgHV6fOgArG1zSyII+pKs5IWL2PiYQZEN2 CoBS/N4HXV7b2v/HnCvY/Bef+EL3802N8SN/8HVIAjg6Ep5+X0MfyZIpqCCCTlbUpvIT Pvsu2gLmj8QNfrgGVlhg8Zq+T/cUb7Vcr34i/Ha7xytrFweezQNLhyDkWGMi8X/QJYWQ yKqw== Received: by 10.236.73.198 with SMTP id v46mr3442018yhd.80.1346284936827; Wed, 29 Aug 2012 17:02:16 -0700 (PDT) Received: from localhost.localdomain (static-74-96-105-49.washdc.fios.verizon.net. [74.96.105.49]) by mx.google.com with ESMTPS id e16sm82130ani.22.2012.08.29.17.02.13 (version=SSLv3 cipher=OTHER); Wed, 29 Aug 2012 17:02:14 -0700 (PDT) From: alexdeucher@gmail.com To: airlied@gmail.com, dri-devel@lists.freedesktop.org Subject: [PATCH] drm/radeon: fix dig encoder selection on DCE61 Date: Wed, 29 Aug 2012 20:02:04 -0400 Message-Id: <1346284924-12786-1-git-send-email-alexdeucher@gmail.com> X-Mailer: git-send-email 1.7.7.5 Cc: Alex Deucher , stable@vger.kernel.org X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org From: Alex Deucher Was using the DCE41 code which was wrong. Fixes blank displays on a number of Trinity systems. Signed-off-by: Alex Deucher Cc: stable@vger.kernel.org Reviewed-by: Michel Dänzer --- drivers/gpu/drm/radeon/atombios_encoders.c | 31 +++++++++++++++++++++++---- 1 files changed, 26 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c index 4a7f95e..6e8803a 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c @@ -1769,13 +1769,34 @@ static int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder) struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc); struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); struct drm_encoder *test_encoder; - struct radeon_encoder_atom_dig *dig; + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; uint32_t dig_enc_in_use = 0; - /* DCE4/5 */ - if (ASIC_IS_DCE4(rdev)) { - dig = radeon_encoder->enc_priv; - if (ASIC_IS_DCE41(rdev)) { + if (ASIC_IS_DCE6(rdev)) { + /* DCE6 */ + switch (radeon_encoder->encoder_id) { + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: + if (dig->linkb) + return 1; + else + return 0; + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: + if (dig->linkb) + return 3; + else + return 2; + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: + if (dig->linkb) + return 5; + else + return 4; + break; + } + } else if (ASIC_IS_DCE4(rdev)) { + /* DCE4/5 */ + if (ASIC_IS_DCE41(rdev) && !ASIC_IS_DCE61(rdev)) { /* ontario follows DCE4 */ if (rdev->family == CHIP_PALM) { if (dig->linkb)