From patchwork Wed Jan 20 10:14:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andi Shyti X-Patchwork-Id: 8070601 Return-Path: X-Original-To: patchwork-linux-samsung-soc@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 CBC9ABEEE5 for ; Wed, 20 Jan 2016 10:15:42 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id E0F64203DC for ; Wed, 20 Jan 2016 10:15:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C4060203A5 for ; Wed, 20 Jan 2016 10:15:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934452AbcATKPU (ORCPT ); Wed, 20 Jan 2016 05:15:20 -0500 Received: from mailout4.samsung.com ([203.254.224.34]:45090 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934928AbcATKOr (ORCPT ); Wed, 20 Jan 2016 05:14:47 -0500 Received: from epcpsbgr4.samsung.com (u144.gpu120.samsung.co.kr [203.254.230.144]) by mailout4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0O18020UUXSAYD50@mailout4.samsung.com>; Wed, 20 Jan 2016 19:14:34 +0900 (KST) Received: from epcpsbgm2new.samsung.com ( [172.20.52.113]) by epcpsbgr4.samsung.com (EPCPMTA) with SMTP id AF.A3.04886.A0E5F965; Wed, 20 Jan 2016 19:14:34 +0900 (KST) X-AuditID: cbfee690-f79646d000001316-e3-569f5e0a619b Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id 4A.CA.09068.A0E5F965; Wed, 20 Jan 2016 19:14:34 +0900 (KST) Received: from samsunx.samsung ([10.113.63.54]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0O1800E77XS6VX80@mmp1.samsung.com>; Wed, 20 Jan 2016 19:14:33 +0900 (KST) From: Andi Shyti To: linux-samsung-soc@vger.kernel.org Cc: Sangbeom Kim , Krzysztof Kozlowski , Michael Turquette , Stephen Boyd , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, Andi Shyti , Andi Shyti , Yadwinder Singh Brar , Jaehoon Chung Subject: [PATCH v3 2/4] clk: s2mps11: allocate only one structure for clock init Date: Wed, 20 Jan 2016 19:14:22 +0900 Message-id: <1453284864-8082-3-git-send-email-andi.shyti@samsung.com> X-Mailer: git-send-email 2.6.4 In-reply-to: <1453284864-8082-1-git-send-email-andi.shyti@samsung.com> References: <1453284864-8082-1-git-send-email-andi.shyti@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrILMWRmVeSWpSXmKPExsWyRsSkUJcrbn6YwfoJohbbjzxjtVj84zmT xY1fbawWr18YWnzsucdqcXnXHDaLGef3MVlcPOVqcXHFFyaLH2e6WSzm/m5kdeD2eH+jld3j cl8vk8f1JZ+YPXbOusvu0bdlFaPH501yAWxRXDYpqTmZZalF+nYJXBktl+ULzqtUXH/+hL2B 8ZNsFyMnh4SAicTHvtOsELaYxIV769m6GLk4hARWMErsvNoB5HCAFX36lwwRX8oocfnNdmYI 5yOjxMp1d9hButkENCWabv9gA7FFBFQlPrctYAcpYhZoY5ZoP7qFBSQhLBAgsWznNWYQmwWo 6Mybh2BxXgFXiXmvZjJDbJOTmDTBASTMKeAm8WnOEiYQWwio5EnLfLCZEgKH2CXuXZ/MDjFH QOLb5EMsEL2yEpsOMEN8IylxcMUNlgmMwgsYGVYxiqYWJBcUJ6UXmegVJ+YWl+al6yXn525i BMbE6X/PJuxgvHfA+hCjAAejEg8vQ/O8MCHWxLLiytxDjKZAGyYyS4km5wMjL68k3tDYzMjC 1MTU2Mjc0kxJnPe11M9gIYH0xJLU7NTUgtSi+KLSnNTiQ4xMHJxSDYwqEt3Outu3aDXcPFrw aWM7856Ha3he3ucMZl0RaB+QHfrEcKXUU+n/KTNZLO5l2m37XdrL5fv9SaL3g8JjgVUM50L+ 7PJr/a61aqe2Xsg+xcVc67auTg9UurO5lTf1zjatlx1NAe5ea65wf7+4KP4d54QYpuqX6TN3 KpTOe82fMct61s/fpmFKLMUZiYZazEXFiQCHxBjFhAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrHIsWRmVeSWpSXmKPExsVy+t9jAV2uuPlhBv1r+C22H3nGarH4x3Mm ixu/2lgtXr8wtPjYc4/V4vKuOWwWM87vY7K4eMrV4uKKL0wWP850s1jM/d3I6sDt8f5GK7vH 5b5eJo/rSz4xe+ycdZfdo2/LKkaPz5vkAtiiGhhtMlITU1KLFFLzkvNTMvPSbZW8g+Od403N DAx1DS0tzJUU8hJzU22VXHwCdN0yc4DOU1IoS8wpBQoFJBYXK+nbYZoQGuKmawHTGKHrGxIE 12NkgAYS1jBmtFyWLzivUnH9+RP2BsZPsl2MHBwSAiYSn/4ldzFyApliEhfurWfrYuTiEBJY yihx+c12ZgjnI6PEynV32EGq2AQ0JZpu/2ADsUUEVCU+ty1gByliFmhjlmg/uoUFJCEsECCx bOc1ZhCbBajozJuHYHFeAVeJea9mMkNslpOYNMEBJMwp4Cbxac4SJhBbCKjkSct89gmMvAsY GVYxSqQWJBcUJ6XnGuWllusVJ+YWl+al6yXn525iBMfdM+kdjId3uR9iFOBgVOLhjWidFybE mlhWXJl7iFGCg1lJhHdH5PwwId6UxMqq1KL8+KLSnNTiQ4ymQHdNZJYSTc4HpoS8knhDYxMz I0sjc0MLI2NzJXHefZciw4QE0hNLUrNTUwtSi2D6mDg4pRoYTdM+mbKv25LvOmVngdY34bDL TmJs3aqLVPV0pjZVzw46xb2KRSBI7d6kI9ZPDZZdsDBMOq2ivmzPlfVTnoeEO1v5f5rOPXHP A4/AMxME3nIXlSpnC18sVpXssMxR/b/Y6JGJeYUj/5HKEz81ZFQiZr+9pM3a8KHtvPzklbHl pcHV1xL0XhoosRRnJBpqMRcVJwIAxK69Y9ECAAA= 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 X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, 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 The driver allocates three structures, s2mpsxx_clk_init, for three different clock types (s2mps11, s2mps13 and s2mps14). They are quite similar but they differ only by the name. Only one of these structures is used, while the others lie unused in the memory. The clock's name, though, is not such a meaningful information and by assigning the same name to the initial data we can avoid over allocation. The common name chosen will be s2mps11, coherently with the device driver name, instead of the clock device. Therefore, remove the structures associated to s2mps13 and s2mps14 and use only the one referred to s2mps11 for all kind of clocks. Signed-off-by: Andi Shyti Suggested-by: Krzysztof Kozlowski Reviewed-by: Krzysztof Kozlowski --- drivers/clk/clk-s2mps11.c | 51 +++++++---------------------------------------- 1 file changed, 7 insertions(+), 44 deletions(-) diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c index e7b97f4..3ff2162 100644 --- a/drivers/clk/clk-s2mps11.c +++ b/drivers/clk/clk-s2mps11.c @@ -99,6 +99,7 @@ static struct clk_ops s2mps11_clk_ops = { .recalc_rate = s2mps11_clk_recalc_rate, }; +/* This s2mps11_clks_init tructure is common to s2mps11, s2mps13 and s2mps14 */ static struct clk_init_data s2mps11_clks_init[S2MPS11_CLKS_NUM] = { [S2MPS11_CLK_AP] = { .name = "s2mps11_ap", @@ -117,37 +118,6 @@ static struct clk_init_data s2mps11_clks_init[S2MPS11_CLKS_NUM] = { }, }; -static struct clk_init_data s2mps13_clks_init[S2MPS11_CLKS_NUM] = { - [S2MPS11_CLK_AP] = { - .name = "s2mps13_ap", - .ops = &s2mps11_clk_ops, - .flags = CLK_IS_ROOT, - }, - [S2MPS11_CLK_CP] = { - .name = "s2mps13_cp", - .ops = &s2mps11_clk_ops, - .flags = CLK_IS_ROOT, - }, - [S2MPS11_CLK_BT] = { - .name = "s2mps13_bt", - .ops = &s2mps11_clk_ops, - .flags = CLK_IS_ROOT, - }, -}; - -static struct clk_init_data s2mps14_clks_init[S2MPS11_CLKS_NUM] = { - [S2MPS11_CLK_AP] = { - .name = "s2mps14_ap", - .ops = &s2mps11_clk_ops, - .flags = CLK_IS_ROOT, - }, - [S2MPS11_CLK_BT] = { - .name = "s2mps14_bt", - .ops = &s2mps11_clk_ops, - .flags = CLK_IS_ROOT, - }, -}; - static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev, struct clk_init_data *clks_init) { @@ -164,12 +134,9 @@ static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev, return ERR_PTR(-EINVAL); } - for (i = 0; i < S2MPS11_CLKS_NUM; i++) { - if (!clks_init[i].name) - continue; /* Skip clocks not present in some devices */ + for (i = 0; i < S2MPS11_CLKS_NUM; i++) of_property_read_string_index(clk_np, "clock-output-names", i, &clks_init[i].name); - } return clk_np; } @@ -179,8 +146,8 @@ static int s2mps11_clk_probe(struct platform_device *pdev) struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent); struct s2mps11_clk *s2mps11_clks, *s2mps11_clk; unsigned int s2mps11_reg; - struct clk_init_data *clks_init; int i, ret = 0; + enum sec_device_type hwid = platform_get_device_id(pdev)->driver_data; s2mps11_clks = devm_kcalloc(&pdev->dev, S2MPS11_CLKS_NUM, sizeof(*s2mps11_clk), GFP_KERNEL); @@ -194,22 +161,18 @@ static int s2mps11_clk_probe(struct platform_device *pdev) if (!clk_table) return -ENOMEM; - switch(platform_get_device_id(pdev)->driver_data) { + switch (hwid) { case S2MPS11X: s2mps11_reg = S2MPS11_REG_RTC_CTRL; - clks_init = s2mps11_clks_init; break; case S2MPS13X: s2mps11_reg = S2MPS13_REG_RTCCTRL; - clks_init = s2mps13_clks_init; break; case S2MPS14X: s2mps11_reg = S2MPS14_REG_RTCCTRL; - clks_init = s2mps14_clks_init; break; case S5M8767X: s2mps11_reg = S5M8767_REG_CTRL1; - clks_init = s2mps11_clks_init; break; default: dev_err(&pdev->dev, "Invalid device type\n"); @@ -217,15 +180,15 @@ static int s2mps11_clk_probe(struct platform_device *pdev) } /* Store clocks of_node in first element of s2mps11_clks array */ - s2mps11_clks->clk_np = s2mps11_clk_parse_dt(pdev, clks_init); + s2mps11_clks->clk_np = s2mps11_clk_parse_dt(pdev, s2mps11_clks_init); if (IS_ERR(s2mps11_clks->clk_np)) return PTR_ERR(s2mps11_clks->clk_np); for (i = 0; i < S2MPS11_CLKS_NUM; i++, s2mps11_clk++) { - if (!clks_init[i].name) + if (i == S2MPS11_CLK_CP && hwid == S2MPS14X) continue; /* Skip clocks not present in some devices */ s2mps11_clk->iodev = iodev; - s2mps11_clk->hw.init = &clks_init[i]; + s2mps11_clk->hw.init = &s2mps11_clks_init[i]; s2mps11_clk->mask = 1 << i; s2mps11_clk->reg = s2mps11_reg;