From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752713AbcHQPK3 (ORCPT ); Wed, 17 Aug 2016 11:10:29 -0400 Received: from mail-bl2nam02on0086.outbound.protection.outlook.com ([104.47.38.86]:58272 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750764AbcHQPK1 (ORCPT ); Wed, 17 Aug 2016 11:10:27 -0400 X-Greylist: delayed 9212 seconds by postgrey-1.27 at vger.kernel.org; Wed, 17 Aug 2016 11:10:27 EDT 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;nxp.com; dkim=none (message not signed) header.d=none; From: Fabio Estevam To: CC: , , Fabio Estevam Subject: [PATCH] regulator: pfuze100: Allow pfuze3000 to not go to low power mode Date: Wed, 17 Aug 2016 09:36:21 -0300 Message-ID: <1471437381-1752-1-git-send-email-fabio.estevam@nxp.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131159110024467006;(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)(7916002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(86362001)(50226002)(106466001)(356003)(110136002)(189998001)(48376002)(81156014)(8666005)(8936002)(50986999)(7846002)(105606002)(50466002)(19580395003)(81166006)(47776003)(19580405001)(85426001)(2351001)(97736004)(305945005)(229853001)(77096005)(586003)(8676002)(11100500001)(104016004)(87936001)(36756003)(33646002)(68736007)(4326007)(2906002)(626004)(92566002)(5003940100001)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR03MB2710;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD009;1:6otajqkmgjxH+4RuXDIvzMzT9Fxl1OOF+64CmzaqSiqpLcun4O6FTQmKTzdItiMJAMbbPobLei0OFzgtNS7Cspti7mvtF4SOzu0OYrYCP2VmJ3JzLo95r5zMZ3yAFdRx9gRfRVlfShdVIl5nOCpgmwd4NUe12Ej+b5fBroaljlcGXOVC+8osnKdOnl7E8SumrbYc3+wOy/MkAjY8fF6FTpVJ5tf0Ac4JRsh6ffupZjaZECTBhdm3j9uTnZMIdM+PBuYa0sn5e57UfUyhzZiVthhGLO40F0ZsV9y4qpUCPBolairVlzS9/ldyEmO9xq+u2TCHnEBDeC/SxodglTrRkN5Pf1oha++0kcFz74V9ZendeCdwIKEXA4UrS1YMIRs8HtB7c8PhfWF/54Ev7YYPCTUFCtyBEKLm01yqEASjFDkKI5CQC1hVC60JDLSMH4v3DLZB++VB3D+2fBsCYYYJ+c8kv/wwILpX4ZwK67wQ+qu4bJkh1RE8aTpWPO0V30NhkfxOpNEG1lHW063Sps7nLmr/j+m6R0zV7pC8xxyMZel1fwoAGsM+ZKl87S+5zmuf5QxIIpF5J4h4PPx1JuzHi+aZO+1vXdEQkgpPJFu60OQmcjcRmYRw+Kvx4ohGafJio23VEKuTW61ZYT0btG3N8gi8m2/bizQBrNSTThFfM6qbz5Fvtey8iKTqqnWv/9kMXGBVpv4HYca75+r/2hpfcCiLgoYlYXgV3ESksiW0PiQ= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 44a19833-7515-40d7-8736-08d3c69b2474 X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2710;2:C35D564Hp+xGuK2EsRyS2ZOgbMjI3e+HcFlVQ/eI5wsWnXWhhI3lPZE8cg81zPCJfuumtJ4lwuz/2+La9NcuaWALgM30mLd65sVwDUJm0hBd0MOEvo3kacV0sX00WBO/lm5rsZTlRjmP/l3dwGTQkKCBcbiV0Apvr/C99QjR2e5OTl9W96PRnJgWMn1ttIvq;3:Vn04SX/bLlkwIYEi2d3b9i5wKuecQ9HvAN+yeCjP+gps2gCTHBVnjNHjnLULWuPLW85NHiVfdSnWM2WKvnnJg7Xbh8oMC9C01wrwrJjkzoPwT8cwwoyF6RyiqsG0Nzevb6559ngfB22BzSC2nkeRDosQcvIon6huLqpH5qCn1gBQilQ96k9Ll4cDayP8wecS3fTr+2NFEBPEGm7k/gqA/sOBdqXDonMQcZce+V1hziM= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY4PR03MB2710; X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2710;25:i7x4rW3enGbGUWk7Rz/tt2Yk66pPmR5EPaMFuYk49A7lzjjUtqP+AWTNTmC7Nm02vkTAmTrVLX69jAbXEmhHYUz35JDsPPuSz2asqu9wwebftwaKiUB4qAtDQ5s53Du0cqgEjqa6QyGFbXv8JEhaD9sKJa6zG2UZ+6CsTEdSSyK0NLAPxwEmVMFqIghxf2v4hqom56y+YxKPRDIva8mz58OoJ6NoA6EapL69pSH0Hc5L7QO7WmmdzsVGzwiE1r9lHC048S682t6Q6KIcIdPWX545FqFyBny+rTZU9bQ7wwlS5wmPAnLoE8rg8AkIAqkLW9Jdevks7l2ciHpqmVLfH5LYrnqgbglpBHpIWstxhXtLHAsiIKjC71y0OiqBMnjl65xcKUylibV18a1nsYSV1COmRSYC+68XAk+XZYGlDzyNzhDrvQ7o5kXZKVZc89Ya0m8wWs0Q5mH+eYtrl3jNJuh16psWsRa1/9gIHnQqsGXhLt3jgs4cLZTUC58nFdVwFCVvGlLvHzQt8/ShXSTczb7jSCIc3w8GRbn9fVUndvNIjBndZA4i9GJWbnQHQlGb01hjOTffb8QkBPeKcN3K+vEaEYLBkOR0TMK6/YrZiC7PMTsPN2V0tEhE9ZJG8HB4y2AK9FG9+Uawc5uFrAw49p2bpLzXtDCOOG4ek85ModSmu5e9Js8hYZmdpwOmysQxf+U5UKvUOMkVMV/8EywkMjpJG5XB41YlDEkOaz4V3UHhlvFIUpTmEShhrp1jvsg2 X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2710;31:S4rN4ENAEc5KiTSCt7rJWPysh2F+eG6PVlG4z/3CXawtviVK3FEx6a/7v7oSwmFYy+x7hqCqD+6AjkKQEozbKtA032OPuiD7W0Oxk69X9vV+rqRHtHPgP4g+OA3TcTh9av8kTohUTRPBwv/UbX4oppJXSKLK+jPGyKbHAY9uruicpcOQwwJ+Iq+I7GUG/QuhkArM7hbMK/8pIABe4+qGKnA5qHjhnlCnpQFkdUHU4BM=;4:65b0Va4cC7OI7Tjm8p7YPLlH2MnJmjwNJuS933CLhodywIRZdii4KoWjmhljMFbzAOnjFYdbyhqwE6kb2mP7xKQX/F8eGq1x3JI68eL++cJwq30UJHbWhxaXRGYuvp4qRELpTzbdEqmmwaYEVxS79PryauIAI5HYTgT73AeJ0yDdTEP4dLXtbkoAcDt/LR/J/J2MZUJV+Ql24606/gGwSA2MwvC8WtBVlyOOsgiiVjPwDUqfJCU2l9rWRj1g51ulLzZp7SmdA/1bXFkOXi08WbrX+882dknfL9dwxocw05kGaBY/YwXZginN/wq21NjMN8gvxxTO2XGBGYXi40qDNUUx+5mq6ij3TQeT1dFOhYuHSgVcn3Jsl9hu7j+Qymcr5E5oTn5IrfWxVT0Z5GGcX48ray/1hoKEQrMWIH31ICHRuFkV6JYlqYPJ//3XbcRNMWMTclHKFlvhuW5xUd3HX4y1l9K9RnKv5nsKOS+563oXVohqbt1dkFYZfflZNE4m7KO2qnsuAFzyaJjUMZpv2IcN+VhJY3RBw8tuKEEBQfY= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(13017025)(13023025)(13024025)(13015025)(13018025)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:CY4PR03MB2710;BCL:0;PCL:0;RULEID:(400006);SRVR:CY4PR03MB2710; X-Forefront-PRVS: 0037FD6480 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR03MB2710;23:LlIWp/lkfzUu8PVIRHjiyL422AW8ZMS+OKWtWpkiP?= =?us-ascii?Q?Ov5niklY4hI/UPmeWjbjH/EgIe2lFN9RVR2g+dM9AX94FGkWOEw7zJYBZyKV?= =?us-ascii?Q?Zt+9M1zhDvBGSrRkWleCRE//f4O/tk7fcWw1sZRpQD13naOXV50VWR0MT04K?= =?us-ascii?Q?kkkN3ej2kfInWB/QyIhZxOL4QaQI8XTTXjpKJ6QPabjx5gTf5Rq4kkZs3jhf?= =?us-ascii?Q?CVsKhsoLRzErf6JA9YkZQgHDYTxendA4s1A/t8bglwlBSbghwagwEUQ6+FsY?= =?us-ascii?Q?Aud1/y6kZCtbZ6dOI9fzdBHc3cOK77dvaaK2MrIBQc5le6EUbMVECwEEFOHU?= =?us-ascii?Q?TKyisiAT52/UbFkIxQ5ObDFEz0kCY3/jB0HGx9b/7M8ArYsw8i2Sw9rEmGBg?= =?us-ascii?Q?su1WgCv452edjEG7J3SPf5Wb6PCEsn8Y5cfyFQ7ASYJDFcpZn6HjPpRo60O1?= =?us-ascii?Q?Wfu5IS69+nC4WdNnv16Za9BEhtOdfILfIiZn9yhi4GT+Egaqkh5Gtq2Sveal?= =?us-ascii?Q?LtAJ0CSsUqtexFtCaOYoOfjPyDWZVqZgYnL/gl61zJLQQm+I0Zoo5da5efwO?= =?us-ascii?Q?C21Oh3Bm/ApfUN4wXv64xydm9iJ8XUGBRFsCD/TNASD5S+ibNkZPdUsd+Yno?= =?us-ascii?Q?RyEI7xJtY1RY4fyio5YiXdOr7BqVqC4ZrvH36kDtvJGnTjZ3SFDIPCmoWgk5?= =?us-ascii?Q?ZNVGekN15fmxfF0bIwHd4cLfOI/IRzcwFuCTlG24QPtkoYrsenfd9ulhDEqg?= =?us-ascii?Q?6WMoIyYz0K+9mK/zBQq88igtQkDWHw4M6JmG+baTuFzij/GzNS+OMN6fyLxR?= =?us-ascii?Q?KFQ3U58xHqeyy3XuPTcETo5JdP8pf7ybQYD2MRUnVyqwdfdI3iHlyGOYM9C/?= =?us-ascii?Q?ovLmH+6FtjYFpdc1I65CRw2w6gLiOJ57ePz+HZxzetCPE0TInTlrFtmSEJRb?= =?us-ascii?Q?jKmvu95sKJ/UUeKybz7nksgBGv/j4rQotngPoB+8bBHomKuupHM6pa88c8XS?= =?us-ascii?Q?Sd/GLZtK0+86LAbloDz9+2BNdYtlnBMlPTXeLqfvMcDzieLlhFzmrLt9oHUM?= =?us-ascii?Q?AIXYI6GDoorn2BO+RhJKoYJi8aYwby8teHYb4rZHQcDQ3oNuw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2710;6:4SazPxe+NIZbm6/lRKEEVaHEnhNDAc09B6aQcXosm/JTIaFxt8P3jzgkXpysrnjfxl5wo/h3KGe3c0VwrGG9UfVxUsj6D67+3oyYUOFzPi99ZUBA0ImtY8tTLWaYLtWB9NRJ76Y6Xt/y3+LAIrkqcm/ukZWMDxXtOzDy4RrEJw9NNtOu1q86KzwZJDoRBLPySQkSwGPO7HTcgUHTUE/ZLDi9HxrGcRrHRSyFhZviHfvhgUZNDlSR6qDgHi9CWs5wuDFj4YlD33VLP4MLWYPOsok1+g2O/3+Z5WtB6N06Z9o=;5:A7XHDRNNCE3zE2sJZmVd3plD/VFenuMzk4kkps/zFy+yv3Y18mzf4L7Fr0g5EWZw5Of7xka2UP2OFggFUzrEYWiYT6bgSyHEkTGmCZuV/UuoypS6+xdFxO5iKHpZvnzNKknAzlnuQbab6zXmjUcH+m6Yprpiq0LW2Dq6M/zLbc4=;24:w/63yjC32ZhrSIyTcS48gCxhBgjHLOufnM6mDzBWDcxLSUIaCu/ho8x1Gz/pNfZvMnrsc3bjFyxA7Gu0/gSH72FNizYbMQduKo+ZDCFuq5Y=;7:4wUU94v7MI98/fVCOGQWbM3UzEaE+iNB6ccrAN8uSMPR/LYQ9pT7RO8y0jfK/P6vgncd++lUaK+BvXaZiCwqb+SUzzEVZxrDSu8NjUD2vbLwlI145K7R69En1OGFF/+kLnpFSUymSfzFKvhaV3C3yZYFNbMUlPJVDBS8KY5GS0fEN4XscrusGPiFK/XJ4vHRt1sZtxz4lpfGJSCXd0yjBQgy0+X3xugebvWEAUh160shw6JBgMiA7JwHJz0OQf7o SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Aug 2016 12:36:42.1502 (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: CY4PR03MB2710 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On a imx6ul-pico board, after issuing a "echo mem > /sys/power/state" the board goes trough a POR reset instead of going into suspend. This happens because the pfuze3000 goes to low power by default when the system goes to suspend. This behaviour is controlled by the STBY_LOWPOWER_B bit of register LDOGCTL as explained in the pfuze3000 datasheet: "When STBY_LOWPOWER_B bit is set to 1, the front-end LDO does not enter in low-power mode during IC standby mode." Introduce a "fsl,low-power-mode-disabled" property that allows the pfuze3000 to not enter low-power mode during system standby. Signed-off-by: Fabio Estevam --- .../devicetree/bindings/regulator/pfuze100.txt | 6 ++++ drivers/regulator/pfuze100-regulator.c | 32 ++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt index 9b40db8..9d10767 100644 --- a/Documentation/devicetree/bindings/regulator/pfuze100.txt +++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt @@ -4,6 +4,12 @@ Required properties: - compatible: "fsl,pfuze100", "fsl,pfuze200", "fsl,pfuze3000" - reg: I2C slave address +Optional property (only for pfuze3000): +- fsl,low-power-mode-disabled: This is a boolean property that when present + indicates that the pfzue3000 will not enter + low power mode when the system goes to + suspend. + Required child node: - regulators: This is the list of child nodes that specify the regulator initialization data for defined regulators. Please refer to below doc diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c index cb18b5c..eca3945 100644 --- a/drivers/regulator/pfuze100-regulator.c +++ b/drivers/regulator/pfuze100-regulator.c @@ -56,6 +56,8 @@ #define PFUZE100_VGEN5VOL 0x70 #define PFUZE100_VGEN6VOL 0x71 +#define PFUZE3000_LDOGCTL 0x69 + enum chips { PFUZE100, PFUZE200, PFUZE3000 = 3 }; struct pfuze_regulator { @@ -510,6 +512,32 @@ static const struct regmap_config pfuze_regmap_config = { .cache_type = REGCACHE_RBTREE, }; +static int set_low_power_mode(struct pfuze_chip *pfuze_chip) +{ + struct device *dev = pfuze_chip->dev; + struct device_node *np; + unsigned int value; + int ret; + + np = of_node_get(dev->of_node); + if (!np) + return -EINVAL; + + if (!of_device_is_compatible(np, "fsl,pfuze3000")) + return 0; + + if (of_find_property(np, "fsl,low-power-mode-disabled", NULL)) + value = 1; + else + value = 0; + + ret = regmap_write(pfuze_chip->regmap, PFUZE3000_LDOGCTL, value); + if (ret) + return ret; + + return 0; +}; + static int pfuze100_regulator_probe(struct i2c_client *client, const struct i2c_device_id *id) { @@ -635,6 +663,10 @@ static int pfuze100_regulator_probe(struct i2c_client *client, } } + ret = set_low_power_mode(pfuze_chip); + if (ret) + return ret; + return 0; } -- 1.9.1