From patchwork Wed Mar 23 17:42:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alex Deucher X-Patchwork-Id: 8652551 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 62C70C0553 for ; Wed, 23 Mar 2016 17:44:01 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 917E3203E6 for ; Wed, 23 Mar 2016 17:44:00 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id C580F203E3 for ; Wed, 23 Mar 2016 17:43:59 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 245366E8E7; Wed, 23 Mar 2016 17:43:49 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-qk0-x22f.google.com (mail-qk0-x22f.google.com [IPv6:2607:f8b0:400d:c09::22f]) by gabe.freedesktop.org (Postfix) with ESMTPS id D7F526E8E3 for ; Wed, 23 Mar 2016 17:43:31 +0000 (UTC) Received: by mail-qk0-x22f.google.com with SMTP id s68so9931752qkh.3 for ; Wed, 23 Mar 2016 10:43:31 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=koMXHp44bhZk2We1t2HDUkhwDWfKpqK+yB7UhqRJ3v4=; b=Kzk5ia4O8+oeSBiV19/7603vJjHEiPHwc1T6Lmi1TCdEhLH4jxqvv2pv+7O61K+nZn nvmf7a8p3Blh4nvMHv4dtBlqWYJcWkAJ0Wk+sfw9/fmopHXjkCw9keoUZl8/mSFQbUZG mhs/Riap5cXRX8PtdNpLOEg4sXrkmwleskPqyWj57+diyPmemD/Pg0qWf4uB3n1prteC /idL3fO6/q+5NYdTvNaRrFyjJqXs5XXA2bZR4sMXIODaczAlk+f3WezE2WtY1pBdiPSl LHJaIFU6Jdeo9YLkz8O/6c6dfo50AJwXgfxSOoQK5xCE2rml5uXe3ciDq8McFKAgOdgP onNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=koMXHp44bhZk2We1t2HDUkhwDWfKpqK+yB7UhqRJ3v4=; b=b01DOtuH1lYW76IYpW1f1SOI2nhwb7lxxshKuKK+ub4vg1tk1rLMwcNoNm4vurwSyO B8+PnGkQWxkAvi5LxDg4FHeIm47e/A1V32hhEUWfDcKUoI2UQpxlk0Og+0EqxXjMv/9r co8A6KJiiMUsR1FzK8cPxEFBVMr5wX8hdi/ZWnpV7FZHHENiS/r0rfSjq0q8sdHfZ4lT uS0nsD18dq5Maz18JQtg16jEM25g2y0XvF7Wy1oOHaZfV4FLww6zNUjtH0Jr6Qo1pjuv o6xkDCszkylXhFcITavU+FgheDEFCh/LE1isb07DbfGqctuCPpOXM6chxsTXIbrNYSTQ Ixpg== X-Gm-Message-State: AD7BkJIYhOyCW/zXEQoNH18N3m5UQgfbv+kLb77PZ79zddyr3dGbUyrOmWMGJn9fusDgyQ== X-Received: by 10.55.41.19 with SMTP id p19mr5210284qkh.86.1458755010136; Wed, 23 Mar 2016 10:43:30 -0700 (PDT) Received: from cm.localdomain (static-74-96-105-49.washdc.fios.verizon.net. [74.96.105.49]) by smtp.gmail.com with ESMTPSA id v190sm1486878qka.46.2016.03.23.10.43.29 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 23 Mar 2016 10:43:29 -0700 (PDT) From: Alex Deucher X-Google-Original-From: Alex Deucher To: dri-devel@lists.freedesktop.org Subject: [PATCH 06/52] drm/amdgpu/atom: add support for new SetPixelClock table Date: Wed, 23 Mar 2016 13:42:22 -0400 Message-Id: <1458754988-16222-7-git-send-email-alexander.deucher@amd.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1458754988-16222-1-git-send-email-alexander.deucher@amd.com> References: <1458754988-16222-1-git-send-email-alexander.deucher@amd.com> MIME-Version: 1.0 Cc: Alex Deucher X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP New version of the SetPixelClock table for elm/baf. The new table calculates the pll dividers and handles spread spectrum calculations and setup. Reviewed-by: Christian König Signed-off-by: Alex Deucher Reviewed-by: Jammy Zhou --- drivers/gpu/drm/amd/amdgpu/atombios_crtc.c | 53 +++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_crtc.c b/drivers/gpu/drm/amd/amdgpu/atombios_crtc.c index bd6c530..49a39b1 100644 --- a/drivers/gpu/drm/amd/amdgpu/atombios_crtc.c +++ b/drivers/gpu/drm/amd/amdgpu/atombios_crtc.c @@ -461,6 +461,7 @@ union set_pixel_clock { PIXEL_CLOCK_PARAMETERS_V3 v3; PIXEL_CLOCK_PARAMETERS_V5 v5; PIXEL_CLOCK_PARAMETERS_V6 v6; + PIXEL_CLOCK_PARAMETERS_V7 v7; }; /* on DCE5, make sure the voltage is high enough to support the @@ -566,18 +567,18 @@ static bool is_pixel_clock_source_from_pll(u32 encoder_mode, int pll_id) } void amdgpu_atombios_crtc_program_pll(struct drm_crtc *crtc, - u32 crtc_id, - int pll_id, - u32 encoder_mode, - u32 encoder_id, - u32 clock, - u32 ref_div, - u32 fb_div, - u32 frac_fb_div, - u32 post_div, - int bpc, - bool ss_enabled, - struct amdgpu_atom_ss *ss) + u32 crtc_id, + int pll_id, + u32 encoder_mode, + u32 encoder_id, + u32 clock, + u32 ref_div, + u32 fb_div, + u32 frac_fb_div, + u32 post_div, + int bpc, + bool ss_enabled, + struct amdgpu_atom_ss *ss) { struct drm_device *dev = crtc->dev; struct amdgpu_device *adev = dev->dev_private; @@ -695,6 +696,34 @@ void amdgpu_atombios_crtc_program_pll(struct drm_crtc *crtc, args.v6.ucEncoderMode = encoder_mode; args.v6.ucPpll = pll_id; break; + case 7: + args.v7.ulPixelClock = cpu_to_le32(clock * 10); /* 100 hz units */ + args.v7.ucMiscInfo = 0; + if ((encoder_mode == ATOM_ENCODER_MODE_DVI) && + (clock > 165000)) + args.v7.ucMiscInfo |= PIXEL_CLOCK_V7_MISC_DVI_DUALLINK_EN; + args.v7.ucCRTC = crtc_id; + if (encoder_mode == ATOM_ENCODER_MODE_HDMI) { + switch (bpc) { + case 8: + default: + args.v7.ucDeepColorRatio = PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_DIS; + break; + case 10: + args.v7.ucDeepColorRatio = PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_5_4; + break; + case 12: + args.v7.ucDeepColorRatio = PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_3_2; + break; + case 16: + args.v7.ucDeepColorRatio = PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_2_1; + break; + } + } + args.v7.ucTransmitterID = encoder_id; + args.v7.ucEncoderMode = encoder_mode; + args.v7.ucPpll = pll_id; + break; default: DRM_ERROR("Unknown table version %d %d\n", frev, crev); return;