From patchwork Wed Nov 29 03:03:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10081543 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 325786020B for ; Wed, 29 Nov 2017 08:28:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2087828F6A for ; Wed, 29 Nov 2017 08:28:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 155FB29738; Wed, 29 Nov 2017 08:28:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 8D92D28F6A for ; Wed, 29 Nov 2017 08:28:17 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 733D76E874; Wed, 29 Nov 2017 08:26:53 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org X-Greylist: delayed 303 seconds by postgrey-1.35 at gabe; Wed, 29 Nov 2017 03:08:57 UTC Received: from relmlie2.idc.renesas.com (relmlor3.renesas.com [210.160.252.173]) by gabe.freedesktop.org (Postfix) with ESMTP id 6F5326E7E1 for ; Wed, 29 Nov 2017 03:08:57 +0000 (UTC) Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie2.idc.renesas.com with ESMTP; 29 Nov 2017 12:03:51 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id 60EF861291; Wed, 29 Nov 2017 12:03:51 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.44,470,1505746800"; d="scan'208";a="264845725" Received: from mail-pu1apc01lp0015.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.15]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 29 Nov 2017 12:03:50 +0900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=blirMBCxuqMFTGL0RXcvMhNrnq7W/6hZxzr2molKC2M=; b=Q3z6NoYyU3AVJk40bYa2HvqSHximQjIsuEwvO9T3wD7qrPRzEC2w3oVhn5Lb1D8d1+10lXrcpiXzEBly6qHdD0nAAKgdGruxS4CuRqu6eD+hdSYnf9MvQUPN9jZ28lPLbWB0nbZTrrz9DjXuUOCHwZOCvQ3Cj/96vPt4TAhY5So= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.138) by SG2PR0601MB1885.apcprd06.prod.outlook.com (2603:1096:3:9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.4; Wed, 29 Nov 2017 03:03:47 +0000 Message-ID: <871skhssjt.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH] drm: rcar-du: calculate DPLLCR to be more small jitter User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Laurent Pinchart , David Airlie MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Wed, 29 Nov 2017 03:03:47 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: HK2PR02CA0176.apcprd02.prod.outlook.com (2603:1096:201:21::12) To SG2PR0601MB1885.apcprd06.prod.outlook.com (2603:1096:3:9::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 844ffa52-0648-47bf-3df7-08d536d5cfdb X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(48565401081)(2017052603263); SRVR:SG2PR0601MB1885; X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1885; 3:ymgAeRqZy+7rx8qi4sb92fcGpkmp0TomKnNaxjBiRatNYEHMN1rNvRjo48lHhZCNna78Yl3om6NJ1HtzZ406r9eLUj2OM+1gLAkvJbD5SyfHC9OHum96vVOIvOqztSvQw4Hu/Xa+9HIlRr6JQXKquMcVV/KZV4Ddbf91o8GKx/HoJteWgCifRbATyv06AG9CWL09QgCKbRVH9SuKup4X2wfaE7ebppiYP0L7eCo1vn4+qRl47VpVghekfkyZnOor; 25:X6jMdsBNMz9xtxmfqjno9Qp7TrgqQdA7bcHxiMkHPbcJjhv3ebLLyHNPcwbs4aPc34XdeaUO+yhXP1Bw5hvhb2e+MVaeZGEjy7/f5ygLKB3xIVKWVPLxDy4o2pJ+C/5uHA73l2ennt/ZemQZdoUSsXBa68AWJ+tm8xRjjnSyJteiSIeNehlod0qQ2Y6LpSHrZRRPNUCYVtRtAi4jDnyHfcvyGWDn0z0z+DrzQaGTionOQpvkf4j0oiqRFNSzOl8H14xs39AzM6fvRsu32Wk2itcV+LFl/E41KVNVpoADT0i9koxxJn0EwcUnI1zNunSIs5RyvydiUxu4zucDQtosQA==; 31:jxPVaNho35jddk8+yKeErcgz0yI+Q2r8wFDf8OTwVa+FUdF35rqEWxne1BrbGii5ac9rO+r3ybD9n2TfCrHdkqhlO2mZ7tLtOc90BHTJKa4Grp+bhl7xt/Q2r4kmTEPRcykGZ4VxHSHnBBXLlynjAKQVWLc//VQrv0tH2GJPISJ9GE/nDUE1XyU45l/EsVmdBGDfgl76l8sHsWnzWZH0Orbdxz9p5sqo/dKtkF53aNA= X-MS-TrafficTypeDiagnostic: SG2PR0601MB1885: X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1885; 20:6pMlAxv6MTs0SMdyjjXp8KQwaL7Z7+7NadsBY+ND9FL7/K03Yq47EqLL2hDcTv+Sfhw//4Ol21ahSDPNVqBCI6CJRolKQCRKxAJ9kGmBz362soAwXj5Z3PWX8VBy4oSjAegfmInkTLhMfCwozMGsxHBWJhIavAxkMCWEVN4Nd2FVVqQHtnjEElA83bAivds+HgD+pqD0x3It2GMGqq9rQqRbI8eKRtVbYHQaAuDI5dlKYGWM8hKXFF19kDUEtB7aI36ZBSU6KS0gaNtl2f+hZiVbc83Wnz8V4aPRsDMY4dmi8/UUM798xcTbljxMkxrdH+EaJdDN4qJ069aAcmwtu84wqhq/N5lafW/JeOdxGAGATiHhzy0tPIFIFXfYxDiqzrbb+Uad+88RdalTk4uRptITmaHxkC33BMn7+Pzk2JiZmigbZRWFYCdD7VCooC0fMrv1+1Lovujnqj932l57KltCjfigRY5DPeHQSUPB+hYJE5d+cWMFUtw13hsflXGr; 4:/SjcqzXWTVSCmsU2QdCFFbj4uQq1jTCynbFTwRG/iiChq57PQUlA5Fe6nnsfqp4itfB72PncBis45CEWYjOkhOpYnO2HD7zp43Mf/fLoleK/LWzLrml17CLU55xVxQAQ9KG7vgQ+9rXB+QwjttdxQEjaTdBlElqbgW2kZoUzOW3vDIapM2mu+cnIJxOKrKDjLjoBwqffbNsEiyIMuQm25LWMuWM4Z4W1e6fMO8kKLZ5vhcoytQk/ouiC9PJMMbHUqviQPw0Wd0k7aLsdRtizZg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3231022)(3002001)(6055026)(6041248)(20161123560025)(20161123562025)(20161123564025)(20161123555025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SG2PR0601MB1885; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:SG2PR0601MB1885; X-Forefront-PRVS: 05066DEDBB X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(376002)(346002)(366004)(39860400002)(199003)(189002)(16526018)(81166006)(106356001)(68736007)(33646002)(105586002)(66066001)(7736002)(47776003)(53936002)(305945005)(81156014)(53416004)(25786009)(8676002)(97736004)(6116002)(3846002)(23726003)(16586007)(189998001)(50986999)(101416001)(54356999)(478600001)(110136005)(58126008)(69596002)(83506002)(36756003)(316002)(50466002)(5660300001)(52116002)(6486002)(4326008)(86362001)(8936002)(2906002)(7696005)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:SG2PR0601MB1885; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: renesas.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SG2PR0601MB1885; 23:rmsrYJcOba1GHZU6B+DqhhBR9H8KeURl6G2OFUL?= =?us-ascii?Q?/q1hm9sEM43EHHDuGxCHLr9HcFtWzo4nFXoxzXQ/1zbH3P4Ef8NH6gh0K2dW?= =?us-ascii?Q?NebBqFwy/9Hx3NiAGs9NWgm6bH3XWcndOdIOL8ej6+IZe1UIq1sp57i5rOXZ?= =?us-ascii?Q?/dUIaHh5IzxMQAijx6LzosGjZP4Loq1TBQgykC6Qf7Dk1B8uH+PMPgC0Xi0I?= =?us-ascii?Q?TFjvY0A8Mc8EH/UykwLowsu9zF9kL+R0uSUSGPFNg2Hk4wvp3miKaPVNUVuB?= =?us-ascii?Q?j3mymN24Ld30WCfm9A9hCEJWY1ET2668lGeIMEP/lcyryfeLr9HxsmwCI78+?= =?us-ascii?Q?dilmZ9IG2Gs9JFzmFH3XHacOeBIzB+I9SrLw7HreMLK92QP4mpw7LgG+0Y8H?= =?us-ascii?Q?qhTWdN4AMyw2KdzmGHY37co3+G74CIwamZr/DCRtDsmv5A+t5i53tAL4oxXz?= =?us-ascii?Q?Ow2yS1x/ptYee5MUiBURdUWnatqiFdcDxyD71537jfG9CgwqujVpcrKdSdER?= =?us-ascii?Q?B78/IGSRnYfhs+OnXRztTwlFXeotf9T4tU+Z43RuXpdj8L+C9tGGBfUCV8Cw?= =?us-ascii?Q?2IHcvxYnKmeKtXsedVzhZjzfgXYUBK7KB/X/EMaaiB28vlDlEtLE/+FvOlqO?= =?us-ascii?Q?Z6R4hlkq84dlBmhnJS4ag2K1/aG3SlfPh5bKZQdKra693pGEOvECLBlKiMm3?= =?us-ascii?Q?zpJnsyZ84DGfdiy4v33/Bsf/V4hVFflk1iN8laK6EzYZk/rk7HeO+h8H9Vj3?= =?us-ascii?Q?eh6OneUMtQaD7ZAd21RmaBHDpEa10E9sl68GcId1FnIzwtMsCRlP/vsJEj2h?= =?us-ascii?Q?NCJz6ubTvvF0ni+AHh6WNaRL0sKNayRJ37NwpGExUxan7zmXQPg2l+nM366h?= =?us-ascii?Q?oMIwmMrw47aNWwsliVOuKmlO/dzjATQ0De7U9+O7THKZpMv4hTrV90gJrTco?= =?us-ascii?Q?Uj2eRMAfz5TnMRH2WyO/JFM3cDoRwNpInTAfNeOekSdjaV9OwEDkiAf2naHb?= =?us-ascii?Q?lXHhE7n8/JjwFKgwu5xyIrWVPCAN5AcGDi6E/CQf7l77X8Lcau50LtervRky?= =?us-ascii?Q?bqO+U17Bd3u+cedvIbotN1kSoVdlnZlN7QcdmKi+XviasQSfUjnReZcda9js?= =?us-ascii?Q?Eh9Yxm1zDI78=3D?= X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1885; 6:hAUjKFjxKIRTm2yTfySVoUIMz8JhpVpckQOtK/X+oHIb4o9JPEnjxnWpyT7TH/uuiJN7ehbjXyh93nBjrex3ZwJd7jcfhJh7dpy+JWJfOBnh0SYELLg2CfqbZdMv/VAAWrnpiAS11QkT18MlBYTzaZVD03hih+6vTULmKJrKO7y3m26yDKH1MQUcMGU7S8E94HCTFq+3679cTVcdvt5l+Bstr2iXPbEvZVo1YfK425JVyTDapZE+u5mY16aQWLoDhCaylVYTkJMwvqyh65Fxee0jHgMeGKRWyFHwwQpX+CRrS+5XyPIvDjnbRb0VZBVwzdoYH4/2Lja8voKxdOdz2bq3CKFCx5su67FoqBOp1m0=; 5:WOQG4uGPS2PeXkCEp4b8fFhbl8wl6M9dv8cvx4vH42Cg5saAmgCGikBSs+g29RzreORsy0c/eB5iDMV6W2MiIvDVdKGBBoFE9VFc4Q3JyLe6TN8VVXFfc5roa+UuYROor0d51WHJ0YLCyX83i9I3N4mUA/NU4DUPjTilAh9mwBU=; 24:/pYOjElEkMGAAEjypSQPlegcwUxyr7wilSIUgeAsjR3nXCnQVX5biiItPl3t0rP26cpKWKpYVQL2LeK9FYOeszFcKDkZpp2ehhvXNEJjhM4=; 7:MDSyEWVC9haNQzPCLZ1VB7ECN4JXUxpsxMLnazV0iQLh4k4vCxL3ty0tsdfe4Ux9kgR/vC7NZOvXx9Il8v3Mkh/QBcJ5ENWXfPhFDyD5UjA/G2z99irF73MoT8jRo4Sgtg10LmX5igX2Liob9ElpnFfN/rB7zhPOQ10VphErRzrWA7hjMjb+cmhA/UrOIE3G+f8Jn5v84o8zT+IKp9b3G4ubAOQ964FzMuRS6lhrKSBjgDSlMSE3eS/tqpjwxe4E SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1885; 20:n7UoY5jEG4oneh9Savd49PR+KYippYHq+0EeHqQMdmXMAikBi49OZY1V9tik7zFP/b4HdwzP1uMWthktGg6tHsQclZVa28nh73g08fcsStFIcZoRSyptQrPUVlOAAIsQP//O7YWLBLW3RPGpsENW6z0A44fhKZwe47mTYcX6dHc= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Nov 2017 03:03:47.5197 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 844ffa52-0648-47bf-3df7-08d536d5cfdb X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR0601MB1885 X-Mailman-Approved-At: Wed, 29 Nov 2017 08:26:48 +0000 Cc: linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org 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-Virus-Scanned: ClamAV using ClamSMTP From: Kuninori Morimoto In general, PLL has VCO (= Voltage controlled oscillator), one of the very important electronic feature called as "jitter" is related to this VCO. In academic generalism, VCO should be maximum to be more small jitter. In high frequency clock, jitter will be large impact. Thus, selecting Hi VCO is general theory. fin fvco fout fclkout in --> [1/M] --> |PD| -> [LPF] -> [VCO] -> [1/P] -+-> [1/FDPLL] -> out +-> | | | | | +-----------------[1/N]<-------------+ fclkout = fvco / P / FDPLL -- (1) In PD, it will loop until fin/M = fvco/P/N fvco = fin * P * N / M -- (2) (1) + (2) indicates, fclkout = fin * N / M / FDPLL In this device, N = (n + 1), M = (m + 1), P = 2, thus fout = fin * (n + 1) / (m + 1) / FDPLL This is the datasheet formula. One note here is that it should be 2000 < fvco < 4096MHz To be smaller jitter, fvco should be maximum, in other words, N as large as possible, M as small as possible driver should select. Here, basically M=1. This patch do it. Reported-by: HIROSHI INOSE Signed-off-by: Kuninori Morimoto --- drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 36 ++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c index b492063..45540fe 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c @@ -125,8 +125,40 @@ static void rcar_du_dpll_divider(struct rcar_du_crtc *rcrtc, unsigned int m; unsigned int n; - for (n = 39; n < 120; n++) { - for (m = 0; m < 4; m++) { + /* + * fin fvco fout fclkout + * in --> [1/M] --> |PD| -> [LPF] -> [VCO] -> [1/P] -+-> [1/FDPLL] -> out + * +-> | | | + * | | + * +-----------------[1/N]<-------------+ + * + * fclkout = fvco / P / FDPLL -- (1) + * + * fin/M = fvco/P/N + * + * fvco = fin * P * N / M -- (2) + * + * (1) + (2) indicates + * + * fclkout = fin * N / M / FDPLL + * + * NOTES + * N = (n + 1), M = (m + 1), P = 2 + * 2000 < fvco < 4096Mhz + * Basically M=1 + * + * To be small jitter, + * N : as large as possible + * M : as small as possible + */ + for (m = 0; m < 4; m++) { + for (n = 119; n > 40; n--) { + unsigned long long fvco = input * 2 * (n + 1) / (m + 1); + + if ((fvco < 2000) || + (fvco > 4096000000ll)) + continue; + for (fdpll = 1; fdpll < 32; fdpll++) { unsigned long output;