From patchwork Tue Mar 26 04:42:15 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prasanna Kumar X-Patchwork-Id: 2334661 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 00A10DF264 for ; Tue, 26 Mar 2013 04:35:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759343Ab3CZEfq (ORCPT ); Tue, 26 Mar 2013 00:35:46 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:31564 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751393Ab3CZEfo (ORCPT ); Tue, 26 Mar 2013 00:35:44 -0400 Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MK900BEL3DY62J0@mailout2.samsung.com> for linux-samsung-soc@vger.kernel.org; Tue, 26 Mar 2013 13:35:33 +0900 (KST) Received: from epcpdlpp23 ( [172.20.52.123]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id 7B.65.05174.49521515; Tue, 26 Mar 2013 13:35:33 +0900 (KST) X-AuditID: cbfee68f-b7f4a6d000001436-bc-515125952c1e Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 1A.BB.13494.49521515; Tue, 26 Mar 2013 13:35:32 +0900 (KST) Received: from user-ubuntu.sisodomain.com ([107.108.83.235]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MK9005NH3F31K50@mmp2.samsung.com>; Tue, 26 Mar 2013 13:35:32 +0900 (KST) From: Prasanna Kumar To: linux-samsung-soc@vger.kernel.org, kgene.kim@samsung.com, linux-arm-kernel@lists.infradead.org Cc: Prasanna Kumar Subject: [PATCH] arm:exynos5250: Restore CLK_SRC_TOP3 register via CCF Date: Tue, 26 Mar 2013 10:12:15 +0530 Message-id: <1364272935-30607-1-git-send-email-prasanna.ps@samsung.com> X-Mailer: git-send-email 1.7.5.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMLMWRmVeSWpSXmKPExsWyRsSkWneqamCgwe35HBa9C66yWWx6fI3V Ysb5fUwWs3/8ZHdg8di8pN6jb8sqRo/Pm+QCmKO4bFJSczLLUov07RK4Mpbt3MhU8Fm44u76 OywNjJMFuhg5OSQETCQaXjUyQthiEhfurWfrYuTiEBKYxSixcM0SdpiivnvPGSES0xklTh56 zQqSEBLoZpI49zcExGYT0JOYP2M5WIOIQIrE908nWUBsZgEdif3PN4HFhQXcJC4dfgsWZxFQ lbj/eCfYZl4Bd4lLp49CLVOQ+HVkFSuEfZtN4tNBZYh6AYlvkw8B9XIAxWUlNh1ghiiRlDi4 4gbLBEbBBYwMqxhFUwuSC4qT0ouM9YoTc4tL89L1kvNzNzECA/D0v2f9OxjvHrA+xJgMNG4i s5Rocj4wgPNK4g2NzYwsTE1MjY3MLc1IE1YS51VrsQ4UEkhPLEnNTk0tSC2KLyrNSS0+xMjE wSnVwOi1ZUlV5qTaaawtG0wq/lfoHtWL9/tS2O7qwus35b9T+oeZAlv6VvhNE1CqjSg5z5f0 Qell4JlNV2UbpuhdeBbQEiHOb5D2f+a/2NZax5kXY5YcX/1tbd2mnA3aazht5q/8sDvhG5+p 0b2VdhGfHiw5+ltlzxPhqhSGd7G3ps1Zfsn5yIwPO1YqsRRnJBpqMRcVJwIALmttMVYCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIIsWRmVeSWpSXmKPExsVy+t9jQd0pqoGBBg/mWFn0LrjKZrHp8TVW ixnn9zFZzP7xk92BxWPzknqPvi2rGD0+b5ILYI5qYLTJSE1MSS1SSM1Lzk/JzEu3VfIOjneO NzUzMNQ1tLQwV1LIS8xNtVVy8QnQdcvMAdqmpFCWmFMKFApILC5W0rfDNCE0xE3XAqYxQtc3 JAiux8gADSSsYcxYtnMjU8Fn4Yq76++wNDBOFuhi5OSQEDCR6Lv3nBHCFpO4cG89WxcjF4eQ wHRGiZOHXrOCJIQEupkkzv0NAbHZBPQk5s9Yzg5iiwikSHz/dJIFxGYW0JHY/3wTWFxYwE3i 0uG3YHEWAVWJ+493gi3gFXCXuHT6KDvEMgWJX0dWsU5g5F7AyLCKUTS1ILmgOCk910ivODG3 uDQvXS85P3cTIzjAn0nvYFzVYHGIUYCDUYmHlyMsIFCINbGsuDL3EKMEB7OSCO+xC0Ah3pTE yqrUovz4otKc1OJDjMlA2ycyS4km5wOjL68k3tDYxNzU2NTSxMLEzJI0YSVx3oOt1oFCAumJ JanZqakFqUUwW5g4OKUaGA23pK25MCPy0hxJjhwuuxsP17p+dIwsOLoteUrF/fPln+dyHH2a vFh4uzvXnYQVnf58dhd1gjyvbNlxpqfJT+O2lqNZ+cr1KhctOwI+6pSLWwictHzJLnltrsDO Tzm5lnrXVsZ/+DFPe5LaHUFnv8ULRUKX2zYEZVZ3CFhq3Ml67zPLIVNvtRJLcUaioRZzUXEi AL+kFUu0AgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org From: Prasanna Kumar This patch adds support for restoring CLK_SRC_TOP3 register which gets modified while powergating corresponding power domains after a cycle of Suspend-to-Resume. Please refer below URL to know the background of this issue. http://www.mail-archive.com/linux-samsung-soc@vger.kernel.org/msg14347.html. This is based on Common Clock Framework defined for exynos5250 and patch mentioned here http://www.mail-archive.com/linux-samsung-soc@vger.kernel.org/msg16739.html Signed-off-by: Prasanna Kumar --- arch/arm/mach-exynos/pm_domains.c | 43 +++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c index 9f1351d..b5ed384 100644 --- a/arch/arm/mach-exynos/pm_domains.c +++ b/arch/arm/mach-exynos/pm_domains.c @@ -21,8 +21,11 @@ #include #include #include +#include +#include #include +#include #include /* @@ -35,6 +38,43 @@ struct exynos_pm_domain { struct generic_pm_domain pd; }; +static int exynos_pdclk_restore(struct exynos_pm_domain *domain) +{ + int i = 0; + struct clk *p_clk; + struct clk_hw *hw_clk; + const struct clk_ops *p_ops; + + const char *pdclks[][2] = { + { "gsc-power-domain", + "m_sub_aclk266" }, + { "gsc-power-domain", + "m_sub_aclk300" }, + { "mfc-power-domain", + "m_sub_aclk333" }, + }; + + for (i = 0; i < ARRAY_SIZE(pdclks); i++) { + if (!strcmp(domain->name, pdclks[i][0])) { + p_clk = clk_get(NULL, pdclks[i][1]); + if (IS_ERR(p_clk)) { + pr_err("failed to get base clk\n"); + return PTR_ERR(p_clk); + } + + hw_clk = __clk_get_hw(p_clk); + if (IS_ERR(hw_clk)) { + pr_err("failed to get hw_clk\n"); + return PTR_ERR(hw_clk); + } + p_ops = p_clk->ops; + if (p_ops != NULL && p_ops->set_parent != NULL) + p_clk->ops->set_parent(hw_clk, 1); + } + } + return 0; +} + static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on) { struct exynos_pm_domain *pd; @@ -61,6 +101,9 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on) cpu_relax(); usleep_range(80, 100); } + + if (!power_on && soc_is_exynos5250()) + exynos_pdclk_restore(pd); return 0; }