Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932976AbcKMI7k (ORCPT ); Sun, 13 Nov 2016 03:59:40 -0500 Received: from mail-ve1eur01on0070.outbound.protection.outlook.com ([104.47.1.70]:2208 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932643AbcKMI7h (ORCPT ); Sun, 13 Nov 2016 03:59:37 -0500 X-Greylist: delayed 4799 seconds by postgrey-1.27 at vger.kernel.org; Sun, 13 Nov 2016 03:59:36 EST 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; X-IncomingTopHeaderMarker: OriginalChecksum:;UpperCasedChecksum:;SizeAsReceived:1645;Count:21 From: Noam Camus To: , , CC: , , , Noam Camus Subject: [PATCH v5 2/3] clocksource: update "fn" at CLOCKSOURCE_OF_DECLARE() of nps400 timer Date: Sun, 13 Nov 2016 09:24:31 +0200 Message-ID: <1479021872-14237-3-git-send-email-noamca@mellanox.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1479021872-14237-1-git-send-email-noamca@mellanox.com> References: <1479021872-14237-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.392600-8.000000-31 X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-IncomingHeaderCount: 21 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)(979002)(6009001)(7916002)(2980300002)(438002)(336003)(189002)(199003)(50226002)(7846002)(106466001)(50986999)(76176999)(626004)(305945005)(8676002)(8936002)(81156014)(356003)(47776003)(81166006)(5660300001)(4001430100002)(50466002)(189998001)(48376002)(49486002)(87936001)(92566002)(586003)(107886002)(5001770100001)(2906002)(77096005)(36756003)(4326007)(33646002)(6666003)(5003940100001)(2950100002)(86362001)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:DB6PR0501MB2471;H:mtlcas13.mtl.com;FPR:;SPF:Pass;PTR:mail13.mellanox.com;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;AM1FFO11FD032;1:h+sF3MysaFtmJRTmj+snWvKf/HWAvN9p0WyWLJAv+mv92Xk6vsFR1F+QCSt26eN8A8LwH9W4d27a28SMOEehlvbxCpfNQeZ3ISHfmNGNN78gHqzN8ZBSIF4lJqvi4ojKOBhY15t/Tjo5/UvvDaEAy3+2PfvWXv3W04e2kGq6WzvqW0g6dPsXiXe+zkRHhnb+ZTIysot0anOyjGQHIsezXwJCE7TzG2s2rPs7mOluWSh0Rr4lyH55C5pX4H35lhkWRSTih2R0Pfq6Jmyv97xxe69wATfypCc9pc3o2ggIUSnYPA2qHyCY4mp//ONY2I2uJfnoH0tvTc6Ab+FEh4Y5WDDV07zx25BhKjBDanOGsa+J00bf3oF0KWj+wY81lbuMgBFNCjt6aSW8cwLJoZjNxUFI3f95XToxbxclqcplDmA4iHHkczwdqtdwAZkWElAPT8/jYdLBhARUdLhlavzaHw1rlxqrIopfey4uCx5T9eQFJcz0kSl/e0cdKBAG6UbmHCcDd3gfzptvhi5FNoPvxe7GYJwWCOGy3vTfG1kTgFff4v22BFt+vKOEcYiEFM8WSq7oVC5Fi+0RpUuYrmdKvQ== X-Microsoft-Exchange-Diagnostics: 1;DB6PR0501MB2471;2:gULS71NObdhax5QJrlGmiWpQVnhAddA5WMMT9e4HNeeaxd+pU8mzOnyltglmYcO8mD49QImUACvneN2iWZ4nLAaffCSTX6ezBJacrfU/5eihfzm4hAOyk+b0HkOzj9cbi+BrGpKpiA6QE1D780iU23NInuTwSVMlmswTQbQLoJ4=;3:qgCq5/KKxL5+GNK601A0I+o96t3Yw/0pe6ecJGhhfZBCUhGpk7vTG7/NLLOEvaoFPvdcwZxrXvdx82rrcXcRWoeSAPkxmmsOojoA9+kz0IZ1Mo+a8R08M/MK09dXQZm02hEs1lR1QGJHIor3/alVyNzKyaFhKuf9vTLaYYPUtG8fCaShxMjYBC2pSsLpSng59momw0fYAhNhtejvjgFgqL44OqTzdFbnWj9+cykE6Cd8lO8FaSNQRwb+ZqBFznE30g9VKo7vu1LhxWP869CTzLWXU4+FLEuUxcKTvi3WbNg=;25:t1fGY3v/RuDhLgYi2PKlZxrhaLoFEQz/qpZ+Td8oGLoPZpV47nAm5V1dWyG2PAm/lQ27lSyDLG+DIGCZyGcsbf/ZMVpVzL0cQ3RQp+SicUY7lAMssS8V1rS/hV9liapB5Py0je8pNSCqAAtSFH9UW7QQFuehOHnnDPGIu/uUgUxp4KPi8NNnXjXg4by7Xgva5+Cf+1KPCU0VoJHt84I+pofOPMtovoWyGqr8fOZ2RbY+LjXxzRKBmpq+TKlD/V/nyiyxNEJWHeseJgQlp91LMRuJxNHi6cD1O2lC2FTqLHw9mr9g9buoJ6IV5Ew6oJGInODUZOQITgyvlwIJ5ldUhBkDZ1GcfS3h00yNWiPh637+dWuHVLuqBwoxp7PWbLQMnxsTDOhvbDnAKuSFk+Hr8GLeYJS2/3RljPLKOOGZmICQFu52h8tYJY5m/CmPUB3S X-MS-Office365-Filtering-Correlation-Id: c5e0e105-3b4d-46e1-9506-08d40b96230c X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002);SRVR:DB6PR0501MB2471; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0501MB2471;31:ZkINLajnjX/D57DlFPxvxT7/5o3tBLIOkEaCaGDLRVgdd8CflmsNHYJAj6vSynh+R2qqGEkkjAJ8zqI23JMOP98kwFYVPVbzt2OPSinFAGu2+l84fhpAJIdlKeQE5onsWU/vcJlbwDmofZGcQvDhh0xbSKqPy7zHYbo3bSg5i2ZYnP18MwzP7r0ES2kn8fXnnmXiRfOIgHsygzbgnPKNKTS0FKIy6dzayqcRKkswzyMu7cX7Bt5vwmJY/wmpzaBR5G8Yh3CLluASxYmk6tmroQ==;20:LGDMg/pPCwWnHoXJd8os9RgL9SR+Cj8WdsmXKXPWk5dtPeyH1NyDJjyySHf4TB+qEsviFVDPz1X7JoRKnLtNeBrmkqnDv9XkV9blOCkT27QfpMW1ftxHhtuUdP1B6+kB7Ys6EZgYjSi0aRATaVC7lLMfSCBZ6HTVOwk3LGmo7DS6JKcs8qoNSp4qmLBS09kzJft26xT0UL6/QTaPe3EIThpzp5GnuFlSWyG2KbeNMxc8nSB8o35tMkzEa2whrywIFaUqwVz38wOZFTSaIsDvy13c9sIQSBjbFIxAjW40aGgVzHN5M84zXCcraQyWK6vhFosX3xL3lMXxnwG4WFZrB6da59Kt5JpGcGSuBVsG/inxY4cx54EEZr7xAGTDdfEZWksD34NgrypHdI4XYKEiezx/gXpV8XP3wl4a6iR3i3pDPnZPlX99t45frs891PA1qG0JwutzXgt48ketCUPsoVAEuUPtqeBv8lsCh5Pe8a8Ll84C0GTzg5KRKpPYhe/G 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)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:DB6PR0501MB2471;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0501MB2471; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0501MB2471;4:JDkQjgptlDRIPGOfaEJkFb2DqeGQ0aIqsxeQv5JGyrxMs8gvR1Gthcgc/2NIKG3dxNyULa9hGT3psPFLGgkCMH1fwaOfQxSEL0675MWbOCXaLSIUCLEeYMqbEbd3mvF4ObwPwi4ulWq7//iJG/bStehJXMEVj8Fu2wo2j0PWUUWgIr80dBOHnTNiI+1jv/r/wrYiwp6XBnAlCgkh7m35l8c1u1D5v7uqj6RFffVZ/wSrg3piYZLqC761sx+UwBq1fXEv+zM5veMAeCxDfqImbg/2MIfmHau05T8kcUuEB/87/PdjxWRA8/JvVfU1z49KFvzkvuGZqPBkBlhSLtr8A53DtSRaIHN66ZAxoiP/yD0B+3bc2tW76l7j/rod5HA+iZA6twNodMjh1X5lQxu9/MWsqNppjCGokceUhxqGn5UGWqfeZWF+5iftU6CtqdXK632uD5NIvxiujY7PuN4C4PGXctFa37WIgmCuJk67uw19pm4Nyu93gRl9kpNWBFem X-Forefront-PRVS: 012570D5A0 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0501MB2471;23:YKAiuSMkZq3QKnt51h1D3BZj98HisDn/JJi0tGh?= =?us-ascii?Q?twSn2tDlGBf/l14yU9XZISyP7ywU8Ixi0X3axIQEefcaUOKwYmqXpyfhwMMo?= =?us-ascii?Q?lVamDsyQ3tZcQrLA/tW0qC7byQNYr69+DGgnBlvB/uRpiBOOImiFFugldnQn?= =?us-ascii?Q?ExhroKubA3fhO6EtLC2UkJ+/djpBwDHTd/pGN4VGzE8aqB82Jx8fWypfGN/7?= =?us-ascii?Q?ultHM/GWKy5MWwgM1+ShqZ3lgRAKqHA72ejr7hvhJUoV2ylnRj21XasFTHKm?= =?us-ascii?Q?xiJBppa95d7AVWBuQZA73dTsULBrygUkrXt1VaFe9dH2LS5P7imWHC0StC1U?= =?us-ascii?Q?LwOBoWuCwjHqq/kWDZL2COYtXciX9EzVFkCwpBUbfYqOJrGHky9AeidifrFX?= =?us-ascii?Q?9YX7bwmGaFSQAT/JRYZhV0stUXSmyLT6IjZFnelHNfzSf5hJkPKSjHvBQq1d?= =?us-ascii?Q?TG+a5cMsEw6YX7awG1YYfXL0inCLK4WSnKiRGt/0U4YLz6JybmSmobWOiO+0?= =?us-ascii?Q?ulFKmV7V6J0PLIVa/V5a9FZiPc3h4kHAuZ6IPcv9/8PbeIGazq8Z2bANPMsc?= =?us-ascii?Q?iLp4MSvDtYL2yKOYVc/R1QLq1QZia1szm1/yRLz/bYXSa4qpfgf7d4oowSBt?= =?us-ascii?Q?krmLnBljER3oI1B5Lra8nRqmqKx7MjyfYyxYLUiBM7wRGQ/AVprcDNl69+Pv?= =?us-ascii?Q?grQ7dq/bYuUtOuD5jNW+6+ZhbAMgJH8fAjRBwpEHxGfNfxeHRzmJ2/W1MXcJ?= =?us-ascii?Q?uTrIZNOzG+5gC+bf7q0q1tcnIS8K91Kt3YWrAnHrraaoELS0KBpjzbJDO5w6?= =?us-ascii?Q?oXIegTYDxvr+akNM3Mx85HQkq/UtyzZVs6Jwx/rSU29UFkC9Q7iEhQ38sjCH?= =?us-ascii?Q?XsVqVSpv2qGinmAX4gy/IdY9ECu9HpBNUR+30Ex4NixHf3tX3eJocOfbdGmv?= =?us-ascii?Q?TCpupmRjIUjViENYU11XffnrH+unfJowTBs542mZMmpBf3m5OVGaAchtMxS5?= =?us-ascii?Q?P9z/IE/iZ0YGShJV9vY3a8RmZaX41v/AOf8KI8g4/B8Rxd+kOC9eMC3LqD33?= =?us-ascii?Q?Sb7QJHBKkIzJ+S6wDXqQWpe59HMNT0szQ08qA1tW1l8UCHp2Te0WJsPvUSRE?= =?us-ascii?Q?wak7PPIrx2BY=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0501MB2471;6:GuaDkBPkNH2Xge5wQ46QRB03dw7LqiTg81iRReqQFrMEs7Z77qC4BkZdZZva3IkAIZEmL7OQXs+JZh3CrWOsYiehjJLs2Kijo3Ty7H/n+1BID08KfW0uZc+GAMJ/2hptGlXMx60xgqVPXE5KhXV5/TRVinenw4LVLgb1XgO0xevOU3K6N+dHFQBa2K+MrAghnHT4FML/QSNGop2ZONgo5/ZuvK0J7wcSHNhk7cpKzkc1y0rsjQo2g/ciRZFyiZHDQbAyyVa8hrl9jZvzy0qpBV29grIyRHtwaHzWUpCHSgkhJTIix4LSG1ADGFXRAbLyIrDPsx2ihX9EClrCzzl5cGcdzycrFBSu4E1rX0AZsVc=;5:3OK1mYl1qO1Uu/Ku7YWvivXT0ABF2sj+PIjt8ChBL3o6GUkSBGyOT+NYmh5ed4PQNrkhXQ6CRTW6/+B8GwsGYlyZvVp9gXZzv4WjknVdUVDtusU5gEZw1fPbFkCG7BqATuu+s8jYH2vXvTh2YeB+sQ==;24:GT3bwXRnA/2o1TVFuyhD0UD4qnFtkikLPQzyob5vlAyy+cXmtw4X3kEtj+NFGZVec3mPthxzAzjHrJCSpY24XGPXfFsim0v63UhyqDSPgV8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0501MB2471;7:SXVmC4pG5HDFKIHjwTQDTiimc5p4iFjNsqBBM9OZkRPUGkcYO65IG261t5ZInLnygpxfB9IefxFb7LzqKDZ4KO3LsmSU/h8RM/+AdbMBB6QUbx6PFO47bTYRpBbtjqovPqwuZdhqw28gTIl4I32WCd5vgpoZK6S8AdCmoQvYaAuutG6gPqEq0y6tWjCTtKOlwklhqqc5VMLRQXofKRfLgwy624hc3rYwQcpmlcgCvpxfj9qq+KwnDX7WlViNynhYhRyFTQ4YL9d3T+YoB9+Ct/jKBqPBrXAbyEB2lLZSiFnQhEZnRXHYTO+1TO6Kr9SMMElR+27B4mpk6rprIsDjFFXYo/32vjO/FyJj8Tq4o6Y= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Nov 2016 07:24:42.5393 (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: DB6PR0501MB2471 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3280 Lines: 115 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 | 63 +++++++++++++++++++++++---------------- 1 files changed, 37 insertions(+), 26 deletions(-) diff --git a/drivers/clocksource/timer-nps.c b/drivers/clocksource/timer-nps.c index 70c149a..eeef9e9 100644 --- a/drivers/clocksource/timer-nps.c +++ b/drivers/clocksource/timer-nps.c @@ -46,7 +46,33 @@ /* This array is per cluster of CPUs (Each NPS400 cluster got 256 CPUs) */ static void *nps_msu_reg_low_addr[NPS_CLUSTER_NUM] __read_mostly; -static unsigned long nps_timer_rate; +static int __init 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); + if (!(*timer_freq)) { + pr_err("Couldn't get clk rate\n"); + clk_disable_unprepare(*clk); + return 1; + } + + return 0; +} static cycle_t nps_clksrc_read(struct clocksource *clksrc) { @@ -55,26 +81,24 @@ 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; + unsigned long nps_timer1_freq; + 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); + NPS_MSU_BLKID, NPS_MSU_TICK_LOW); - ret = clk_prepare_enable(clk); - if (ret) { - pr_err("Couldn't enable parent clock\n"); + ret = nps_get_timer_clk(node, &nps_timer1_freq, &clk); + if (ret) return ret; - } - nps_timer_rate = clk_get_rate(clk); - - ret = clocksource_mmio_init(nps_msu_reg_low_addr, "EZnps-tick", - nps_timer_rate, 301, 32, nps_clksrc_read); + ret = clocksource_mmio_init(nps_msu_reg_low_addr, "nps-tick", + nps_timer1_freq, 300, 32, nps_clksrc_read); if (ret) { pr_err("Couldn't register clock source.\n"); clk_disable_unprepare(clk); @@ -83,18 +107,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