From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760840AbdCVR3Y (ORCPT ); Wed, 22 Mar 2017 13:29:24 -0400 Received: from mail-by2nam03on0088.outbound.protection.outlook.com ([104.47.42.88]:4992 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1760800AbdCVR3F (ORCPT ); Wed, 22 Mar 2017 13:29:05 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=fail action=none header.from=nxp.com; From: Leonard Crestez To: Mark Brown , Liam Girdwood , Viresh Kumar , "Rafael J. Wysocki" , Shawn Guo , Sascha Hauer CC: Leonard Crestez , Robin Gong , Anson Huang , Irina Tirdea , Rob Herring , Mark Rutland , Fabio Estevam , Octavian Purdila , , , , Subject: [RFC 6/8] regulator: core: Add regulator_is_bypass function Date: Wed, 22 Mar 2017 18:53:08 +0200 Message-ID: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: X-EOPAttributedMessage: 0 X-Matching-Connectors: 131346752292005914;(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)(39860400002)(39400400002)(39840400002)(39410400002)(39450400003)(39380400002)(39850400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(305945005)(2950100002)(356003)(86362001)(6666003)(50986999)(39060400002)(5660300001)(4326008)(38730400002)(50466002)(575784001)(76176999)(7416002)(106466001)(105606002)(5003940100001)(33646002)(47776003)(48376002)(104016004)(53936002)(8936002)(50226002)(36756003)(8656002)(54906002)(85426001)(118296001)(2906002)(81166006)(77096006)(8676002)(189998001)(309714004);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR03MB2268;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;MLV:ovrnspm;A:1;MX:1;PTR:InfoDomainNonexistent;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD043;1:gAWr5UtfVtBDWaET6OGny9Jmp1trJ2Od+6WLYNmkHTcZGeJo+i5HvFajV4dhdFnuUN71mEFh/EZore+XLBFhdlytIs26g6f5XtlU1ZLEktHkV4Bl9866E59wdBGBZVeGL8WMv/HWNoMRHPic7CwXdaL70qWJv6XDcjGn8yKME/zfsu48zqE3MSbO8pGA7PO2UHYXI7BnW+2NHXIhiSW1QzT1gegdR7XUYF9716OAdTnH7SzdClI5Ksnvq6VKpK1RCFQfYZZhoCf1Ublh9046v+4Q7ehjgfQAiNmS567/4QdoYIbpKODVxsggldywjcf0cl1eTnUbSaRnYRxGQcgbLuChiunpebfVxMO2I+HuugL5C3+w6TKd3rca67ddxzVWqIF+pAOBGEAc4/jSJa4lMP0IqDihpPawV7rjZX1Dixfo3MKBGMrXaels2CC1/Qu+yZ2DKbBvVk3kpJrQC6FaGroWR6RTFU8IztLnnRWCABjbWLJF1qOuVjgHsLQldIWnk4HdwZggyA6by+QQqnPsYrA9UZx6rwOWtlohKsQNmKO0gZuDNlUA35w65BYUS6AIkUc3YO3vFhXEQ+kNy0Q6fc4XKzZTfOMwPH1YBwrlCFcMFPpSEQxQT3bMNxbuJhg2 MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 66b8a7eb-0590-4b5d-1d12-08d471440328 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY1PR03MB2268; X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB2268;3:hO0Ycw6eEePuG5f940N5/QkmmqzXOgjsySieE7ma0Ec+eZeWmpupF7n06S5Hp9Yi3Mk/LejGQOexZ5U4rKTswoAiiMH19PMs9nAWaupvw8gRazMF5VMHHSnlQchfUUEepx8CP6vLynEv23p544VD9Lz4ctbp1pPdVyIiwCKb6X9UCYrZtrxYC5FjDA507h9JHgkYloc8pJCIsI/8cn7Ef1erIw9eWOhjHm3yCKrj4y8/vJTggg0FSlcQhe9VsYeDXNZD1lUPKNFry51Uwdyx82bipTXQ8DnUzM6UWkmr56/k4u6ym0+K75WTS3Az2k3oghTvlRc3Ky6vyeIUOKNTZqjwoc1Yr8LUE+HhN9oOXNjV95mHvtZthblwl1tUE/tc;25:iLWU0zG5iw+8ckf8E7V36zmO8ijsk5aghAwau1beS5AFXp3FLd4DMS+FKeePKVp7SxSOn4YcGNqqplbl1URp8Ue4fsQWQjrUqpPr8BREA4kpbV8/vjb1vUi+tM/kA/pCdA8RaFlP+5k27FLZFaVjseXaO3zcQS6hFqLNlwiqFUYZQrvwauSDjONLaEhqH2IWiWRzHBABYMnPQdI8ClQUtj3pnRDtQG1mEYBpghHhmj6nBsxJ5xFZz+O1FEXHKV87Qd/dnaUaLHjvriLH8ClV6JHPoW49YYOmF3lAbSDB+dc2fffRj14OdB+SphACXi5VhLA9ikkoVAJD89n06aNRVtAwaSkHC8gFxo/bNQvMprq6tzpbn35CDeGTIJ+yNRl9bAf2UXqfIFeR5PdPSDl3TcDGnnvWeb71s/KngJQH5ljRiJgY6Mg4TQHlBhII6k44PzCZ7MlMdBt1Z/opqRBtYw== X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB2268;31:wXe/Y1xcSQQMwdjyFS+b6gQ1/OaUZuv1DtuRYwA6kqdShLz6XI1DtfiCG9ntFdzA0U0UZ8xKL0d9gZsM/pT/MOOnttoKuVJynb8cAIUwDo/Fnau/D+Ky03ZqTwzu3mQkzMzbMS3eLPznb9lTdHimeieAP7V1bQX+8Z5MHOhDKqGtL0esEm1Y8UK0yuYRBkCS4l6QdBf1Ev5klbM80sWyUnhlxIYdaLAYZrNgYYTXCAr0YzwQio9PFUmHQJTOgtmpTDhCPEY7xueA/d5+bFm7Hg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6095060)(601004)(2401047)(13024025)(8121501046)(5005006)(13015025)(13017025)(13018025)(13023025)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123559025)(20161123556025)(20161123563025)(20161123561025);SRVR:CY1PR03MB2268;BCL:0;PCL:0;RULEID:(400006);SRVR:CY1PR03MB2268; X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB2268;4:HSsZ/9sHEI2LSSKDPlBHKXiE1BSfO1g7Q0sHVwaRLKoLxDJW2iZGkx+r3m41U9s0OUS6b8vaiQTQYFz0ylwgDhEI7l1W7YS6i7ECi1ob/GXe4uci8wSKtb6wYIJ8iA4OMzTlJmuprW2N1HpgojDudkg7bf71V4+i+ce/BqBHmJ0amj5JqVyQqLZ80pUlNZXt6MxIHVu0/WWk8ZidvklYKEOu3nZ2VTvmbmx7aZ/c8wes6fyzmbn8AvmtacRqwnqVWM6IhEiP/SWER9qRKcnUHchFdDYrDARjHd+7pLli7f/zcgp2CUXX3RANPexOj7woI4rBZTkNXf/GVj4SJ9RWLHyupyejhCG2iYP6bfu9fKNMqeHRNmjqhrLhZqpUxSw9tjIzvCBLkbNN22laMkGHb40h97jzdzyiZCJnrtVVi/bbsBwUEH4XQH7K/YisjP8CPRo2flthMi08IAB8KdWEIouP6NNAdbO0PMIcd3REGp2h7j3IfJQkTZa342mWYCB5c0+/iYCn7TIL/DhZJAFUMvZPHI6fOTGJPQ1a5pDdOzNFrikx6Z7dW0++zOFIV6MUQ1lxxUboqXFufooTAspJkHnkldetygB0db8Y86Y2vGp1Y1iu9Sbshsj1tXLxNCkb5fODhN+5zrvCtZsJiu6GDDAfs2orsXAXl3Z1Da2TXNwcdQv21G+WRYu226pgyEkHlBASqV8zIOgRxhcowDvhTFjFPAyXvDfQRb4TAo8VH91I88jk8NQgT/lrRY87fUBB X-Forefront-PRVS: 02543CD7CD X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR03MB2268;23:BlQx0z8xo97yg2o3AB5uAO+PZ705mjaBQ0FY2EZqp?= =?us-ascii?Q?JVDWT4hSqkwop6sH1zyjmDJUDd/gFRhUCh+u42Dx2CYONYBogXbhnP24TAQy?= =?us-ascii?Q?r1VK8r5DCPp/7hzpKV9dpgWyp3cRBe/8v6NOR7R8kTHzZiMsAyXqrx9m/7hb?= =?us-ascii?Q?w1RMMNQHlrYTdwLmqcAVm4j/MytNK3pIURyZVhGTqtn9Ji0j8CkPrSYbMYOs?= =?us-ascii?Q?m+Euf5mZpoR/+Bi3z7VAS8o41PHF6nT8iW9+7Ec7biXyU60I2WB5Da/WSTlv?= =?us-ascii?Q?H9SWZhW8I3hCyzS5MOmQR6pkSg/4LPPuur8nOi/ZdWY4YTfyFdHoJO5hU2bv?= =?us-ascii?Q?4tHnewewnssdJEYIA3gtpM8ARTK5gfiGyv095pu3f/XksM7HA312bgC6ZmFT?= =?us-ascii?Q?TU8d/8EKaUeODprj06uNwRqQfBz6Pa6rSB2OvsPdB1drkZdrfyF6mR/+NYFG?= =?us-ascii?Q?gJYPQx12P+ja0kfHmKHbqP9m5HSypquzwUaJGxR9T3k+LDKpi2OmP+e+McD4?= =?us-ascii?Q?75U1rO05A+c2t1fEUxunrUY5xaAgrPqLtRMkL3cTaBFa93LN8HDFxUF5jBFB?= =?us-ascii?Q?PC9bPWaCeSVDCgjz25GuOvWqATpRP/F7HYSEp/j52gItfp9PVE2I+oLL/sg8?= =?us-ascii?Q?zaOa1hAR7O7CzLV8Lpt5FucBMCtUj0hS2qB6jy/TgyL/8JclcVcPnv99QbnK?= =?us-ascii?Q?zhkwXGAr4I30ApFi64YwNF6a9UM6wjDmzo+muPYgB0Nzc4vvi1S5VKQTq1bj?= =?us-ascii?Q?TuF9ZqCVEO/f4KQL746kRYod2/JxtGo2tSXZqkUenpZC5nTA09yqppNtPPD4?= =?us-ascii?Q?bfD0TSsRNUFY0OBBrgcVgEAwkBY30XdO47kvQP0edcXLTV1XuP863jOP6x4t?= =?us-ascii?Q?nyo83atTJWuCwig6M3nehBY60VA1lmoft8S/6dReAuVqx4iLLorFzFbl9mTW?= =?us-ascii?Q?npVj7+6LAGzw7WRA5EYuCzPwT+Se7W123T1B/3gIL39TbfGV1/jnE//DAlSk?= =?us-ascii?Q?RhaqXTm6G4dmtcmtFQLrtBlon3b8tx0h4oZ2UhS6hEa4v7GvAJbYowQFuRUf?= =?us-ascii?Q?N9Per6DUJZ0XmGNhQLaz2AlpQweUrirt7yY3zTzY9gVcaljsNGRt7SSljrR6?= =?us-ascii?Q?XHXGzjIDQEzTy92weunbbptq8kKD0EFicHxq9mie7mZYX+8L9JcXrfkHTIiN?= =?us-ascii?Q?Moc9vceFGtfivLe4F1H6drmL/Unum/G9GdlHl7pzUQL1QjNZtpL+DJmroRz7?= =?us-ascii?Q?EDgYtXWspvBsKazsvGpcA9nf5kZz3978i4qf2bI?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB2268;6:CZj6zMltVQTBZTWzyoIAx3eTgEB+bCIFlBhsaa2nTS075rPtmRNSp2xpdgw8Se4qdWsx/Gp5XcD6CVtlo47kNKmOM72yMI6g4OFg+UXHpiz3C8K8aHoBrmQevPcYd6ZRbmqRrTVCGxXckaxzQ5E9YvzBeZ0Ftoy5RGaO+evuUDQt2gjV3MQHNJPHq+g50XiHc+a/TvUU7xilQcy1UK9dSYYj1w/xrpoUgWzEv4OwfSQFxTwlV4qH4dTKYDVPvflvCiJtNh7D0AMCh/xyzqwJxHc3sVlvd+ljEkoEMFj5hNs9CXVfSEe+DMT/OZ13FtI7gaXztAQrfVB8W75S4non1e3GrlYlDJ5jV7wi2MfZeCuubBeH0vAtUNtNK7A9AJYwyAUhKjstlNYzR5ioVj9FqndA7Jn0nNebVMpR21ISdrY=;5:7navk+DQJ9+AmNsirnH6Xd/MF8/dKwtMPoCtCmQzsBckiaI/GrGQ+gm8ojLxMxvKvVBthNsvb0lMyySDMFiB3OOtTS+92YZB7df8vFYWCwOeqSo94JWpXyBTpxMryV4efdEYDkSNCDmH/kZg+1exMKL1mPjRo2GGr1JfGpKEKT481mU1EJPgkivHSDYUk/OI;24:7/Y6OUNLlfJb8Msfdq/lyHbD/Eky/gsUkArdb78Fw3TNkucBzSr2x+CMo7KFuFKJNW2sjoPclFT4Ai5GIJCCk9IngvWwOnrBhEMLDvszo00= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB2268;7:Eor30yw1iqqygu2iVCcMtn/llQNcSsjtNFvznrnTZkrR/eGw25NnNk5VUX0eImgXmc59pm0dS6IcQj0LFA2ai9PVWfY37oHY3JfCOxN0IdxLX37If/fD26bgipCre2Ts5InsfjwtAchpkDq4tc7jPoFe5fH4CtnalFJLcnJ7VERC35SFG10mqLx0wqDAmBHtTpX/8MeYHOb/sHROVeYT3UyqO2sePJbuwYSmZ+XMAKaaufWbrIw5MkYdemjEUkTNoSwCLLl63BUT/foi9OvmqPI9sJICNuhvo4ky3MvFK5EtSk+XjarcsG4jDiiqE+KUnDXZ3KBNPOSm7cNsIU+gmQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2017 16:53:48.8417 (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: CY1PR03MB2268 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is a simple kernel API to query the bypass state of a regulator. Signed-off-by: Leonard Crestez --- drivers/regulator/core.c | 26 ++++++++++++++++++++++++++ include/linux/regulator/consumer.h | 1 + 2 files changed, 27 insertions(+) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 9d893aa..7d4f59e 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -3554,6 +3554,32 @@ int regulator_allow_bypass(struct regulator *regulator, bool enable) EXPORT_SYMBOL_GPL(regulator_allow_bypass); /** + * regulator_is_bypass - Determine if the regulator is in bypass mode + * + * @regulator: Regulator to examine + * + * @return 0 or 1 for true/false or errno on failure + * + * Returns zero on a regulator without bypass support. + */ +int regulator_is_bypass(struct regulator *regulator) +{ + struct regulator_dev *rdev = regulator->rdev; + bool bypass; + int ret = 0; + + if (!rdev->desc->ops->get_bypass) + return 0; + + mutex_lock(&rdev->mutex); + ret = rdev->desc->ops->get_bypass(rdev, &bypass); + mutex_unlock(&rdev->mutex); + + return ret ? ret : !!bypass; +} +EXPORT_SYMBOL_GPL(regulator_is_bypass); + +/** * regulator_register_notifier - register regulator event notifier * @regulator: regulator source * @nb: notifier block diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h index ea0fffa..ba78511 100644 --- a/include/linux/regulator/consumer.h +++ b/include/linux/regulator/consumer.h @@ -261,6 +261,7 @@ int regulator_get_error_flags(struct regulator *regulator, int regulator_set_load(struct regulator *regulator, int load_uA); int regulator_allow_bypass(struct regulator *regulator, bool allow); +int regulator_is_bypass(struct regulator *regulator); struct regmap *regulator_get_regmap(struct regulator *regulator); int regulator_get_hardware_vsel_register(struct regulator *regulator, -- 2.7.4