From patchwork Fri Jul 20 13:27:06 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Deucher X-Patchwork-Id: 1221091 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork1.kernel.org (Postfix) with ESMTP id B67073FD48 for ; Fri, 20 Jul 2012 13:28:14 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A36609E7A0 for ; Fri, 20 Jul 2012 06:28:14 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-qc0-f181.google.com (mail-qc0-f181.google.com [209.85.216.181]) by gabe.freedesktop.org (Postfix) with ESMTP id DDD269EEA0 for ; Fri, 20 Jul 2012 06:27:14 -0700 (PDT) Received: by mail-qc0-f181.google.com with SMTP id x40so2807161qcp.26 for ; Fri, 20 Jul 2012 06:27:14 -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:in-reply-to:references; bh=SBE2w1RCy9q72M/XJlNBqkbmIaAlSPpqi6feYkZWlmA=; b=YXphK7g6BWgrU94a/JO7zPgq9LkRP3aw2Us1mn0FRbJac+gcQdPbTRnvpkvpeDOtPK MHPK8Q1m6ElNjNuaOnRN8w0hfYAJEtJbwmTN3Tfbcs1JPOnhBv849bAN9jwRswc320Sk KcSPTRpAIlmja1Hh/k9TwFjK3cSpG30isKB8htNRQv0YBr7+sIMTKR0WQRNrIoD+hhgH Yc759moQcx0T/DK/e/HujfKhPM5nOEt/PWzm1aBQ2gEguBmtxTtBxd0YQ/KwwV1O6huK XJvxKrky173/R57eyWa/q8xBL7cLVbO9YeWgkgQXhsN81tjPgHD3mtAaahzKRpgrmwU/ bXPA== Received: by 10.224.189.12 with SMTP id dc12mr9941439qab.19.1342790834590; Fri, 20 Jul 2012 06:27:14 -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 bz17sm5032235qab.6.2012.07.20.06.27.13 (version=SSLv3 cipher=OTHER); Fri, 20 Jul 2012 06:27:13 -0700 (PDT) From: alexdeucher@gmail.com To: airlied@gmail.com, dri-devel@lists.freedesktop.org Subject: [PATCH 2/2] drm/radeon: on hotplug force link training to happen (v2) Date: Fri, 20 Jul 2012 09:27:06 -0400 Message-Id: <1342790826-11778-2-git-send-email-alexdeucher@amd.com> X-Mailer: git-send-email 1.7.7.5 In-Reply-To: <1342790826-11778-1-git-send-email-alexdeucher@amd.com> References: <1342790826-11778-1-git-send-email-alexdeucher@amd.com> Cc: Alex Deucher , Jerome Glisse , 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: Jerome Glisse To have DP behave like VGA/DVI we need to retrain the link on hotplug. For this to happen we need to force link training to happen by setting connector dpms to off before asking it turning it on again. v2: agd5f - drop the dp_get_link_status() change in atombios_dp.c for now. We still need the dpms OFF change. Signed-off-by: Jerome Glisse Cc: stable@vger.kernel.org Signed-off-by: Alex Deucher --- drivers/gpu/drm/radeon/radeon_connectors.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index 3524f17..895e628 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c @@ -79,10 +79,16 @@ void radeon_connector_hotplug(struct drm_connector *connector) if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { int saved_dpms = connector->dpms; /* Only turn off the display if it's physically disconnected */ - if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) + if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) { drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); - else if (radeon_dp_needs_link_train(radeon_connector)) + } else if (radeon_dp_needs_link_train(radeon_connector)) { + /* set it to OFF so that drm_helper_connector_dpms() + * won't return immediately since the current state + * is ON at this point. + */ + connector->dpms = DRM_MODE_DPMS_OFF; drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); + } connector->dpms = saved_dpms; } }