From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752948AbbKXIDJ (ORCPT ); Tue, 24 Nov 2015 03:03:09 -0500 Received: from mail-by2on0116.outbound.protection.outlook.com ([207.46.100.116]:37096 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752161AbbKXIDH (ORCPT ); Tue, 24 Nov 2015 03:03:07 -0500 Authentication-Results: spf=permerror (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=freescale.com; From: Bai Ping To: , CC: , , , , Subject: [PATCH Resend] clk: imx: add 'is_prepared' clk_ops callback for pllv3 clk Date: Wed, 25 Nov 2015 00:06:53 +0800 Message-ID: <1448381213-24349-1-git-send-email-b51503@freescale.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD021;1:+msU7YjFA+n+j7ZCk7ZOdEdP7WwzL1TjupPkddL0bdH7fhVksOqHF+ElRKIiB8g5akn9pB3fPCi8nFLtAFkrzybjVs96O6FwGbofj7RiebHaTGSrcwMTkDWbjmtxZzPm1y2O/O9zU1I0JUJ+PGtyJeMqyuUypqo31Cp0O1YSBPOCMoqKa7rTx8OvR1WJT8Puy8BJj1T7LtFuqS4rWH6WqmV+DxWnWRpyH/oEebRrFEHyfbZaEw9LzupBGCXLYfS/nrF1vAYNvkCo8arXWVkUxr3EOO/FKDtY4MGSbL73aRlePDIBdOge0V61vbcuDb96Ok02Q6YjPQNQrgyXGCTz2fYkCTxkPTWFPNzeXAzZtK+xI275XBF9KsLTGnOJRH/qEq4Cvf5kBYuEkYj1KS2DXg== X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(448002)(189002)(199003)(85326001)(92566002)(5008740100001)(33646002)(97736004)(47776003)(106466001)(11100500001)(19580395003)(229853001)(48376002)(6806005)(69596002)(36756003)(19580405001)(5001960100002)(5007970100001)(50986999)(189998001)(5003940100001)(50466002)(104016004)(77096005)(50226001)(5001770100001)(586003)(87936001)(81156007);DIR:OUT;SFP:1102;SCL:1;SRVR:BL2PR03MB546;H:az84smr01.freescale.net;FPR:;SPF:PermError;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB546;2:26xVoPgDxzjTt8g5oVPUxuUvtZDjy74IPesWvDJpeqsA3uLVuFxKnkjpwXn/FL/LU0+TDMWhb4vNTeBGnGAwSJp792hr3GOC1Mz21Y/YNk3hEhylvh3jzVLybnmDrsM6/IUR/eiw+DVR1kQ0PrkWVw==;3:RI8xdCdQ+VhDk70IBB/t39XND5LujM4qfDuLyI+Whnubv+DHx2Eq6iwOHlEZPd/Wcuo/rJDDtwNca8/kdhaGh1iqmtCNnFHiDFAbF1RYbVv3iDc9ymZo3QxQILiDDAmesTwOO+/BpK1tJEpJjNiYDk2qX+4h/uROqjW5kUIUvyIe4H7AvmvS+oiLBUqqM7gvNqPkKxAvdDRBH8VtNGnRB9tOslG2Hua9iOprhH3gmN8=;25:6aTQq1GrWEAssW/b+6Cf2LBWXtaaZENMAuIaUAERXyIyaGL1qjUw2b9XbhNW6klwbARABf1bcOmev2j9TdZsBsXRXHcqDYL5bsecO4qTQPgsN/8rTpbVnFSq0HedbkZGx6xuTiDMJL7k7YUpx78/7d8T9HTbEEYxUYt+/vhh3UJBZxNCFbFc8qTpaWbT3HF3fqZQ7beYAsiQwV/manKR51xv2ut8xgMJGbxzToSVEJ6fwPJFQAVvU5IgmFoHR25LncOiccTl0/0jyT2gCDTM2g== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB546; X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB546;20:Ikmszwn2XD8xPU+AaryeYPke+7TItGIiSQomuX1/cwdmGxPYc3kOKaSdHabQI2I9qOcl0ASuK8LaWOUgdlIh+PVUOmSXKU9t2TCzBC5DWt3dojwFdAiWpaqv0IGNi5SAfikn5BVcWQBMnOJKyrXsMxiD3SiSnnP55yD2c/d60b1JCGG3f4sfVkajiq8By8ueoESw0VXg4TsP4uFo8+s1ccIGgBO6zW1/KePSXvhUHxTvP12P535ORw6Fa2P8q8MKqstLJnzEKMefQx/Rp9EjYFa0rDlDwjvc/mjTze6d54ZLZVzvRrd2nKUJOBBs8OkJX4FDrT6O369bM272rXY/iRi5SDBCGxHRFkEQ8wqr1KI=;4:5KrCcLcock2VlXi+4KO2qvG5LuVohbQj7BwF3BSdY0ZuGb8DIhvhVIbtS0Qoc3aVTgTW9Kqh0agmZM9BgtdFTV1GjaG8eR2fd4gAx69dKyqNiShG/s02KgDgBzIDq4iHb7Eo7gX/EZ3+5+3RUBnbpptM5YQm0NCnbqpGPCHtr8O7oNjpeVVviNmKu21aFpVHMiorIuThDUXVcB/wu4a8WzJvC7JVZbjkXjAuZKcZA2o79303YYyPWD+eLRPisM6LUUG81wElRbae/nQ9chSU7hxKY3gCyjUDacLmw9h11L6ymzC/rbpdCkvI4whnypF6HwO8Yb/E+6PbFMMkfEb4N/k9+jEIAQ/j4nv5MMrPElPxdTrJGKgHRKHAl0H6zsiNAVdvnDIbBy5MM7As/7AxO6z3JLtEcV2ug3LQgkNYgS59SFWi3Y01fhOyaTSamnrr X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(10201501046)(3002001);SRVR:BL2PR03MB546;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB546; X-Forefront-PRVS: 0770F75EA9 X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB546;23:59H65CK+im8KhX8eTlTYvwx29XcEyZR+1uzP/DqYxWkDjxR5YT1Tyk0ISG4vSXI3/IcpXO4jogKNS/c2MYp9pQYBz/013ra5L4JBmykDaWBRmFGVouyWpXL93zlw3GwKNsuOgAx7EJOipghwwqZvXiEOp74vWY+oPsb/0VJrdFzLhNoNCk19WUnTO0tQieLdy9AZ6cqCBETLY5xMCDJnbIjuDlv+4NGVB+6EiFXG5jiuU0/vkE9ZnBTSRhvlWFoKDk3VDoZsvWUGzVFmdfHG7xADqQ/PEwhqlOQe2zqm90uZFQpKF64KzsQ9BKuBQ5qikByLql4VcIgQZJ6iIv0DtA+NPvvWJr3O/GeXhT6dNM4zDmfViCfVX76u+FXH1h2bsxQ/OK0N8UkPoIOS3hm+nF0+NUoYIZRx4u4eoMbiLr87HzVVr1yomcH+D3rPjwSZUWCPof/rujFfDhwV5laU+WBNGOgHrpFkOBC1jVKicx3DWdtzB6jtv0DkgXBuK+A+Pe7D32m8w21Al7PgfodSWxDsrgcGT8JJmFHwRyhvgwvtdpxgrZP49RPXHu2TqXzaPonjzHY3Q6W7FCGzC0ruEdPQb6WjpGeCahpS6wn6xux5sXSpz9nbQzrBH1pZ1GjfG6vjC0UquJcuKa9c3RLT33IGde60uS5byqKXEio50gXClCDcGTyDnYRV5cZR2oOB1i6z+ZuX6AdzSYYx6OZXwbkO276dhWln5ewNqW1eBXoSNU51xoydMTbKNpvlD3P6uxyuQqN2PIWYQCnii4ac4rcEYrMGW8/3eLHQg2mr12ikh8V//K9kCO+PdtHWlldpd2nSLl1LfozFeRk9IBIfkRkvudm1+Sj5Ui/Ilw9GGFNLDuPAplfPHyasJtg+tX7fM3zrhSWQo6AH584EzrLAlOxdI+ckqAdeBWkCiSsNBL4= X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB546;5:IcUHHzpTS5z41eVR+AJYqsWVMuJnP9XzKHPiSgpNdEgP8kehoc/+i8qIJwW4pkDlcYo7ltlBstSCrbIP46DwAOBWUe+VZmIXWVumhFQmDiGTtcolUBlUoJEpeZTZ3FzZ3LHDjp16f7iSjR6oK66JcA==;24:aVdE3ZpNOsyS9XzSq/rO68dpqeHhGjWT038ilnwGOsEO1ADdEKH0BB6M4VejkhXQbEQqgNp28F2qU8J/5l1J/wHoALlWRDEwJfsYxQjDhKw= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2015 08:03:02.9571 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB546 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add 'is_prepared' callback function for pllv3 type clk to make sure when the system is bootup, the unused clk is in a known state to match the prepare count info. Signed-off-by: Bai Ping Reviewed-by: Lucas Stach --- -resend, add clk maintainers. drivers/clk/imx/clk-pllv3.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/clk/imx/clk-pllv3.c b/drivers/clk/imx/clk-pllv3.c index 6addf8f..c05c43d 100644 --- a/drivers/clk/imx/clk-pllv3.c +++ b/drivers/clk/imx/clk-pllv3.c @@ -97,6 +97,16 @@ static void clk_pllv3_unprepare(struct clk_hw *hw) writel_relaxed(val, pll->base); } +static int clk_pllv3_is_prepared(struct clk_hw *hw) +{ + struct clk_pllv3 *pll = to_clk_pllv3(hw); + + if (readl_relaxed(pll->base) & BM_PLL_LOCK) + return 1; + + return 0; +} + static unsigned long clk_pllv3_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) { @@ -139,6 +149,7 @@ static int clk_pllv3_set_rate(struct clk_hw *hw, unsigned long rate, static const struct clk_ops clk_pllv3_ops = { .prepare = clk_pllv3_prepare, .unprepare = clk_pllv3_unprepare, + .is_prepared = clk_pllv3_is_prepared, .recalc_rate = clk_pllv3_recalc_rate, .round_rate = clk_pllv3_round_rate, .set_rate = clk_pllv3_set_rate, @@ -193,6 +204,7 @@ static int clk_pllv3_sys_set_rate(struct clk_hw *hw, unsigned long rate, static const struct clk_ops clk_pllv3_sys_ops = { .prepare = clk_pllv3_prepare, .unprepare = clk_pllv3_unprepare, + .is_prepared = clk_pllv3_is_prepared, .recalc_rate = clk_pllv3_sys_recalc_rate, .round_rate = clk_pllv3_sys_round_rate, .set_rate = clk_pllv3_sys_set_rate, @@ -265,6 +277,7 @@ static int clk_pllv3_av_set_rate(struct clk_hw *hw, unsigned long rate, static const struct clk_ops clk_pllv3_av_ops = { .prepare = clk_pllv3_prepare, .unprepare = clk_pllv3_unprepare, + .is_prepared = clk_pllv3_is_prepared, .recalc_rate = clk_pllv3_av_recalc_rate, .round_rate = clk_pllv3_av_round_rate, .set_rate = clk_pllv3_av_set_rate, @@ -279,6 +292,7 @@ static unsigned long clk_pllv3_enet_recalc_rate(struct clk_hw *hw, static const struct clk_ops clk_pllv3_enet_ops = { .prepare = clk_pllv3_prepare, .unprepare = clk_pllv3_unprepare, + .is_prepared = clk_pllv3_is_prepared, .recalc_rate = clk_pllv3_enet_recalc_rate, }; -- 1.9.1