From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932615AbcKPGcb (ORCPT ); Wed, 16 Nov 2016 01:32:31 -0500 Received: from mail-eopbgr50089.outbound.protection.outlook.com ([40.107.5.89]:63264 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752821AbcKPGcZ (ORCPT ); Wed, 16 Nov 2016 01:32:25 -0500 X-Greylist: delayed 44808 seconds by postgrey-1.27 at vger.kernel.org; Wed, 16 Nov 2016 01:32:24 EST Authentication-Results: spf=pass (sender IP is 193.47.165.134) smtp.mailfrom=mellanox.com; lists.infradead.org; dkim=none (message not signed) header.d=none;lists.infradead.org; dmarc=pass action=none header.from=mellanox.com; X-IncomingTopHeaderMarker: OriginalChecksum:;UpperCasedChecksum:;SizeAsReceived:1755;Count:21 From: Noam Camus To: , , CC: , , , , , , Noam Camus Subject: [RESEND PATCH v7 2/3] clocksource: update "fn" at CLOCKSOURCE_OF_DECLARE() of nps400 timer Date: Wed, 16 Nov 2016 08:31:12 +0200 Message-ID: <1479277873-18994-3-git-send-email-noamca@mellanox.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1479277873-18994-1-git-send-email-noamca@mellanox.com> References: <1479277873-18994-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--4.788900-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)(6009001)(7916002)(2980300002)(438002)(199003)(189002)(86362001)(36756003)(33646002)(47776003)(189998001)(106466001)(107886002)(5001770100001)(356003)(4001430100002)(2950100002)(8676002)(6666003)(81156014)(8936002)(81166006)(2906002)(4326007)(50226002)(7846002)(305945005)(5003940100001)(50466002)(48376002)(626004)(5660300001)(77096005)(92566002)(87936001)(50986999)(76176999)(49486002)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR05MB1900;H:mtlcas13.mtl.com;FPR:;SPF:Pass;PTR:mail13.mellanox.com;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD019;1:QwOhRog9xUWIqZFjd0Zmn0axlK4pauwG4xPW6yPWOJ3u+ICEyAv3Y0qfqKqYtXhjQBlLS0YXXu4QXMpPHo9M5IzKOkTBBS0OpO1D4ROM0AEdNP8bvM7Gh3GzG8X4juA4IlYrsRq6ivBIRqXv8TIALUYEw9EiOs5bQ3nFi39OsR7+Ltb8ttzNFEkCja3DoZtF1ffC+dGxE6neUdhj1/796kKtbRT7A9v5SLU0SBKgweMPPIyw1IU3D8bgZKXcx3YZjovl15JZAGq0DahRkVP0JS2ojotXBAT6FD9DG9cEfPYZ9BihHqr4m54AlZ2nTXmqJ33MvloEOPKJBUQrIb5HhZAn/6I4LrPkj893Rsz7DPtYiQvq59V/7PBfhAgieouAmrpxq+85FtzD98mMA4MISJFMQH8i2MHyZbns4hLC+vIvMP0zP9b1hOvSVf7s1H+9aN/AaVkojWDArKc6LFiFYyZELii+LLrftfcR7czxgNWm0eTgIzO9w77Lp7VgmelI+ZpP91cxyjnBuOWv5mn0XtluzD0UkK0Ukl4sSAUmAojoSYN+M5N81hL8/vWf3ig9hbpJx7XBGVtb8SgMry+SQw== X-Microsoft-Exchange-Diagnostics: 1;HE1PR05MB1900;2:R1cPek38WcRB3sCG3iEZvK8sj+GdJddMV4fdOhAvyorawhI5bn524g/EHV/zaSw9FhuPBqvkpMS+9e+ofQljDp8XdH0TIkgeM3pAOwIfczihl1cZV5xHGk8E0bwVnfW5Emn6s6Lxi7gaMKerJRUoVP6ijfiyV3aCb3a+v327tbY=;3:f2TQRGkfdyv6alk/ATEX9nY13yiRRo2ZVQF4Nn9WaspwstO/PDFFSuSa3U/VdbDkwp0vVyclP1KKayaamZwUSChwsBV4nLV5hmvod3H6mJKVz3EGaUYHJ6Ca2eED5EOHuLN+7Zt9Pr5Xt/fx4iqUkevXLKcFIfXjtulCb7QazrXHq4lXVg92LcBgIgNBXK3sjMGqdN1qtAV2DMAm/x5lg/f4xMPb0ta4ISrUk9eAGo63jXQuPndIAY5Nh/nmI/lb2E6+8jYGkHxD94AXvdp5/RO3n4z0pWQZkgZdvB/C9Hg= X-MS-Office365-Filtering-Correlation-Id: 1679de37-7030-447a-1bc4-08d40dea5227 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002);SRVR:HE1PR05MB1900; X-Microsoft-Exchange-Diagnostics: 1;HE1PR05MB1900;25:mgHE2itJ+ZODy9Ee8Tgl9D3uqxw2gmYTWkbpkU+5V/9HFsd+axOsQi1eyoTQ898f4u8VG8T+amTnd39GXJJOIiWXWj5+KiJGwMhEUru2OjNnZ0SVLfkd7ZVS3LiDye7W97Zzw7f/eoWV12uPtvtKPO3ZYxVSvRMTHaZUWx6BSx0uR2ccrCg8i2h55Dl3vb8XLNH+MDAdy3wBwUO5ohAFF9qg+sJZvCCI0siIuHK8U1cXfuOefduhGLyNC+lAMbmiL25uFRBfVq78YNrIzT9b0gIzsv2OyC2xejwAouQlrZ/3NCkRqPzj7zgglwGVfGHzBbliDXIE8eOVF7ZiL6JtBAV0PElx/SzXD8I1l+jzLHyLGpivZCvnIdm7UHXMF95So2RiUsWoPlRg/fFH2/fo6u8YJ5vfDJCPDy0/Qr5sJQKknHvkmaxp8ZvT2XWBEKwjZjAZcoJ8SPY8N0Qsm0XDFw==;31:MZPDYKmFmRU/h7EyvOtDPI/WWJewORRe/LqB/Kdc5YQMjhHeObwLBlr5iLBd8IFSUMQ2wBuUGqOC1qVWkAsqEFaSgHf8cLijHVWBBkCb/kazwGR+bS6azVaB2r5X+lD3B4d+YF9pdmztBkwkiWwFXGA6rtNlhZqm6oV8W5BwMawrX00jjIts9NRMiykCoQhwQ3Rsg0nyBd5+scEpLQfTvsJHbQoyPTIxdkuNTC3GG/QePtT+eP6NiOqD2txtxWLMsVX0bBy8NATak3j/9JoKekA2u/emMptL/IbbjE/G0Pc= X-Microsoft-Exchange-Diagnostics: 1;HE1PR05MB1900;20:x4nJwZQvI0Y6MurzWiN3zhkdAxmhwShSTc1N+XyLmQi2aCEGp5xAQ+rus+UPkGFLy/eO9OHUB1JP3fX9ARlLKa+MzHRcgqdujiV2Wc5qSMLYXVFHKhi0DqRVxbDP2/RSBWRKGjnkTgsWSOSiE/lWTOd874sZXKkiCQHGI1RUXEdJm8BoAFyyLV3pLQWknpn2cYWfTJgga/xZdWqcR8EIkaiqRQWoMDA+Awq2+MGp0UEkbpSBjIZ77Fex6rfuvKbT1j6EoRm/KkrtQ6EpBxafOpmZ7P0uxpD7OR9yJaAT7Vf0AZMEGyaFdtXMDdODah9L23lhAbOKhXQBFdYdmvxMRWAfjj7jRVnny0dQJpsF0kJrxOlD35/KVrnodZm2sjJm000oOolvbzug1oY8/Xn1bJNuNRa5kW1bGxmtfJU/RrEdMqYWCVqV+ZLzbh2HnCi5s/znQ63lclHMKLcap2d3PTrvGBd1EoxJ0PI0BbX1KjnKjZF9knblp9DW3mDYhmyW X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6060326)(601004)(2401047)(13016025)(8121501046)(13018025)(5005006)(3002001)(10201501046)(6055026)(6061324);SRVR:HE1PR05MB1900;BCL:0;PCL:0;RULEID:;SRVR:HE1PR05MB1900; X-Microsoft-Exchange-Diagnostics: 1;HE1PR05MB1900;4:V1jwrQu5Mw9MUGly8P9mjDAK2IHoxSwumJ0iJAj1br6c5N6o4W1tYUMvrzCRe5cOWNEWIHAuU90X9/3MavZbyX/qYUUIoQkfXL3d7OBV7ziSEa/R3HAq2vrf6b2bmrxrbo7D+V+sdCtn2vnXUS0CRWojLe4yYB16fX4neehGiHxF6Kb6t0bV+BxzOaRnXf7Aug8CSDiLGdEWWZSdBkoYyHTv058esQ1mg2nmFxVX0QFwYJKC+5tP22dwj2ZmMlrx9ieV3UE7aKhgsqvan27qBnazjtNWG4Zsh+EVJhviBXxIiSQ8RgqFRFwwIooPvkK9meeb+fKuY0LQrNzd0wAIpodTLT6XUENMlum4Lw5McZxE/IrDlIjS+2mxSEDOb/oXjYIJU1+49CTjqBRKKz0dCF8Nc7BF2y0th3yUERGbxW0lPUctmZHeDAeAQQLeW7q7SV8joq9Ilm+RMwdkaPGi+/ZjrVNvtNtdsddDk+b3ZkdD3GNwQfJxhaJ0gLR3cGBMSHRdv9sZYKBMvm94WlpZXA== X-Forefront-PRVS: 01283822F8 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR05MB1900;23:8xCzlA+8LAyjwEXyhRJRX7tCWXdUMEJOOHc4LcHgi?= =?us-ascii?Q?jUr//vrSGMWat7g6qAFBw2SlfD8XwxHqf8F0gc+iP7QvSFCtPjr30ixIfzgw?= =?us-ascii?Q?8cCHwKusdHKoJJe35qWIQaYq2jo6+3g0b/0+dskFB6fWyL+5oST26TfUfO1C?= =?us-ascii?Q?oqF9/T3tWJES5c6dNQ1GGo0mpWHghbSUrfNQ16rP4rSDVhmQglKYn3DE1cqw?= =?us-ascii?Q?RuWDx+tOVSVN0L2oV3Lr/I0O3euPbQZ9JZCF9iu+NCVd2TsxJG6qDjhiMjsz?= =?us-ascii?Q?It+uBKyPsvjbJXwFy5MlCX+IZVdf8Ta1ajljnMghbdM4+7rJ9EWrMYE4sgeV?= =?us-ascii?Q?CxmNu2Yz+fYwPpQsX4Xhnsl0VuF6AsS1VsjqESQemIOTNs8SrAFE/o1hXF9p?= =?us-ascii?Q?bqd/iYOVOQJcFON6ccZEXiKeHAJvJY9NR/4UlwfyxMPk7n/KfyuIqcG+hBa3?= =?us-ascii?Q?NhxhnSVUWbPfMo+oSOLtIkqXpiVLtfxkFCk8NQg7hiLa/NDWZp0Cgm9STKLZ?= =?us-ascii?Q?bzgiXAWBrTDRAbachZUtk02Oamfjtr+UNf9qNLX8yDwSfyySkbfWpiAenYL2?= =?us-ascii?Q?AKV6hKi3qV75mnxDquobDGIQUJeV+VqKzBM0MHIBqohAHZS8fckm7UJ8gJ5i?= =?us-ascii?Q?XqVg9r88AeELFjZQ/SB+6cD58xoP64ZKqh2+7CYrg8UpfFl8I8eUJbRbr4Ws?= =?us-ascii?Q?WJZr2pDky8OMr+tZZszhz8wAO5UixN52P87jgX/0CsnkycTF7DC2qKAtRRa+?= =?us-ascii?Q?LcLOSCkAEIWq+HYtikyVAX2Bdr1HaO/zdhPs8tUzxtgtUWMbzyzFp89uzDw6?= =?us-ascii?Q?dTtXB3EyLJr5nQbIa7GrC0Gzni3Yd92y9pFWfkqzDhuN0p1/6I3sp/HJ1wcf?= =?us-ascii?Q?wqEpI/RUD4qKBAem8S52xIhfM5/Axf53/rvtdfSqwXotuBkJFmX1PLI3klQr?= =?us-ascii?Q?2owCjACP7emvMh685k/PyZCF8jemejNpn44UbLf9Pr255XScGyDZB20nGsPb?= =?us-ascii?Q?mAbm0v79jLUf8lxyY249xDu?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR05MB1900;6:/pLVbbV7MOk8V6S4oODDkJYA4b5fKgjR7OAsMLUv1PplzXYnWds+J6qTU2wqV95F/6XbJubh3UbeuhTfOlRcH6yrcwe/Stnl+TKxxo2sKn7RWr0hURsYssYFIN4lPj44mqSWPOGPFmF4s3vjfvQL9juyRNpsyiKszNL3ZanikpTl0nxchNaoU6oOWi7DO1AaiSLp4/q2MJB1qndI567PkW9ZSS1NTD+6AKlE6b7Mmh3ICgez/NG9iQU6eWrTiNMyEhQQlBOwVkW4vNTDW5VFCTAT3I71EZGXMGuq/PGnRAX01eYLKBPN8Ax4x0smRZHcbml0lHRx5wyzQ0JzufLMAAEy0xhZkZqO5QmWaXeA2WikOORRJM43Y9z9xQlmk8Rl;5:zbTxzPBw6pp6e592BTAawCe+NTs2NOSik2VVHrOjYYbuV2GUBI0kB93j4HdnnsQbSi9akX3xefGK3Ep7wHmH+1rp3AZTsbtjSjfJrsee9USHRqqCkQx3WMOVELhJT2uEzolWOOHASYaBRCCNImhIyw==;24:RBpTmjkINzNsVBtC72DZxleAVCS7tbAZn3KPfo+DOxLxq/CwmCUEZr0h+6YAbVO5vFi2tlstGmr4OS9ViAlS9zTjD1l2WKUWlxIf+gPtVZs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR05MB1900;7:5lKggRZeKTmTbM3S9qxCnstqcuzAR9o0EBObvsF77glq/jyem3KrG5MIlVM+fsCT4uGOdS+hvdnx6Od2FvuGbjOL5ccDXfqdUTN5fvzWMhRtbVCd4yDu0YK48thbYK9PLohqGt006DtvtowXGq5QEms3ZozCV6pK/5p5OwD48j3ZumHS1EOnDirIsWq8/C7UZpVQstKKbkq2yYt8eLAQ+8OnJ+7ZcnySE92sz+BlbXBmGfFVKcz5W+hvbauDkZLsqzjsfRiUxhMgQqMvgW5GMkRvSMCtsVc8/H8xmDD/dqc8hOcKt0kVVcLUbeU5wRdNF5c8p5FjWDsGf6PCwpTrMHMSAMz9jlSl9wLVMPBuGdM= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Nov 2016 06:32:20.8525 (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: HE1PR05MB1900 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Noam Camus nps_setup_clocksource() should take node as only argument as defined by typedef int (*of_init_fn_1_ret)(struct device_node *) Therefore need to replace: int __init nps_setup_clocksource(struct device_node *node, struct clk *clk) with int __init nps_setup_clocksource(struct device_node *node) This patch also serve as preparation for next patch which add 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 Acked-by: Daniel Lezcano --- drivers/clocksource/timer-nps.c | 65 +++++++++++++++++++++++--------------- 1 files changed, 39 insertions(+), 26 deletions(-) diff --git a/drivers/clocksource/timer-nps.c b/drivers/clocksource/timer-nps.c index 70c149a..0c8e21f 100644 --- a/drivers/clocksource/timer-nps.c +++ b/drivers/clocksource/timer-nps.c @@ -46,7 +46,35 @@ /* 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"); + clk_put(*clk); + return ret; + } + + *timer_freq = clk_get_rate(*clk); + if (!(*timer_freq)) { + pr_err("Couldn't get clk rate\n"); + clk_disable_unprepare(*clk); + clk_put(*clk); + return -EINVAL; + } + + return 0; +} static cycle_t nps_clksrc_read(struct clocksource *clksrc) { @@ -55,26 +83,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 +109,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