From patchwork Wed Apr 12 04:03:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aisheng Dong X-Patchwork-Id: 9675037 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 602EB600CB for ; Tue, 11 Apr 2017 12:07:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5ADB4269A3 for ; Tue, 11 Apr 2017 12:07:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 46F792855A; Tue, 11 Apr 2017 12:07:51 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: * X-Spam-Status: No, score=1.3 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DATE_IN_FUTURE_12_24, DKIM_SIGNED, DKIM_VALID autolearn=no version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id B47A4269A3 for ; Tue, 11 Apr 2017 12:07:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Kmy9VpCQ7IjP0ikogFisvOqYUOOVfjzh7NYlREUcl+I=; b=Hy8FxlCuGNw6a8 78aU/cDO6cio6z9h9nsAvbkaR/af/dEnEee3yd6h0npEe+IxogPLNO50F/QgzOcVkKR2CZ7u6P+r9 Z01SbX+pa4gsJL5hI+3U4yjdKm5o98/SwtQ0yawO61jSZEY6xjY5YF4yXdwUG2pWJlKRUac3rzAcq yXSdwgRN05MDuez7VoV71sjmtHjNCmhz+xpNBnjKMSWGuZnZPIQxFjkfthh2PsMS/GTyU3zA+rTtn U1f4cQP4mSteNf0aQyaB9S2bsgKsCn+iRJh2CcyHHmcN3PMTiURl2JtbVRW/iB8RYaRigIqiPxczh XbnhSFtIF6NYZGohOzbw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cxuaL-0005t4-Gu; Tue, 11 Apr 2017 12:07:49 +0000 Received: from mail-by2nam01on0074.outbound.protection.outlook.com ([104.47.34.74] helo=NAM01-BY2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cxuZz-00054z-Hn for linux-arm-kernel@lists.infradead.org; Tue, 11 Apr 2017 12:07:33 +0000 Received: from BN6PR03CA0034.namprd03.prod.outlook.com (10.175.124.20) by CY1PR03MB2282.namprd03.prod.outlook.com (10.166.207.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17; Tue, 11 Apr 2017 12:07:06 +0000 Received: from BY2FFO11FD007.protection.gbl (2a01:111:f400:7c0c::125) by BN6PR03CA0034.outlook.office365.com (2603:10b6:404:10c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17 via Frontend Transport; Tue, 11 Apr 2017 12:07:05 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11FD007.mail.protection.outlook.com (10.1.14.128) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1019.14 via Frontend Transport; Tue, 11 Apr 2017 12:07:04 +0000 Received: from b29396-OptiPlex-7040.ap.freescale.net (b29396-OptiPlex-7040.ap.freescale.net [10.192.242.182]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v3BC6hDc002455; Tue, 11 Apr 2017 05:06:59 -0700 From: Dong Aisheng To: Subject: [RFC PATCH 3/3] cpufreq: imx6q: refine clk operations Date: Wed, 12 Apr 2017 12:03:29 +0800 Message-ID: <1491969809-20154-4-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1491969809-20154-1-git-send-email-aisheng.dong@nxp.com> References: <1491969809-20154-1-git-send-email-aisheng.dong@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131363860250559054; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39380400002)(39450400003)(39860400002)(39400400002)(39840400002)(39850400002)(39410400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(2950100002)(6916009)(6666003)(50466002)(47776003)(85426001)(7416002)(8936002)(305945005)(105606002)(5660300001)(36756003)(110136004)(8676002)(53936002)(81166006)(38730400002)(4326008)(86362001)(189998001)(50226002)(97736004)(48376002)(356003)(2906002)(54906002)(76176999)(77096006)(50986999)(2351001)(106466001)(33646002)(104016004)(8656002)(5003940100001)(32563001)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2282; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD007; 1:pqv8brfclEXRNOnplYlYSvU+6VshXf2umgWKkiWsM3NDQ8g49qimJ8T5sZMx+i4IjYmyXl2XjszPqf82P4DBPvapbim3oUZ2fetqbAU+N9X1niprVfPj92L42/BlUjIVdsqkbEmEJUYWdLw6Jt7vVwokETdcC8FoXpIDIyvJLAgJnxrBc4krrWZcjLpJRHntnYMg/hDUapoaEZUhim8hhH1lGMbrmZGmd+cqk4AbfxR9xIL5j/yhvalE7J6/jTeQOzTSKUQV5YHlt6X0YM4Ta6iTG1rQxw9S5T5d7PU/G6Rb+xP1PKZFuWhAmhfOHHOJAzi7C1ddOEUuGFuS+njjKhJOms93TV6fAeYP9Q4O9SuzbPx/+KigYCPB3MmT/sVcca6flVXkO2MNLuooWLeSxKhMU81Obs8/wkvI2QeKvceOj7ACIGY9DiGcxFKfxGZCc2/rjVEI8JhMI55Q99wO7ebVRyuZ570m7PE4y5lvK+R/Yc1Y2DEWG9Mcb8JXV3PgC568ru+ahJOGkZ++HAD8j2z674aOIeSAgOdF4ytqah8ID68uSxmgaJTnaCSJj2Ub3ED8V8kQCtJU+fGReOyCIgIp5duAK10IzBjqYtqN3MgOX7qaGNL/flkpIWmqwdSKhkQIYqFN8ZhOls3yHKSqCdjNt5ncFIwIWbb/kymLN8PkCKHafIECXtOYDsQYR30BnV/b1FLuO3itOBT04X+9c0FBKfK/S6U438PvdS0Io8M= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: dff31f8f-ecb0-48b3-f536-08d480d344f2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030255120)(201703131430075)(201703131517081); SRVR:CY1PR03MB2282; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2282; 3:3qxc0qqUUDZZWAiVXJ7H9aIhlRydeMQMkY658MsF4UuVEtpNJwoIdjlAmJRSEfR/pTogLlJ2vy7o7kPgiHsI+1qGQ//KixgP/uJ0dZpDGvPS8KQFpQYToV/i0Q2w7se14wv3pSgf7gx8dYFYpsWBDg8NNy0U9YeUewsDVHPMvtYsNBxmllqxHtzLysOs/HFSWmOgRe0X0m1dxcNvH7TotiFOu0pxAh6x1ebWosZeEuTmz9cJMfNG9nWKEKqZW8AcGaAbq1wYDbzDFQgzOYHD8rykvTnrP28AcouvWSWk6o11JPm6oCaZVeR9Imh8BzommicHW8wcFP7rJNxhzE7p9PFpqKE5CHRpONbhcGTo+WmNYo4cmWLB+WyOAX0xz6Wxa0TxYn63WRCXoqRVW5VtZTtUCE8ooAx+Ofe5vz2YvGp61jsZGS1ml5lKIVc41tFPjwaJMMvSK/OVkEdS9L61dg==; 25:CzDmObZkjAoPD8bv7eXIimb/8sdimGyu+sZwjjkrIyVgPgpT7CXgl/RPJOJMSaVTv/xPb707MkL++QNttmNeBHCSfrJkW18IB5pKkoytUcKyqhApznyXZsE79r9GkvxvhX9hg5eDjPiwhC2cSKi3QwMNCkAvEZqM2vc6cvc5YFW4B9lVV5OPqyDk1rBd0XtoiRmyNtThoo7CvJhgKNEg6ofEjKgfjBGIA5qxwOn4e1ncxQ1dHs4HtPmOjiE5g7jpkCYi6n65vl6avlZqkQhZ95t6yJLf3dkwQr7uLdTHZXi7KM6cdfz5JHYN51A0o7du0pLcYF4by6WW1YMeLv8BC9Nw9eHP9agiMsCfPVOXV4Vhu6PufbkMFUGlOyZgXeCTam7dKsqI85BeYLwgYkbHemHZ03kWLEYf1J69TBvmuUwj+CVyqorH7vnFdxzeSy5wQ1B6TkXfk8ojtzTq1L6WqA== X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2282; 31:q+Q0pObq+yBgL1UdvdwCllHu7iNQWvjfEbj6CbYCbJ2G6ovTNUJdbeDRhT8RUqomCa7MpVpTE1QjyCCHctG7/xXpDTNlxjZLDCf+A5NNtNenMEbOMUvuZYxyAm8EIU4IAVnKEruB2YqHRirOX7d9WV7steizTolcp8fr77CAyREXYjg/2t0gNXAl0lbo8SIe+uwsa4dECC8+nQXfT+N3Ak36NiQt2CQB8MOm3UpsyFRe/Z2zh1zi12T7Sm6tD3yJwwKWTOgre9iTe/ghpWDbXg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(8121501046)(13015025)(5005006)(13017025)(13018025)(13024025)(13023025)(3002001)(10201501046)(93006095)(93001095)(6055026)(6096035)(20161123565025)(20161123561025)(20161123563025)(201703131430075)(201703131448075)(201703131433075)(201703161259075)(20161123556025); SRVR:CY1PR03MB2282; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR03MB2282; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2282; 4:zRUwguJEV/+vf5fqi2lziYq6Q2UztJ9tg/DtyLid3ByBpFyQoCWDFSQga9WW79QZjEaqfUjhUy4BCdXYs+Lx9xBqTGTZWTqo5Oq76iPwTBKnxWwPbSUSl+ujGJd/7KBfAeZ9HBagLqn9UYqMs2oo/JXDi9V+twYMQGhEp7qmg7PT04Vm8a/BGrAE2ntNKPv06uVm3rVHHPcHT8C3y7CfpLVMkj3yGA5yF96woCEIqnUYQy2uIpH78tW01AlP1Dw16xSXza9iutZkRGcyqGN4QYQoZAOE7ubtFtOYuv3yQ25ceEp4CrQcdyws07Zn93RWUzhA4ANIp80ZE0RZhx9Wf9pagOPOgeayv6s49f70a/SfSPd5LjRt0q8IxBV4nVwidj+rIFdTXIgdETdbiW8gLl24/F2lHzE7hM1h6hsr79NAsXBCpH5YMBmSdnFgiEl1/vZvHfVm+tmkhAI32glATNSoGIysOpnjQa4U/nbf1hrd71qo8z2TusiJyuqU/upNHyB29LxINHqBeJx8yLmZSAZnhIyLuEE3TiRIYdTLhj9I2UnG0wJ+jzrm0KtIcU11BrV7PVlj1kZnne66EO4opruThv5G5MaNr5owMgMLMRxK/DTUc4jj5LvsGw6lRoo54dkvVikm2nLZ6W3ke8w458tnfaNVejBOWY9gDBA5XyUMOO+d3F0pG++i5K6u1ZDE/mS1nLo7PZzqsInQr8GdzzBtJ/BFcu6yBZjJOtOhn0fNPjpfeRv0fLktpFUbJW+j2b90EXLQrcnuW/n0504HbUfkTHDa+xhBeIglVc/idu6JpaFQgAFFajUP323lf5L8b3KQWkXlAoXoGbuqu/1aSwWl+qyz8GO0CbwvmSOdaoNQXi4DjHcOM5gvmeZzfvWb7PWZ4QdcJgEt7PLPnKAnMw== X-Forefront-PRVS: 0274272F87 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2282; 23:mSJ8wCECaxnQC7MrYx/BKxMXWNFsLyGca7qfzI0r/?= =?us-ascii?Q?cW2kAFtY8VcEQtch0Hcbea3XhUyXk5b+6g167V4RtI3p4T3xwFoL1bWuFvtV?= =?us-ascii?Q?Or03buI0amrxuA5+O2PYoypabgKx55OuCs+3qy56DsA5FAtSYQvn6wPVzDCD?= =?us-ascii?Q?9z0iDqEnSi5t4iNoO1w72SVNQiaz+193i9HWlIy3xjKRrnEyq5dwh2ZbdRDF?= =?us-ascii?Q?ZmEEuRFIauHtFf3tbzKtaa12z1KRajkrvTVRRNBH30GijGZCfn1RhnQjkg1U?= =?us-ascii?Q?CkIMcVSjl5gzTzlAsr0pChsLFNGDkJ2234/lWAM1Tnhhsij6jgXKkJj52Lzr?= =?us-ascii?Q?s9NR7Om5cYwhChnmGkjJ0ObAuoWl4KhbXe93k0YNNqNJjx5mvuUuH+bqelpF?= =?us-ascii?Q?f5EQpUSnw6YOM18uSEuf8liB1WHK/Dzs7IUPp0dYGrz6gSDYthfCWdzvruj7?= =?us-ascii?Q?6iVZ6qqtBjVChQFMnt8zjXDzGpyvN0/PG3j6UGBTlXnZrbRcV+P9ryfHruUc?= =?us-ascii?Q?xsCpaE4piFEZjeUqSxcGDy0Tg2pna5u51F+fKuX4RLbU7bh68rffNOlxWzMX?= =?us-ascii?Q?3FYRvUgESNtVnV1fRgLjf+CLROlYmmjsQ6DYrVkc+o1GAQXzfYtJPQZ4e6DY?= =?us-ascii?Q?YM8jhTAveYX9VcO2aoiGsP2GCoBOxdqSqoyksw9MYJzmg0DwOD8Z4SmW7icM?= =?us-ascii?Q?64bpEECjOhiEP1g46OXEnoAAtWTwgCv27n9O37tn8+TU3aCXkIS1KMkqCJVc?= =?us-ascii?Q?G7zvwx7x7jXrJ3my4g377pgkFGGsxa+Uf91phVXUOulgu0RtOzy9x9WNcD6z?= =?us-ascii?Q?BAw1fdZtgZuBArrSOn3l48NEwSR5gJdrwFxcufYGkLiItN5Aw81te0SzTO8U?= =?us-ascii?Q?Uu95V80JpDZgCnPx3HlO1ptGaPVMyfJjqF0z6SSHSCDbBuBlbW9pbV226LVL?= =?us-ascii?Q?i3p7ywz57TpAh2foSYuEV6SiFn3knUe7J4Lb0uo7oy4k2oDS4ydFLm0K19Jh?= =?us-ascii?Q?T6A/KsQQC9CT3zuheB7W+3ZkkQrDu40WmUVEDtiFjH6GIU6zBNAExXTxqoWK?= =?us-ascii?Q?oEt3ccBaE4dK5dSI6R69nD8fX9DXYxknIxat1GhDtzZoVo5CZSLIvk4yPaQL?= =?us-ascii?Q?/T8T+qRizIkWJyOdnHw4ZJsnRTRDq+jgrExfrxsBbXIYbzo7RB0rPmDEyPrg?= =?us-ascii?Q?ESt8bFH9XoXYyC6g2/mIlx0sH8MRU/882S1C7+AdOW/Y3pM+sGs5p1ELK3XN?= =?us-ascii?Q?ajkXgsNQYUZtcub79guwVmRQXr7m1/mwsEBZYh52oFy45pnUK3dIToKp/nx/?= =?us-ascii?B?dz09?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2282; 6:+lUximrPQf0t8Xr5tkHxfCWJhqP3kb5qIZR3usMSM+8kv42o5IB9qlulujg1ZiH93gqCixwGyrqMmIPPejT1K/QwTf5CsSEQWBSeNLwuPPJ8i3/vHQmox6uHfdMGKxNbJAxODAHizQljD74sHU7j6PFP/B8vTdbY7raibGQVp61Ftj94EttWAM/u1uR7Og3KtWd23fTgHFUYiBkwvdKRyfaLjuVKy309BWIdw6c9v7l+6cHemFHsvX/22sRjkE4RIC/TdWVslSwiFin7f9MYxDm+WZo6wfEcnTXyBptILumMrB9TdT3cNPaAjdYc+M9EtDFQEJKmU8mhtBJW2LaAh5ngc74PZNI2IN8xD0axDcC/YtfPC+RJskXnBzn+JD8Wjdm9kcTjN8/KyoOsleU4KytsJATzz81isu4D3i/FzUR06xZrnz3xKUtHDco/8o6pPzCW3zLxzd9fPR9MiPRB+g==; 5:XtaWHGWV8UH4JK5OECEVelbftilJpSMgEa84JIkhoINosIgc/qGpZ/I5gooXPvepNwSHPiM9BD48/0IHdBcoDz17xw2NFheq98SuiMGVCXaaJ8Re4LLLClnWoALxwJ64KX4T03VWTxSHG1AjJD/41rCq31y2ip051RuCYwYw/9SSokLDTVYH2TUsdpyFzz4o; 24:rZZA48lWIy2+ZbYRugIshXnvYeCnPPLuflcyQBMMxqLHLIIzsXdNZzI9aGwMYWwYPnh4ZR76U2QCXUrcVUvqz9w2PrkBKOtD0Gv2TNQt72w= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2282; 7:xFJCZOy/f1K+TBu0jFpcERz39ODj3TCbAwUJdCr58fet+Twl7mcaZWNI3o6HZZGAV+60lKYRXKcxWBVCb8009BGLmbeQpF2agBsv3qChVgQvKadQPAMnWPp5gudVYpxFvB2oWBm9CmmU41u1i4yDYK9uysTYRb15nVNrc08eW6yIxwohuiXcSqM2wcFGShTfyqcHBsjgDQV799nJz8q1KPhc85bdCK12H6txyqaD4stMPyM14K2Vu7BHhTUORQBBfPzubTKmx0Z/zGfBob6hO/Vfq2RXYmWkqkgmZw66yl6LcyO0U/Q17n8Q2OuJA7ztDqMrWp22KWjIFupSR84J3Q== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2017 12:07:04.6969 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2282 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170411_050727_677727_A19AA6FE X-CRM114-Status: GOOD ( 17.23 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aisheng.dong@nxp.com, leonard.crestez@nxp.com, ping.bai@nxp.com, anson.huang@nxp.com, viresh.kumar@linaro.org, mturquette@baylibre.com, rjw@rjwysocki.net, linux-kernel@vger.kernel.org, broonie@kernel.org, octavian.purdila@nxp.com, kernel@pengutronix.de, fabio.estevam@nxp.com, yibin.gong@nxp.com, shawnguo@kernel.org, sboyd@codeaurora.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Use clk_bulk_get to ease the driver clocks handling. Cc: Michael Turquette Cc: Stephen Boyd Cc: "Rafael J. Wysocki" Cc: Viresh Kumar Cc: Mark Brown Cc: Shawn Guo Cc: Fabio Estevam Cc: Sascha Hauer Cc: Anson Huang Cc: Robin Gong Cc: Bai Ping Cc: Leonard Crestez Cc: Octavian Purdila Signed-off-by: Dong Aisheng --- drivers/cpufreq/imx6q-cpufreq.c | 119 ++++++++++++++++++---------------------- 1 file changed, 53 insertions(+), 66 deletions(-) diff --git a/drivers/cpufreq/imx6q-cpufreq.c b/drivers/cpufreq/imx6q-cpufreq.c index 7719b02..6158910 100644 --- a/drivers/cpufreq/imx6q-cpufreq.c +++ b/drivers/cpufreq/imx6q-cpufreq.c @@ -24,15 +24,29 @@ static struct regulator *arm_reg; static struct regulator *pu_reg; static struct regulator *soc_reg; -static struct clk *arm_clk; -static struct clk *pll1_sys_clk; -static struct clk *pll1_sw_clk; -static struct clk *step_clk; -static struct clk *pll2_pfd2_396m_clk; - -/* clk used by i.MX6UL */ -static struct clk *pll2_bus_clk; -static struct clk *secondary_sel_clk; +enum IMX6_CPUFREQ_CLKS { + ARM, + PLL1_SYS, + STEP, + PLL1_SW, + PLL2_PFD2_396M, + /* MX6UL requires two more clks */ + PLL2_BUS, + SECONDARY_SEL, +}; +#define IMX6Q_CPUFREQ_CLK_NUM 5 +#define IMX6UL_CPUFREQ_CLK_NUM 7 + +static int num_clks; +static struct clk_bulk_data clks[] = { + { .id = "arm" }, + { .id = "pll1_sys" }, + { .id = "step" }, + { .id = "pll1_sw" }, + { .id = "pll2_pfd2_396m" }, + { .id = "pll2_bus" }, + { .id = "secondary_sel" }, +}; static struct device *cpu_dev; static bool free_opp; @@ -51,7 +65,7 @@ static int imx6q_set_target(struct cpufreq_policy *policy, unsigned int index) new_freq = freq_table[index].frequency; freq_hz = new_freq * 1000; - old_freq = clk_get_rate(arm_clk) / 1000; + old_freq = clk_get_rate(clks[ARM].clk) / 1000; opp = dev_pm_opp_find_freq_ceil(cpu_dev, &freq_hz); if (IS_ERR(opp)) { @@ -109,25 +123,27 @@ static int imx6q_set_target(struct cpufreq_policy *policy, unsigned int index) * voltage of 528MHz, so lower the CPU frequency to one * half before changing CPU frequency. */ - clk_set_rate(arm_clk, (old_freq >> 1) * 1000); - clk_set_parent(pll1_sw_clk, pll1_sys_clk); - if (freq_hz > clk_get_rate(pll2_pfd2_396m_clk)) - clk_set_parent(secondary_sel_clk, pll2_bus_clk); + clk_set_rate(clks[ARM].clk, (old_freq >> 1) * 1000); + clk_set_parent(clks[PLL1_SW].clk, clks[PLL1_SYS].clk); + if (freq_hz > clk_get_rate(clks[PLL2_PFD2_396M].clk)) + clk_set_parent(clks[SECONDARY_SEL].clk, + clks[PLL2_BUS].clk); else - clk_set_parent(secondary_sel_clk, pll2_pfd2_396m_clk); - clk_set_parent(step_clk, secondary_sel_clk); - clk_set_parent(pll1_sw_clk, step_clk); + clk_set_parent(clks[SECONDARY_SEL].clk, + clks[PLL2_PFD2_396M].clk); + clk_set_parent(clks[STEP].clk, clks[SECONDARY_SEL].clk); + clk_set_parent(clks[PLL1_SW].clk, clks[STEP].clk); } else { - clk_set_parent(step_clk, pll2_pfd2_396m_clk); - clk_set_parent(pll1_sw_clk, step_clk); - if (freq_hz > clk_get_rate(pll2_pfd2_396m_clk)) { - clk_set_rate(pll1_sys_clk, new_freq * 1000); - clk_set_parent(pll1_sw_clk, pll1_sys_clk); + clk_set_parent(clks[STEP].clk, clks[PLL2_PFD2_396M].clk); + clk_set_parent(clks[PLL1_SW].clk, clks[STEP].clk); + if (freq_hz > clk_get_rate(clks[PLL2_PFD2_396M].clk)) { + clk_set_rate(clks[PLL1_SYS].clk, new_freq * 1000); + clk_set_parent(clks[PLL1_SW].clk, clks[PLL1_SYS].clk); } } /* Ensure the arm clock divider is what we expect */ - ret = clk_set_rate(arm_clk, new_freq * 1000); + ret = clk_set_rate(clks[ARM].clk, new_freq * 1000); if (ret) { dev_err(cpu_dev, "failed to set clock rate: %d\n", ret); regulator_set_voltage_tol(arm_reg, volt_old, 0); @@ -161,7 +177,7 @@ static int imx6q_set_target(struct cpufreq_policy *policy, unsigned int index) static int imx6q_cpufreq_init(struct cpufreq_policy *policy) { - policy->clk = arm_clk; + policy->clk = clks[ARM].clk; return cpufreq_generic_init(policy, freq_table, transition_latency); } @@ -197,27 +213,14 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev) return -ENOENT; } - arm_clk = clk_get(cpu_dev, "arm"); - pll1_sys_clk = clk_get(cpu_dev, "pll1_sys"); - pll1_sw_clk = clk_get(cpu_dev, "pll1_sw"); - step_clk = clk_get(cpu_dev, "step"); - pll2_pfd2_396m_clk = clk_get(cpu_dev, "pll2_pfd2_396m"); - if (IS_ERR(arm_clk) || IS_ERR(pll1_sys_clk) || IS_ERR(pll1_sw_clk) || - IS_ERR(step_clk) || IS_ERR(pll2_pfd2_396m_clk)) { - dev_err(cpu_dev, "failed to get clocks\n"); - ret = -ENOENT; - goto put_clk; - } + if (of_machine_is_compatible("fsl,imx6ul")) + num_clks = IMX6UL_CPUFREQ_CLK_NUM; + else + num_clks = IMX6Q_CPUFREQ_CLK_NUM; - if (of_machine_is_compatible("fsl,imx6ul")) { - pll2_bus_clk = clk_get(cpu_dev, "pll2_bus"); - secondary_sel_clk = clk_get(cpu_dev, "secondary_sel"); - if (IS_ERR(pll2_bus_clk) || IS_ERR(secondary_sel_clk)) { - dev_err(cpu_dev, "failed to get clocks specific to imx6ul\n"); - ret = -ENOENT; - goto put_clk; - } - } + ret = clk_bulk_get(cpu_dev, num_clks, clks); + if (ret) + goto put_node; arm_reg = regulator_get(cpu_dev, "arm"); pu_reg = regulator_get_optional(cpu_dev, "pu"); @@ -354,22 +357,11 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev) regulator_put(pu_reg); if (!IS_ERR(soc_reg)) regulator_put(soc_reg); -put_clk: - if (!IS_ERR(arm_clk)) - clk_put(arm_clk); - if (!IS_ERR(pll1_sys_clk)) - clk_put(pll1_sys_clk); - if (!IS_ERR(pll1_sw_clk)) - clk_put(pll1_sw_clk); - if (!IS_ERR(step_clk)) - clk_put(step_clk); - if (!IS_ERR(pll2_pfd2_396m_clk)) - clk_put(pll2_pfd2_396m_clk); - if (!IS_ERR(pll2_bus_clk)) - clk_put(pll2_bus_clk); - if (!IS_ERR(secondary_sel_clk)) - clk_put(secondary_sel_clk); + + clk_bulk_put(num_clks, clks); +put_node: of_node_put(np); + return ret; } @@ -383,13 +375,8 @@ static int imx6q_cpufreq_remove(struct platform_device *pdev) if (!IS_ERR(pu_reg)) regulator_put(pu_reg); regulator_put(soc_reg); - clk_put(arm_clk); - clk_put(pll1_sys_clk); - clk_put(pll1_sw_clk); - clk_put(step_clk); - clk_put(pll2_pfd2_396m_clk); - clk_put(pll2_bus_clk); - clk_put(secondary_sel_clk); + + clk_bulk_put(num_clks, clks); return 0; }