Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761853AbcJaHxx (ORCPT ); Mon, 31 Oct 2016 03:53:53 -0400 Received: from mail-db5eur01on0054.outbound.protection.outlook.com ([104.47.2.54]:26084 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1761672AbcJaHxt (ORCPT ); Mon, 31 Oct 2016 03:53:49 -0400 Authentication-Results: spf=pass (sender IP is 193.47.165.134) smtp.mailfrom=mellanox.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=pass action=none header.from=mellanox.com; From: Noam Camus To: , , CC: , , , Noam Camus Subject: [PATCH v3 2/3] clocksource: update "fn" at CLOCKSOURCE_OF_DECLARE() of nps400 timer Date: Mon, 31 Oct 2016 09:37:47 +0200 Message-ID: <1477899468-5494-3-git-send-email-noamca@mellanox.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1477899468-5494-1-git-send-email-noamca@mellanox.com> References: <1477899468-5494-1-git-send-email-noamca@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-Product-Ver: SMEX-11.0.0.1191-8.000.1202-22520.000 X-TM-AS-Result: No--5.686200-8.000000-31 X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:193.47.165.134;IPV:NLI;CTRY:IL;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(189002)(199003)(5001770100001)(4001430100002)(50986999)(356003)(77096005)(7846002)(107886002)(36756003)(586003)(305945005)(50466002)(8936002)(92566002)(50226002)(49486002)(87936001)(33646002)(86362001)(106466001)(19580395003)(19580405001)(8676002)(189998001)(2906002)(6666003)(47776003)(81166006)(48376002)(229853001)(11100500001)(2950100002)(76176999)(626004)(4326007)(5660300001)(5003940100001)(81156014);DIR:OUT;SFP:1101;SCL:1;SRVR:AM4PR05MB1890;H:mtlcas13.mtl.com;FPR:;SPF:Pass;PTR:mail13.mellanox.com;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;AM1FFO11FD045;1:999xWso+QKSzi6/2WNdIt6qBvnDMTE1EuL5Lx0M5NctnL/Gi7Q4b8li9m69vqhiWPeiu3B25kzazYOSN/+fKlNGMqtyF6OotMI1jofmHDDGkwr5d6SnT2OB26F5LhIVGkrw08QJ3NqcA+fTWG+WEmiibS25N4cZmA2v1n68Q62/opP9dOOgkIN8azo4/Q94EbA5HIyrPm1FhwMovoEGwmNuK3sw1/hn4vE+w9Sh8yh6ea7r9yW8pp3cz/KJqaiA1+3qQMlfx/0k8h0xP+DZrEzKzM7MhYJJiA/R/bFVSFlEsritWCBLBjl3w12yPINbHXGX2cyfv/3sA4Grop/7LjdVNoPotwifnIGyT5JQ3fOr5B0YGDb2+OhCC0laZpfB6hpOQ2QLcQcz6OjnD0vYA29q+sE7wOEmYx+qfqYf+c7G9FuhJeLDn/Zy5svg6DY7pnYgaNwl0EPX/t31K/9rrAoivyAt3R5tyswSZBLBvqNLsCL1IlBRqb2Z5UmFbnRDXVJ6cGZK4DBj/zW+jto25+yBXAggCYOmgNNT79Giz7Aa0v4wRBRBfVpc/gsOE2CEgfdrs/URIFOogexir+CAvJw== X-MS-Office365-Filtering-Correlation-Id: 2d003913-cc75-45aa-d300-08d401610c4f X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1890;2:eqVesW3VF8DnXvne3dCWt/I/J2l9nElG/hr1cifPkqi0jrN3r7OF6vuLFGMXpX7dJUZtOWAZXsLDQd72mWrKL4irzJjNK8zB/5NvetqNpW7ZjgzbbMJGNk6tlfDk/sSB0xcU15otkTWISj9+vzZm9J1yWJ1SncEBI7EmobIN3eAhIXzOtMQvGdTkAMzyHXDdn4o+WKdHKxVy562FkBORew==;3:/jZ6pOKPFYaDUPOx7Ta5A685nLpOBqrWmThd+GAib3BVwI3T8Ur8pIRbM+3C5RjUE6eulcI3W5pe45DUwL31wM0JcZIQ+WBw98D2HK/hq4tSgkta+1yTeoBsJZXEIT99V+B068Gs9t6p8wr+pCPJfcZcjozGA8KrMbWjlX1tY0t/WSSp6Ise/kUu3CqMnTdOooxcbx28FI/J7TzB467j9kGVGX0SO+NHoXQMwGmW2liJ4DtMmPXP4amOvyWy38Q1lJKKWm1KX0DkLmFQ9njYB73vg6lhR9wNfPiFlFTW8bc= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:AM4PR05MB1890; X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1890;25:b19oI9YGfXy+wFyLNHGL2nloUQZpGen79xMUAQ6I13lYhFAjPeniuLsqwGdFWVGT84M6Rh3sToy5Nkjly2qQXrZlfE/vxvJloxzocNkbjGeHEeDF7mCwE0jdxWHcHqfRaIt2l0AxrmH2IAwWEoeqSD6/UyCaygixLHzYF77/DuAzP1QFGptmUXHF8jNiJHid2qr1UPmnJXq35JXpZAF0AEir+LbeSCwvUCBrEI89tWZfhC9Ii9F4JUMa0UYt8Kpmtu35h4oYMwYeV5/txBvhP5z7aBe08yKviZMytNDPfavcovUlu5dT4RjaaHFjuSRP6wqXig0iVjvCgl1KPL+qYd0UMI/l08ntvOcrIvk48gDZ+08frSowBmbQKvOwOVR6DEdk+RfEni44rZ6Al5TdjJUo3o8zgbZozAifK1MwOmzKMCfUgX5UsVoSEq0SDK7L;31:+4u65QfQQP1E1o+Ef2A4WXK0HezO4SSqrhdukW9jrO4Rup6piJxHCyRuoaSmC9Dfcof9E0bHYosKx5InWio9x3Cpd80hNqd/gtKu9zbyGjJ61mAL6A3fOeG2SbQmqpB+h0rlUuhxmEOWa5sIIDDr+/g038dvlnhNtcFTLxUdrOfLqpRJ3Zq1rE0L7tuTKj3zozaoNqmth3QCIizv/WIaYxBL6bgPu1HM5wTi0SOxxuQbv3jL3kTKz4lSciN5dMpq7FMxA+Smm/QuRmrBgZ+zCA== X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1890;20:h6YDzjKECpDrdYmJ1XPEJKC8/tkWrGxZ2IiVXeQtXNExBFdlinLzg3K0wFvxYtoYSk7qmxNX+HmTLyc4jgd+TEe96AbxgGhiPJ1/uiFCLY4Fot1TCyZgPsIpSVwbFZ717Rx9P6Y+9W5+MRfoqm7zFdMLogwdq5fkw8/YxwnmoDnHgel/Wyr+Dl3FQZY/KiTIO6YJ5X3PdZ+BIrg74h416HsqgEb6NxyvRpi3nfDv5AbBOscBUPozyGrx1i5oy0NOov0yg6NUXJFDLAuRbOOW0cTS3BeqPoAO6Pp9MrkzTu4gIUmjmPDZ8Kr5f+eg0nMQMHRZqUygYRUDvq9ZaaM/ubjm39EiaU7qFfMhR9vBbEAUBuvzJX5dbIQaZkUAAJf9n7VZmjUeoDg4DSYQGY2hHaLD+m7zbPZywvIYDeLk5i1d2BFmdxQ7pWcqTDSu/uVG+ZmYzwbnphK2BpCU7I/9R5nA3hNqum1CRBiCkyrNsVKhYyFomWoDWpdchaJrifv/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(13018025)(13016025)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:AM4PR05MB1890;BCL:0;PCL:0;RULEID:;SRVR:AM4PR05MB1890; X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1890;4:WbvsclyhjgIaS0DnM9MHHEihSRZqghQ3w0P9civxWyiB5di7seSjKQwDbG0/1463iqAY0AL55MwrckoSX7yq9Dj9ZQIIBJu/tAgDgHguEZ/RBGFW3yP1B+xc5AzlQoJ3Rat8lY5hbEFL27WMM5qxsvGWw8g4EaGYsh+tQk9suNcXLun5PiQ1qWFfOT6FwXrZ+U5YK1nn7zn4WJa5aHO+67WXKrgI2hHpXxtLY9gsNfgxJDNn3zPdhiZiwain5wSBFhOgekd9ypne4Dkds5duHxOu2lK2IdDPmdlV4wkIAIfbuixz8xE0sRKDrkndCUhRLIlMD9awRgo55pNm/OYDRHcWTcn6N94bTneOLf93fXPZEHxOatnbLCjiQfR3GptAOrDBq4eBX2hZ7yrn16ooDNJ06v64xz2GjNE164cAQGC1b9reIdE/pstSqlKYuxq1bh0/qP9zwlzaAIEd3AR5v4MVw4DtlQReqRZil64zrrMXzG1c1mIYVN0AEt5yZxW/ X-Forefront-PRVS: 01128BA907 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM4PR05MB1890;23:i+TVxSMXmEYJxWVsqQTVP2IjtslpaoSqXa9XmzOaQ?= =?us-ascii?Q?6stlv8t7wYgA+bKSOggziurYjWrYUrN7cOxQMuxOc6quR72uWXksVNh1Zbx3?= =?us-ascii?Q?/B9eJijokXs3EuAkVCYgcqEptAfGXkNeXQnhWInpq55zYmj07QsmGttSeCgH?= =?us-ascii?Q?kpBfafqhHHTTBr++Z+FZsORoXGCa2c1ubtAy2Fj8tREShzeZ0Df676IilNDM?= =?us-ascii?Q?FuLD4z5VX0our3kciBtc8qoVjVTgDt3LKbPL95BWaMGp1i26oZt1zCfE0oWa?= =?us-ascii?Q?XP0g4ckLDzegruGlN761LyspWjNZqF6/xXiqN/ANez7ttMZC6KnmClmigS56?= =?us-ascii?Q?HOE1u/x8AlMD8pDjO7K+y6gBfgbgHLJy22+7HN8+sidy4qi2Ylw9lrKKJHrV?= =?us-ascii?Q?nRhKwTxdPBHyfVXba5hIjuMcT7OPRGde6GKReasZfyom9LKpMUp2jgvCxpoO?= =?us-ascii?Q?oxS6r8V1RgGEMc1aAljgP4uSMYpitKHHA+cYSBQKwtZ4UUWRSx1v5rqT14aq?= =?us-ascii?Q?cjsRkxEERGcS4lgMEwzb4u+nHEgQIRjV9tQtevvdNdmO/sVaqgiNmAxWI48g?= =?us-ascii?Q?QO498TKMgt2fRDoTrQiyhqcP0zS1EWWuxuJQZB6HwYhB72PO/wVfpP0Diyo1?= =?us-ascii?Q?MewfnRHTjD3tjGbDDF5ONlFYzTqfUWxYRFQSshJQ4C7sTbxX/3ibQqOShRms?= =?us-ascii?Q?QLhZQlR3w+KnFdThBp11laW+cUmkKmVuwyITjRUJuh1IozBqKPHO6Tj00pvn?= =?us-ascii?Q?Y5X2Jx3ghTwMAUFks617xg8X8hHoHd+9Eif0MwHZlMCVjTz5tYkcKirBzE40?= =?us-ascii?Q?CKjFL85aqSD0/CV1T/vAcEjX1wxFd3C6uc8paADms7Fuu83V815RdyXPEnBT?= =?us-ascii?Q?mVJfZH7c1x0PFxSnXaqSy2cSz/7qxJJTrxGp2ooqSNKKLyRi/H/7mG5PGtwR?= =?us-ascii?Q?d4iJx3TjX8kEsrAua+MAB7Tb0hysgE/u06gLnn8bNhJu7bzqiVyhsVfYvQmO?= =?us-ascii?Q?1LJPs8Uu9Amh2QwjKjkVPuY8iscngf7xJk+kd2UEn7AwmHVKw6oHaCujklIx?= =?us-ascii?Q?3SCTUOIh3RFq0Ffgsx/OTIuBlnkehBHywBCwVk917CChN2NYQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1890;6:VrT4RGgO4vdn/bJN4VFLqcJggg986g8Vo/mCK5h/odYCfyMCwWgyt2KqL9u4SWYq2BU/XOZmgAngkfQV47r9w8zJlM1zl1zK2qgZjdmF7BfGHWv8MAQsg/eJ8o8nTD1NgwfWLMMsxCBQSnBfwriIla0VWaA6NI6HuTNr7tYD1gDfdQIQlZ4a/Y4f/3JISEAryNPgVLpI3tUKYB2XjqqpfVUhcGd42lO7QqZkzqBPvP5kRr9scfAjjK89LCHAxXJNglbpuEZsH2DDXRt1jFwWKRNl7YGgCHO747CdwdSSmE2lDcAX6T9+WhbDmt2W2iSHivIaMy57vo47y6KuzelMzPYLKSSsa+KThEpp33vRHV0=;5:qn0883rfa2Gv5Md7Ln2GJ9u1AWlBf3k/srIQkKLLsXgHqn/3iwokeGYO8Mq63xItoj6yyMqQr4HKAjTpaYUnHA1XP/iX+e+hac3LNopWoAE9EkptGB3vFmMUeFFpjj1eP1k0qtwoYGUG+b4wUPbQLsXcdat9zNCon3bd3ZQvlbc=;24:9zEASaadzUg7I9D9KsFDgk9BsRhtwn3MmzHQ+pHwtnX8rBib8fDtSAEaALy6lKqt28n3OopYcXRUaQgWBfdAwasEWKHcoSuWv3b6Rih02k8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1890;7:Mf1SgRCDpIthikFc1dycs1p/XEAWeqBA/nDwdkBbTAiEe5paq4ykSJZ+Xv367gnFsi0jn26ypXsfg1X+kLzlp5P/nl48FajMwEqrM6px6mHMcotKvsr1vkcndBzAok28asP1+D5Oj1j6Q8MsvzEYEsAeP1lcS59kj4FT/qXa1zepjTzWCBOvjT01o+bnD+8NJk/IHRM58fMdLgJXo/A0jDIKLPZMwUT3z1b5yptw901kx/4Wf6sQGd5yZozVtD2aTDLZ8tWGQLD5J1VDDTsTswL1m5/MQmdMUys5kG8i8I2J+FA8ObPBAKNTNOmEofsZtH9i397EDimv6ywVGugvSVW/Xqhoipu7Et58tH1K+Jo= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2016 07:39:29.4379 (UTC) X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=a652971c-7d2e-4d9b-a6a4-d149256f461b;Ip=[193.47.165.134];Helo=[mtlcas13.mtl.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB1890 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2771 Lines: 100 From: Noam Camus nps_setup_clocksource() should take node as only argument i.e.: replace int __init nps_setup_clocksource(struct device_node *node, struct clk *clk) with int __init nps_setup_clocksource(struct device_node *node) This is also serve as preperation for next patch which adds support for clockevents to nps400. Specifically we add new function nps_get_timer_clk() to serve clocksource and later clockevent registration. Signed-off-by: Noam Camus --- drivers/clocksource/timer-nps.c | 49 ++++++++++++++++++++------------------ 1 files changed, 26 insertions(+), 23 deletions(-) diff --git a/drivers/clocksource/timer-nps.c b/drivers/clocksource/timer-nps.c index 70c149a..6156e54 100644 --- a/drivers/clocksource/timer-nps.c +++ b/drivers/clocksource/timer-nps.c @@ -47,6 +47,28 @@ static void *nps_msu_reg_low_addr[NPS_CLUSTER_NUM] __read_mostly; static unsigned long nps_timer_rate; +static int nps_get_timer_clk(struct device_node *node, + unsigned long *timer_freq, + struct clk *clk) +{ + int ret; + + clk = of_clk_get(node, 0); + if (IS_ERR(clk)) { + pr_err("timer missing clk"); + return PTR_ERR(clk); + } + + ret = clk_prepare_enable(clk); + if (ret) { + pr_err("Couldn't enable parent clk\n"); + return ret; + } + + *timer_freq = clk_get_rate(clk); + + return 0; +} static cycle_t nps_clksrc_read(struct clocksource *clksrc) { @@ -55,23 +77,17 @@ static cycle_t nps_clksrc_read(struct clocksource *clksrc) return (cycle_t)ioread32be(nps_msu_reg_low_addr[cluster]); } -static int __init nps_setup_clocksource(struct device_node *node, - struct clk *clk) +static int __init nps_setup_clocksource(struct device_node *node) { int ret, cluster; + struct clk *clk; for (cluster = 0; cluster < NPS_CLUSTER_NUM; cluster++) nps_msu_reg_low_addr[cluster] = nps_host_reg((cluster << NPS_CLUSTER_OFFSET), NPS_MSU_BLKID, NPS_MSU_TICK_LOW); - ret = clk_prepare_enable(clk); - if (ret) { - pr_err("Couldn't enable parent clock\n"); - return ret; - } - - nps_timer_rate = clk_get_rate(clk); + nps_get_timer_clk(node, &nps_timer_rate, clk); ret = clocksource_mmio_init(nps_msu_reg_low_addr, "EZnps-tick", nps_timer_rate, 301, 32, nps_clksrc_read); @@ -83,18 +99,5 @@ static int __init nps_setup_clocksource(struct device_node *node, return ret; } -static int __init nps_timer_init(struct device_node *node) -{ - struct clk *clk; - - clk = of_clk_get(node, 0); - if (IS_ERR(clk)) { - pr_err("Can't get timer clock.\n"); - return PTR_ERR(clk); - } - - return nps_setup_clocksource(node, clk); -} - CLOCKSOURCE_OF_DECLARE(ezchip_nps400_clksrc, "ezchip,nps400-timer", - nps_timer_init); + nps_setup_clocksource); -- 1.7.1