From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932899AbdAEGbA (ORCPT ); Thu, 5 Jan 2017 01:31:00 -0500 Received: from mail-by2nam01on0045.outbound.protection.outlook.com ([104.47.34.45]:18477 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751922AbdAEGaY (ORCPT ); Thu, 5 Jan 2017 01:30:24 -0500 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: Peter Chen To: , CC: , Peter Chen Subject: [PATCH v2 1/1] regulator: fixed: add suspend pm routines for pinctrl Date: Thu, 5 Jan 2017 13:55:29 +0800 Message-ID: <1483595729-27099-1-git-send-email-peter.chen@nxp.com> X-Mailer: git-send-email 2.7.4 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131280692819685694;(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)(336005)(39400400002)(39450400003)(39840400002)(39410400002)(39380400002)(39860400002)(39850400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(105606002)(86362001)(5003940100001)(6666003)(92566002)(50466002)(97736004)(575784001)(106466001)(5001770100001)(5660300001)(48376002)(8656002)(77096006)(38730400001)(33646002)(189998001)(626004)(39060400001)(85426001)(68736007)(81156014)(8676002)(36756003)(54906002)(356003)(50986999)(305945005)(4326007)(8936002)(2906002)(15650500001)(81166006)(104016004)(50226002)(47776003)(129583001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR03MB2469;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD043;1:ckF67xBvUPyZGISxyar90G2MePREFdiVpzTktWlEa4kVe4maFvmWcVUzwuLXDUhEH3K6Nx0KzFW6ipNQm38xBI/BguRFIsr0rPs6FltDNo5Gcw4+rFANdP3iQhB2DvEAQaLPWJ8gTp8sjEmx7admawYefPRh/uTnDzC0H+hcaDOO82u7/NCP5UAT4Ykx0ZJhYAhgHvBSFAD9GCBYtopMaKHjMmBZTvjcYf8wQNdNECg9yt/578DbG5GM6chh8nbJiDTQGYLca/9DO105xygW+B9mxU4xM3ha1fzxODShR+hZtnvHpyy7FrMjxonoUHIAlJrgBJYmwpBZa010UH6yLSrv2wRdbcpRWZNa1Ym1zNCDxOG7fwvKff08wbVsTvfgAI43gTUvtIYLTwXYdCrGFMIAborxXdjH2xXHduMF+WBwfjk3TkVmSE3z0O8NaQvvmDE1gwg0QSkBGXWQSSRuDVmOE0tKrdsW/1EWUr2E+TSnKjr47YAzie0hGOcLlVfxE7YSaPm4njkCDScI2yztOIrHisEQrM/yaFVQkv4v2/jguCDwKtGvphI6IdwerIZkTh1L9rbTRl3zyPEMU+km8Wx0x6m7ZCmlMLrBpNPZ+UvdmjJv182VZY06D5WnZRj4/8W4/M5RUnZapM9Toeitad6DwcammF20BCo1TuEWh4WqqqQujc5PAIW1vNJ73zxOyjq5ykuKsGUbWztLlPgzpQ== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 251a6c6a-8abe-4ce9-0fdf-08d4352f57d7 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY4PR03MB2469; X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;3:1eeQ/CkSaBAtGB0XnU+CoWAyIl1lGVscaUhVB0/5wy+Z4NsQz4lJ/bKqFJhk/yJoorEbA7nmF1p2QraMRXqCtXVyJv9Ydz/Z7wo1cnjnuitJaV/fXpIP1gl+zitplHnwce2nICGS7miCGQ1U8p7rT6f2+Ehv550gI908OF5xS6VdkPZLNDddq6p1+JApJD5vA6zJV2fHoPgINlUBhASZwLpx59iaTdmXg5GGAoAjfJbIZI/5M9b3A6LnneiQkHrWvRqPM90lRS6fpZY46F5IvThAOoqcPpRvRU2dKXQCWJAe4/j0XjW9M1bgyQyK9eqFYMTDPLXGHIMH1AjxEMB+bPjLmx8VD3NxB0vpJkY5oXgyIH2SYHJRqDx1no0HCKnB X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;25:3wTILw8kT2E7r6L7BnB2jApZ2vi6+wCThB90ClwTyLzbBNbNifFMGoRdcz1JJ2Ge639E7zVvBAWXi206ME/fiH31cV/Uqr27ddkoPkgib/LR64nZls3Vj1qShfD6bpGdPVX5g5j1MezXZ2d1JphEsn7eHbtkBDDU/m/nmI0EB/20rNSt1Pic3SlxVTGiC85P0P+msEiYVHWTWBl7N6Ai7qdRIb5faHYRojfkQBh7gw9vxqh6CloK2lYyYpIo9KYmA5i/DDDiRzeINdVyR3RilQh7YEvRKW/oc8Kd35bKdf1+b/J6h6v1eSzQcMJq0iefknfP4T2IP83+elJ1ixGLEPQoDNCuFj17wPqOHY8+Bc7Lb3zc6V6AOpf3mTcnznZONFdocf6L2ExXgR757H8UAlen1XTkAhc3XL7o6YLdHJaGG0k35cOO+6WxRkXiJwBY7VkTvN4DldEQwXbXWXXvHhB9uFEWro5ESxdWlgCDNm+Hhgu7gbr2kQplsJ2UbY9zEGqkmMo9glb7aY7tJFOWZO47zpvodyeT725NdrkKgc8I077yKzzIlkYM7XJgmCvqCG0Yae6hgGsUvOgOYofZIQjPbbfVnt2mp7nKrIDM1Wk4/kkEctLBqvwHxWZsoMoQx7FBGR+zGaMbdLvVBSnBqmfCGS00P3QyphoO8+96wNGk94prI6806DMu/kCnk1BPt2D41nyiDw8YEJknIaWwogFn615ewQThzs+al9XIQS/25lhnKCsUXYexFWwZ/uv9FHTBTu7RYLwWLju/p3qfSfq8rCw7iqVnBLUmJJXFyZM= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;31:mJnaCZ48CbNLk/nLZ8CmG00M5HiUNgiLE049nkdbfdMMynT0UQvU6gzhQ+oXwO+aqCCBduiOV5R2vagpVD8RKqhN4j8KdUxTbHWsfBLdW7B+SJjt3MH+v9cOdP3TqdDtqI/dThlD/OGEatfxABiwNdbIjkk/i73mEd4IqZAAGm1wk92sfvYqhnhHrzuUw0olgDMaOb9oxOY0g1ODXLC6qopuwCicD4UbCnZWcVg9RtmFLBbzjozBLOyUSVjx9Lpeaav1FPX73n2jrTWyVSv8evAJcJ4sJ6vgMiZizh9hyK0= 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)(13018025)(8121501046)(5005006)(13017025)(13023025)(13024025)(13015025)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123563025)(20161123561025)(20161123559025)(20161123556025);SRVR:CY4PR03MB2469;BCL:0;PCL:0;RULEID:(400006);SRVR:CY4PR03MB2469; X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;4:O6jGycvfw/c0DSUiC5AEzYgNFtng7ypd0QkYOfNHp4gUsJ8t34Iem3cwidJMJo9ZE/nJwdORe4EbvgfKaJWtwMZVe+LEiMEAYqyhDwN9nXRaPf/wgmIaD8/EysTlSZtBmVQAvw2q6mDGDt7PRsCiDt8aO6PGSP+UlAqwRH4dYE9YXObSKYEu9kbiraL+7yPuHf0MD05W0rx7XyBoRcLZWicXuHwNnHMRdNKzl723GhTTvsn8WW63BW6ia4aU0Z14pPEF/GAH94XvJGWdV7L2lPRkANmxXwOAz9/BMs1yGcwA+3Wf6xy4QiSRyysqqym61ZwFESUNzmae8hIL22YzQh2P50ImE1ojUb+qFswQLTZQvg7uktG41SdbWY4tzEXofRMA8YWPjO36ttFq0S0ZviypYLS3CLkF/eRgMQMGRqEmpPt2sG6f6JHVAOcpl+OezdyXyC/5ZYaXMwDnLIQfLR2NDFXO+LPK/NKLudwsZvWuInnuAP7lTY2Nh7j20x8JbbvtupWPjGsh3D6XHDk65kgfpHqBWgab41i80oygp77N3hLHYybXChkdikvWlvIpXkoHhXIoHV/hjTtPL/bKc2xgO1nCYHWA2o6kinYf1ALFbp/gM0jISS7PegBfSUKUS9S1xuTfxLHLrb1LJSxUJ8/Qa6DOr+OlTQH+R3zfJIDtX0G8LLiwGhiFo4r86e+c8+lv4tqd/z2d3RDohHTOQCn4PuRdqRR8eXAK+MP/AvPTg6LzAll07dA91ZOAbQfG X-Forefront-PRVS: 0178184651 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR03MB2469;23:xPtEXfxtZ+le23NsveI+Edz0wHqzZ7uypzITqvSy7?= =?us-ascii?Q?QhjrjC/Z8Wo+dinSQj6/08JDmjNhCeuffKRO/nsR18VF78+yfneh77WpMMnv?= =?us-ascii?Q?VQCYLVX6UEvce0hm8Eos6Ss6/YQDxjAxrNmlm15mq9CJC+lET3Rsrajlo63W?= =?us-ascii?Q?cy5v1vogQvS61eM+L4MgkspEmS9mD+LoOPUrG9k7NSxYy6Y/uOBVMpgoBRet?= =?us-ascii?Q?rYdfUq/HO1Loxsiz5Al4M1wPqA14ZD0RAkJLvdHW4llsLArCOs5HyeUTQ3gP?= =?us-ascii?Q?rba9M7IV4dg89i6cPq9fxlxZk0xM/bwKBEeb0pDwMY6Uc9/P0SlCTrbUhkSA?= =?us-ascii?Q?LrJ8ybNhMy+j7kCiGGJCkfWkKweDGMEDSyJqCsKleHRJODC93cPvDUZIQRgj?= =?us-ascii?Q?LAXWTLonyazA4Gck8eQUO+WTjtSbIbBf5P681uaLnVBZKp0UwYD7ygtSYTJI?= =?us-ascii?Q?DJwSeLkwHHB0jMEpZQ35JZ9HMfr8p+F1ZChyz7Gohn8Rlx4H6LJ2Ta4zG9A5?= =?us-ascii?Q?+pWM/lyb4FvsXvTONisrjWbHLitAux4f1GsdPdaHmMEuAnFBiY/vooGtCSUm?= =?us-ascii?Q?Sr950a3FMLY5D4j7T2aadcSBlWE1jPK78yF9OShrUvfPvt5Bx26MzI/p+Tqa?= =?us-ascii?Q?k6/708uS4JVUQ5JoW+DtSE2Vo3RzQFc6dIwmBae4Fsd9WVGeN20u5GcgyYck?= =?us-ascii?Q?Xy6sz2W0AoERH8uDNMC8JDD0/vnL72gyTT9FOPIR6SyaBe2YwT7Ffgxn25JL?= =?us-ascii?Q?m+fzsDfC6rCia/L0U/UDXyXRyWNMftR3no2g+OWhLr3W8TT5bM4EbxLCkQqe?= =?us-ascii?Q?GogVuQF+HkDfMXz59EA6MhOKY0IU4Hh3m80BSDeeecK24DHZdqh9QRquw5NP?= =?us-ascii?Q?XbRxDOyJyErpNFU64A1adtJs7ZegnKmrczN3Hzz7pFRShRGUm4OGUSR1KsNc?= =?us-ascii?Q?k8vURKJQfqujGvqypA6hx9wbwxiUU9WI53fLWgFS8p5K2OcfD1dOD7LeIUit?= =?us-ascii?Q?A6yIOrLNXqRtxfTT0uHCUl8P5tHXjiyMT/wMIzhV66mfaNIK3JQdFDZcz+/3?= =?us-ascii?Q?Sf3+pbteQEVtj0x+sDQ17j0cLpjB2e7WIi1odIDOmYgdPN8K1LeSRZXGxFRX?= =?us-ascii?Q?LfPFQhyFbHpelY45rzQ26fX7X0X92gQeeuVmnAU7CMxMiE9Yv/5ZZxa44MuM?= =?us-ascii?Q?buT5PFUcZR+ccQXkA+gK5amuWMh76txVWL1crbmIZ3IlDMB/lGpSBLJ1dBGt?= =?us-ascii?Q?6EneVFBIvZHiYzs4iV7cqtKqjOf8h1cNFsHCdk131Z+pCsaOJMnUfdeKRaHz?= =?us-ascii?Q?yQT0gPtuSBpTEJ0MRWe9Gw=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;6:G+RZpbZW8SWojhd455J/6lCKp6zt4U9FKo7mHtGFJJFxrbEBli2pAduDdMi6LLXN1iYRSxgIu6C7Z6MG49OoSlgzCgYccnGOGx3wkRItYfAP5PlcI1aadxH+acBVlJZPVDmZfw/6XPHMaKei2t5wkiw3ATVbX1nF+TCjDHrI0RPIYvn62BNTi/ejbsU/gbGieN6T541ixX+3rfEEoa2npEPzJMWZurDTOItsHAf/YFiGi9R4cnXcrxcMdAYm7jXaA5JweW6RKox+6tQ9BA2MjeVVnqD60UvRiWBkQy/iZH1kIFQ4yPeaDR94D86FsbSvUGP0gHeBrzwM619cj64QiM401IWh8zuG71rElGONIqEltEumWO77vf0Kw9hpY+ws5jRnZZ5bYlxltA8GO9cuNNRMcW0O1zR9q4EJzZTRYVI9pjeUjjXBmXJZJCsN0YBz;5:dmvlA7uSHcyUMhOHxN95j1mUusDzfRwEg2gNv9f6/CB00ZPcIfhtY3OdggKyl4JzL2CqWdS7+RXzOMMw5vHIV8DkhPLjlf0ZpJdTK50T7IMVycgdII+fC5CR7GKT9vyZ/ji6PfwhGqeZXc6ijTIgDBjleM/231K8csL9mAMyCP8CcF+R1zYCPk6TVnaqUNzr;24:QrIw+8JYn5C+WX5lCH1hQo+fnrOOsbVPszgFxIB05LwWJNK9tbCrG54iypO3oh0JaNdLwbYYUXaP7qCqKDoFY3PBPG0eR+iMDHu4X8K07NU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;7:KyjD0UUQb+D8oXGIzK1Dv62wHdVEmeqkA1P5y9HSr0FMw4o03+8E3iRbFURJO5jUxy/nBiEw8DMMDLLDlivDXUzlvFVIEljnT3g4JJCKiH97DgdPqlJCVsfHb21pMUKeYKbuHlNVGPAYbiIBaBbi711A2yaA2m9wj8O/n+dfuxDaxvttjOzJ8sq4euQbCL5pBHvCCYYs014kF1geeRtNZXea631v++WBJdmrAW7gJ9DgEtjtNWzQJQ/QIhtlDPooPOeZ3l/qgdVdPiFUA/flBOkl4+yXarlbIf9kP6FWHdRcAvzm50PtaED/7BXZ8C7nZbHtrVnEl+V+2CCbrrjVaaMAvOJKA4r7afft4GR5X8Rlvn3FENUGczLJQmNgYixMNEfcwSVxHqx59lLZeBXaWyLZHs4qAbc++lF9b/tnQm/JVpZVXQpbjxP6/cF4f56FUo+Ijbht9FUmS/RJU0LfOA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2017 05:54:41.7813 (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: CY4PR03MB2469 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At some systems, the pinctrl setting will be lost or needs to set as "sleep" state to save power consumption. So, we need to configure pinctrl as "sleep" state when system enters suspend, and as "default" state after system resumes. In this way, the pinctrl value can be recovered as "default" state after resuming. Signed-off-by: Peter Chen --- Changes for v2: - Fixed build error reported by Kbuild robot, the header file was not added. drivers/regulator/fixed.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c index a43b0e8..4a9e6da 100644 --- a/drivers/regulator/fixed.c +++ b/drivers/regulator/fixed.c @@ -33,6 +33,7 @@ #include #include #include +#include struct fixed_voltage_data { struct regulator_desc desc; @@ -245,11 +246,32 @@ static const struct of_device_id fixed_of_match[] = { MODULE_DEVICE_TABLE(of, fixed_of_match); #endif +#ifdef CONFIG_PM_SLEEP +static int reg_fixed_voltage_suspend(struct device *dev) +{ + pinctrl_pm_select_sleep_state(dev); + + return 0; +} +static int reg_fixed_voltage_resume(struct device *dev) +{ + pinctrl_pm_select_default_state(dev); + + return 0; +} +#endif + +static const struct dev_pm_ops reg_fixed_voltage_pm_ops = { + SET_LATE_SYSTEM_SLEEP_PM_OPS(reg_fixed_voltage_suspend, + reg_fixed_voltage_resume) +}; + static struct platform_driver regulator_fixed_voltage_driver = { .probe = reg_fixed_voltage_probe, .driver = { .name = "reg-fixed-voltage", .of_match_table = of_match_ptr(fixed_of_match), + .pm = ®_fixed_voltage_pm_ops, }, }; -- 2.7.4