Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751346AbcKGAUW (ORCPT ); Sun, 6 Nov 2016 19:20:22 -0500 Received: from mail-he1eur01on0046.outbound.protection.outlook.com ([104.47.0.46]:64240 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751130AbcKGAUU (ORCPT ); Sun, 6 Nov 2016 19:20:20 -0500 X-Greylist: delayed 10855 seconds by postgrey-1.27 at vger.kernel.org; Sun, 06 Nov 2016 19:20:19 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:1634;Count:21 From: Noam Camus To: , , CC: , , , Noam Camus Subject: [PATCH v4 2/3] clocksource: update "fn" at CLOCKSOURCE_OF_DECLARE() of nps400 timer Date: Sun, 6 Nov 2016 19:44:57 +0200 Message-ID: <1478454298-381-3-git-send-email-noamca@mellanox.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1478454298-381-1-git-send-email-noamca@mellanox.com> References: <1478454298-381-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)(6009001)(7916002)(2980300002)(438002)(189002)(199003)(11100500001)(86362001)(33646002)(36756003)(586003)(48376002)(4001430100002)(2950100002)(6666003)(8936002)(50226002)(5660300001)(229853001)(87936001)(49486002)(626004)(2906002)(106466001)(4326007)(92566002)(77096005)(47776003)(5001770100001)(5003940100001)(189998001)(8676002)(81156014)(81166006)(356003)(50466002)(19580405001)(19580395003)(50986999)(7846002)(305945005)(76176999)(107886002);DIR:OUT;SFP:1101;SCL:1;SRVR:AM2PR05MB1220;H:mtlcas13.mtl.com;FPR:;SPF:Pass;PTR:mail13.mellanox.com;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD046;1:lcad1vGprT7bLE1hW7aPPFS+QNc9fW8zasPHFBU/uDXOQAoth/epRGxMYEjCZlaREeNpBP7QButSvz2Cn4sUcBx8WAPZrcEWNRFgO4PK2uCkwW2tsWzbo+dux5EjqOLZM4vkHYx4zOBEtmFrIQu1X6DYhf4E8s/shZXpW9xG2l5/iab8Ffsdjd2gQLa6cMbprYWBfUrVVo1jvbU/ANQ6aFsfl1sxk6LZaCnaCRFjWL83aBBx+Fy336PTFWYSc1hil4lgzz4a/gfgQ33nBFrKCRif3znTtWNqqidYGmTyLwWFfp90HnyUopEUzsQ2zNzEeSfO/TzlWwyK+9e4ITZIJLwehEuJ/5S1UG+IO/gdMkwIdeRZSlfzd6PRAslab8AS0BCQOfbLkM94qfYNeLzAFNkk3yLKGJ1COblp5JYIssjk2AUtQuPJ9i9+j8H/4pioXKoVUENUIlE65Re2faknL/36Jb7kFJsoRABLO0BZUllIOYd4y/XzwY9Df3M8wF0gh2RS0cIxQEAg0DaY1jvWBrF8qKfwm6FxXPNuMkonGGbtkwRh5cCtJKDWV02QPk6b1suP6oBxvKxu9j0FSciniO6zsHkXoPP4dZ5GgFQlO14= X-MS-Office365-Filtering-Correlation-Id: c8089e12-5ce1-4330-0ed8-08d4066ccca4 X-Microsoft-Exchange-Diagnostics: 1;AM2PR05MB1220;2:0UoKJ10Cj4gbeg8ZdThej1epqeQMPRZ8zwT7j3VFbVmePcmmrVzI5Fb9yEsmbMe3pX5VDs25jXiJWUQv3mmBHOm465lLBVSsnPu9DMnpWxSXnDKeAGL4/zy+fpdmteb1kuEZbDwS7i328IXuk4o7YmC1CED36pdXGeKrrxcGH9Ff5+BnAiRpiexet2LAYMVdaik2GufOlkZnM5NTO+AP3g==;3:nfNt59GMr+oPUqw0H9OiH6mE9Jfl14tynJgL9bL/pHipgoIhz/S+XmMb4tIafw9ftpUxikfio+oSBNJ76DHaSfZYeg4Gd8M7q42tCxE/PyPF+xGGhbIovC1ZB5rFK+TjOZVTdhvpqi3hA5RZIogp+k/gIpWlOBfhL5r/w4DeXGFYFLRMeXb5+LtUsdctilBuJDKpWvsvGqsGQYCwgIqBEHF3e/o/SVbr2cqga/kzd+USDZTS+KNWAhUxczkp0jNV03D9O1J6QaiN/EhQ60Jg8CtmjY+jrResgLXMTsZMFdA= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:AM2PR05MB1220; X-Microsoft-Exchange-Diagnostics: 1;AM2PR05MB1220;25:EWWCEN0D4jES1UA4+Nsq6X/PL5hH/ROOj245HMFO6QzjiIJ/T0NiXNhXqnIi9fpU9pJdi2MhcbyiPDIKllqKfxYN0o1OXnvLdngBslpP6SWilxIWV9Rab+X5yvMIfeJOkjVkVq98s/YxhLF+DcBGHoKm9C7FkWy6FjYtKcerTjfJtSKypPbUIgOrFwgzgl5glFcGMrpyt+xoYqk3n+TBqbXClcEdC7aVf3Zk2yu5hS1LvBONeh68YSZTUT48RkGOu6QqD3QA5qCS7vtXBeI77NCgAEeYuUwrBWSymoUKIH8aK/DrRHhCSzqe5h8md4sn12bSDx0VTf/1ZtzgcK7Nspcmyb9qyo9/7IGuHz87HqcVwDTINFFH1BlYpbhTOr388/upux2vcXkqF4nDU8kFHI/5oYPHuEZNU4DDHM62Vu23xOTfXei1YLg4HJG9/H3K;31:soQSFlcvLUkUlp3FYNqgY+l8lta6Y3VRbZu6r3AW/OC7+0RaHuobw+ByRD9X4n7QlWx8RyF/znBwlqqlKTIIc3MXVPHaEYVTr5GeuN2XcFG7dMFA6WJfaiRDiGWdMtTmi97nKOs5gSoGrx3e7BeJHsCwthLdQfPOfvFn43sWfQaxlduxQ9AQN+6bkFg125hZET3v6K32MdxcMB8ba6mAfpf2/AZV01PpF5AIaJGheiiVAqMCL82PxiUdHTzOPxxS X-Microsoft-Exchange-Diagnostics: 1;AM2PR05MB1220;20:UQCD+TMv1LEIcEr4oB9jneJtCJXdA1FNBYt6kzhYqEm4iHm4jBropGUgvpuYPn5DrHtTQ9wvlayUfV3GdWoW4JIATxB0NlpmNl8FoVX60BtsKpUs+bt0JgDAlMHgKS5bAka1jE9IG9a2QzQwiRph3OnoCgqhoEL76E+W/fcOTP0rk4NZuci52r4RkHDePscQJX8gdpa+jAthrUI/+q1k39JBMsxZbwktnB2QZgQ11g/Sce2n9XSmswYSWg0R+TQbuy20Tns6pU8gmXvu3jtwFsXtTYl4qoy4wDqv7kFhKQ2Ccc383fAd0D56HYqm6cyP5QYaFWTSBCchw7XmOsuyeBDheHwg+TVC21feu4GHeWw+sXySS8r3qHe+OUwxUX+A5SK8tngDEuOYgxi5M/LRV+EHtFHliK27uGhdI/Ef8w5n7UzfQ7G4oCVVF8mbrOKoCZCm44SnXbb48d3nYeU+MB85FyLBTWT7yKT3mI6Pib3Ta2tripTiJAkooVHWb9Lq 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:AM2PR05MB1220;BCL:0;PCL:0;RULEID:;SRVR:AM2PR05MB1220; X-Microsoft-Exchange-Diagnostics: 1;AM2PR05MB1220;4:EKkCKhryamu5ICV/+Bxn9LvINFo4ldL6d8cA8sdWjHJnMHbcXJTVc7Mjd6nm6nQef266uFeFVcGf+Az0Ulhlf7/bFYOO0aKYDTjVxo3bbL4lZJxpc81g7WzEKJE+r8CUM3qBm/sAwKcWe4CYboPn9dCUaCea1aLkT2LBBHd5JkuorLCLcokGDXEh/bPVlymw7JsU5WNAudt3S9jLeiVjDcIBeZkIz+9XcrQU28YG76r5Pm5BnII7BaGV630VQ6FUEhRKfjKvBmY5Ml0BzlH2IfXmePiyyi8OE8CcT+TUCGfCpREhFgLNPFt3n993XQM2+rtWZyhysyz6kbABrqR/dFbmTaMNV8xZyC8NBD/B51DYtloexm/Im4XTpnyMk68NoitDBWurGcHGX22PD6EB0470PxU4MqdBf2xCtOu7kcG6NVGcz1CYPXz2afAbnPgaNAQFii+i+bcbKlsE+juTDgkQ1r9ZpQrLUryHZJ8YVRW/Ye/FEGxUMM/mR3uOq6Zf X-Forefront-PRVS: 0118CD8765 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM2PR05MB1220;23:6xkOz1tAwXlMbftQoJB5xuckZ4YMQfoJCLFUQK4Mi?= =?us-ascii?Q?V75dKgKeNLpeTS9rdkzygJoM23pDKxBwzd1FQ52hZnbQ63aDcLMVOanjzCq8?= =?us-ascii?Q?+pLgzBLW//88CAJ1l5o3emXkVOSaNg79Ca+nMqaKCEQqiMVGCDQrdKutd7/u?= =?us-ascii?Q?4JyKhERl1Gli3DU+gpbHyl/uTGIYti2BIo2CiS9loUWktgxYqm1M/J0nn65W?= =?us-ascii?Q?GdUXlOtblmnSvXwBGNWx+gXyD0C2XMPGytmxOke/Gjj1rc6AcphRXnJX7ACa?= =?us-ascii?Q?7oMKMcmjEQjWW3b3kysbq8bDnK0VIEITukZnZtgfY9MvohP1r0VXW310APDN?= =?us-ascii?Q?VJtxo40PeA3ylNgNc5M3Rnj5fUUPLm2K+UKDQ1t0P0/7bKRscdPhBW6SWW0k?= =?us-ascii?Q?sJBJqWkdPSFJ1bhVX4fy59uNvD3VlO3ddpJ5uT6p/3HdkcyzVM2z6tSS+bAY?= =?us-ascii?Q?X6bLz6rW9XV1ecvX8ExFrn/Tun/IYamFrq8WAQx5nqlAh/F3MV2T+ak9Vel8?= =?us-ascii?Q?aI5sO4vTq7IzoURE7TzyIjMQDiejsBr3Hc4e2E5mo85gon77hTNXOBVyaYlo?= =?us-ascii?Q?CcI2Hdu7VnFAITXx1lm/78+RuGdsDZG1iQq+XL+uRrP7zxEAbr+qRNDf3Mn/?= =?us-ascii?Q?GjvXqiYdTf2HhzW/DlG+duGMWHNl7sdn31wZ02nkHC1R2v0sF2e+wPYnLNHv?= =?us-ascii?Q?LgyZ/SW33T88t1HaYwNfoFiHmxftfmXFs9Ofq0f1w80NWHi56CZ7k0qhA6ut?= =?us-ascii?Q?nRrEWTDlqXcqK6Zw7MncPfOlAoLlAM5yqu21LFfcgm1drHXwDxNWuTVv+as1?= =?us-ascii?Q?2L6e+P4XJX+Vzkskm/WUWGI3+YYW2fCu7crBz2ayLxol8A7nr1dPuXNulJ2d?= =?us-ascii?Q?2eRcDtvI/0FnNLQYR91p5Mwf/kCvEtZ6zgImRQ2VJ2DZxid47wmS0n8VWYIs?= =?us-ascii?Q?puUY6HbdbB1zLna6tCS5zISk/NOIHg4EenKd8Dph6BGu1j8HiIlz1rJki1HA?= =?us-ascii?Q?mzhplEiJ9lTQiydnXFZDu2x5FsQP4JGSYG2dewCzQGyJK7t56lY9KlvVUjgv?= =?us-ascii?Q?kbIwBxzdYy3w3xQ3tQyev8rj7VmGhfx6o6sjbk3aF2kBjGNFg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM2PR05MB1220;6:gB5Ndv0/2YEXU7HmZyfz0Jn6Lqufjf0gAX9aLLMD44f/A7PGH3Wmci6DWzQdb4hzNWEMlrvEtsR1gEjgHl4VE26vyuSPSBfOpdLmjZ3BqF4YljNkWx9fM3mNJ0kFAwPwjC5z9/fz+hNwsRUtiUoNCHYU5JKyovpZp0wBgtg+ZwKz1FRDCwTbBgeVyG9nxPL1+UTFk9htjAgB3EUMEZ0Ca8ahyGWNqo2ZDTRgl8nvFxKjxsRd7MZQHd2eAUmjsEwA1g5he/cdOnpdcsXUK/0td/leGQCV90IbUOxSl30W//Q53YYTsWrZ9VlXjjia2uHD2NVmPMvM2xfztPABtrjICjzaZER7RUHARdevnAzJd2w=;5:RjA8wbScZRIRfwSUr+mjEM02Fekel/gSPsN83FztfcKosSn9CJWCKAq1h/192fwp9CjuCUMzkIr/PUXy5bPuceidmvI/0B8UMZUPjEzwmjJHHexYzOEf6sTNfoDJaL5LGQIC3DpFp2oWNxjrzLaljg==;24:itTgmcJ62SLYz2VUL1b6qE4Xbk67c6b3Xhwx4LVCETjLO2jOFMnjZoniPmzkPu1exBwVsJ4gBeoK4Isd4chZcNGxLYOjtyVLMxaUShtJY7E= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM2PR05MB1220;7:9Jg7YqxKaTxZzIbwlCcmJSnQtqjA4hLxdT1ApteHypsR/PBldcwWOVSEWPxOJsXJeXeb/d6pu88npTm4cIb1w91siP2NWquO/sLwy+cSJ6ZEHiYerdORVHbwLhllZkBd0XBTHU2J2PDWLDKh7svMXsm72JywUTuHt/DYj8N6aGDqbO5Jsh2afnxpAB39sMVMLQkCQ7Q+QnhmwSQZy5zyssoDkdiWWeVSaxUMUX+WiXqU6ylveP40qJvKADfnbooV9dQ6jIwxJ6NVah9WIY3Iw4bftlUhMUpTAWXfzzFetS2yLQMMF8UoAzUAzjmAdXz7KCOUJSx3pHIrkXa0S4NTcU+BA1GOECMIRtUCUTYxRtc= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2016 17:46:12.3436 (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: AM2PR05MB1220 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3283 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..1533349 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 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 clk get rate\n"); + clk_disable_unprepare(*clk); + return *timer_freq; + } + + 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, 301, 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