From patchwork Wed Sep 25 11:22:18 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Majewski X-Patchwork-Id: 2941781 Return-Path: X-Original-To: patchwork-linux-pm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 18DE69F2B8 for ; Wed, 25 Sep 2013 11:23:09 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 705BE20453 for ; Wed, 25 Sep 2013 11:23:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AD04920562 for ; Wed, 25 Sep 2013 11:23:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755237Ab3IYLWl (ORCPT ); Wed, 25 Sep 2013 07:22:41 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:44015 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755153Ab3IYLWk (ORCPT ); Wed, 25 Sep 2013 07:22:40 -0400 Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MTO00G65I997EY0@mailout4.samsung.com>; Wed, 25 Sep 2013 20:22:39 +0900 (KST) X-AuditID: cbfee61a-b7f7a6d00000235f-d7-5242c77e48b0 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id CC.51.09055.E77C2425; Wed, 25 Sep 2013 20:22:38 +0900 (KST) Received: from mcdsrvbld02.digital.local ([106.116.37.23]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MTO00E88I989I10@mmp2.samsung.com>; Wed, 25 Sep 2013 20:22:38 +0900 (KST) From: Lukasz Majewski To: "Rafael J. Wysocki" , Viresh Kumar Cc: Linux PM list , Lukasz Majewski , Lukasz Majewski , linux-kernel , Bartlomiej Zolnierkiewicz , Tomasz Figa , Myungjoo Ham , Kukjin Kim , Kukjin Kim , linux-samsung-soc@vger.kernel.org Subject: [PATCH 2/2] cpufreq: exynos4210: Use the common clock framework to set APLL clock rate Date: Wed, 25 Sep 2013 13:22:18 +0200 Message-id: <1380108138-30402-3-git-send-email-l.majewski@samsung.com> X-Mailer: git-send-email 1.7.10 In-reply-to: <1380108138-30402-1-git-send-email-l.majewski@samsung.com> References: <1380108138-30402-1-git-send-email-l.majewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrPLMWRmVeSWpSXmKPExsVy+t9jQd26405BBi8mWFpsnLGe1aJ3wVU2 i/7Hr5kt3jzitnjzcDOjxeVdc9gsPvceYbSYcX4fk8XtxhVAFQt7mSzWz3jNYrHxq4cDj8em VZ1sHneu7WHzWDftLbNH35ZVjB6PFrcwenzeJBfAFsVlk5Kak1mWWqRvl8CVMWFvfcF7vooL W8+wNzDO4eli5OSQEDCRePDjODOELSZx4d56ti5GLg4hgemMEmsurWOHcLqYJF71rWIFqWIT 0JP4fPcpE4gtIuArsfbxZUaQImaBBcwSS05tAysSFkiU+PL7FtAoDg4WAVWJp/PjQcK8Am4S e2/dZITYJi/x9H4fG4jNKeAusXz9arBWIaCaIxfvsExg5F3AyLCKUTS1ILmgOCk911CvODG3 uDQvXS85P3cTIzgYn0ntYFzZYHGIUYCDUYmHV+CoY5AQa2JZcWXuIUYJDmYlEd7wxU5BQrwp iZVVqUX58UWlOanFhxilOViUxHkPtFoHCgmkJ5akZqemFqQWwWSZODilGhg3Osw8vmLj1hkN zAv8Gp784PV6LWP7d9IqA7u19ZddjxdL1nCL9J0wqdt2stQ9bZ3JxHZpnQkW1+95vD4j9Wj5 IsVG4wqG+yV2D2zUg/6V8L3qkP8p8nvTy2bvSTtmNBiqfGqZOv+WhqjupOL3LM+0dCSC1yw2 TPdqnHIsKX8Raz2/mhHvciYlluKMREMt5qLiRABa/bZ8QgIAAA== Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,KHOP_BIG_TO_CC, RCVD_IN_DNSWL_HI, 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 In the exynos4210_set_apll() function, the APLL frequency is set with direct register manipulation. Such approach is not allowed in the common clock framework. The frequency is changed, but the corresponding clock value is not updated. This causes wrong frequency read from cpufreq's cpuinfo_cur_freq sysfs attribute. Tested at: - Exynos4210 - Trats board (linux 3.12-rc1) Signed-off-by: Lukasz Majewski --- drivers/cpufreq/exynos4210-cpufreq.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/drivers/cpufreq/exynos4210-cpufreq.c b/drivers/cpufreq/exynos4210-cpufreq.c index add7fbe..363c658 100644 --- a/drivers/cpufreq/exynos4210-cpufreq.c +++ b/drivers/cpufreq/exynos4210-cpufreq.c @@ -81,9 +81,9 @@ static void exynos4210_set_clkdiv(unsigned int div_index) static void exynos4210_set_apll(unsigned int index) { - unsigned int tmp; + unsigned int tmp, freq = apll_freq_4210[index].freq; - /* 1. MUX_CORE_SEL = MPLL, ARMCLK uses MPLL for lock time */ + /* MUX_CORE_SEL = MPLL, ARMCLK uses MPLL for lock time */ clk_set_parent(moutcore, mout_mpll); do { @@ -92,21 +92,9 @@ static void exynos4210_set_apll(unsigned int index) tmp &= 0x7; } while (tmp != 0x2); - /* 2. Set APLL Lock time */ - __raw_writel(EXYNOS4_APLL_LOCKTIME, EXYNOS4_APLL_LOCK); - - /* 3. Change PLL PMS values */ - tmp = __raw_readl(EXYNOS4_APLL_CON0); - tmp &= ~((0x3ff << 16) | (0x3f << 8) | (0x7 << 0)); - tmp |= apll_freq_4210[index].mps; - __raw_writel(tmp, EXYNOS4_APLL_CON0); - - /* 4. wait_lock_time */ - do { - tmp = __raw_readl(EXYNOS4_APLL_CON0); - } while (!(tmp & (0x1 << EXYNOS4_APLLCON0_LOCKED_SHIFT))); + clk_set_rate(mout_apll, freq * 1000); - /* 5. MUX_CORE_SEL = APLL */ + /* MUX_CORE_SEL = APLL */ clk_set_parent(moutcore, mout_apll); do {