From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934484AbdACJCT (ORCPT ); Tue, 3 Jan 2017 04:02:19 -0500 Received: from mail-by2nam01on0062.outbound.protection.outlook.com ([104.47.34.62]:54250 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932970AbdACJCE (ORCPT ); Tue, 3 Jan 2017 04:02:04 -0500 Authentication-Results: spf=fail (sender IP is 192.88.158.2) 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 1/1] regulator: fixed: add suspend pm routines for pinctrl Date: Tue, 3 Jan 2017 17:02:47 +0800 Message-ID: <1483434167-10778-1-git-send-email-peter.chen@nxp.com> X-Mailer: git-send-email 2.7.4 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131279077224272035;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.158.2;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)(5003940100001)(86362001)(105606002)(106466001)(575784001)(6666003)(50466002)(92566002)(5660300001)(97736004)(5001770100001)(48376002)(33646002)(39060400001)(77096006)(189998001)(8656002)(38730400001)(626004)(85426001)(54906002)(8676002)(81156014)(356003)(36756003)(69596002)(305945005)(50986999)(4326007)(47776003)(8936002)(2906002)(104016004)(81166006)(15650500001)(50226002)(68736007)(129583001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR03MB2469;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD026;1:PjMK3nsobCyCdQ4gDigVnxH4HJtAAnfV8S9IeXCBWgqMUViOqwkWeuDSPcl6UcFoOnTU+Q54ouUC8vDa5tuD6tv+EpomuF5wcE43kjRy0tmsTUf+WT/z8soktD8GvDoLI4GWHxctl8fOvD8er+hNVlhs9xO4in7k/zDDoaHY7V5aZZDi6mzJXLrGAMX7tFIZTxDPhZPU4VVAgo/9uFVBCQ3uvmzJ9zBOQtiqSuyuuN7f1b3J4wnpb2CPcamm4NRXvDBtn/KT5qlpSXOz/P+JfZ/sUN8Rgxw2JvQhldT6WydBEXdZxqfBAbB0MWvzJKc8uoZRtHFA6Kl2eKO2C2hiEkxWK9hBDSQ42q2qdmeb6Ahndt+McoVMw9rDhnHxCNivUKWI4+WkH16VugxzteGD6XZQxHvFcY0PLtooh41TqRCv85AUkzDVGkWWhIc/8kn3CK5Kqu7HyzvSfQOdetT4OriULbb53IOfaT9qpPYR5st7RBh/h5urBs/ZQBej9t7eQc//TPUYVuS+P+7em9QADh2HZocj11omloV+M0gTvHWx6IJJ9EulCztJdqMUUy0LOGmRImlDw+nGiM7H9EoPT4zj727OhJRXKvd3x5qYG4nyWZSf9yGvl3RuO2Mv1UOGpDKtmvpCu5Dxvip8Vuh+q3ob9COWMnpBUh/SE9WaI4SyevURIyDoZmjqrndGl1D++fsgk0D336uPI8VPyL85lq06yIqZH+gWyvychz1m/kw= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: e75477da-21f4-40cf-6f42-08d433b72ed9 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY4PR03MB2469; X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;3:1pkBIxuTqFptEQM5MpFlss4SeOJIq7i4Pv+CYHoIyOxpUnA2aL2MuH24NEIU1Z4UdrCrPUm59jn7dI43dymhMVXW5X0Hloh/ET5yO2Tb3SI0AGr1mmoRYrryyVureDA6UOb6U+pQbeglK1oPHDF+R5DQ51JTb1WPJLejv4i3Rf26Dx3xRqB0+FZ0IWN6ggguPDsRsuutYZtqyAyfy32ItEKU+qxa1VOYDPAJdvt+N/qCWlPHOfbKj9A/i7VsRk35pWsa3lkBlZ7OPY4CKUdnDBguRHQYyzU43xew6U4bklye+qaUOQX9oUtN0X3UtDo+90tCnPgh8HyKa/89vtjSgA65KzksHGaRm9i0XIbhJOQ= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;25:LuhZiFBgVydvQoniTXCy1fxOdmxmCdbhuP6nmqyHfxNJbODk45kXNsryAepdSnYcV/Gb6nivHd1whUOEUDfSRrdWvp74uQKdmHEE7GyrrK2+Y5koOeyvwjDph/vKeazH81Ivz7SoH3zqVRLzZrAqicIigxnuxzyB4M7FqZZGKPr1yhllkRd6anwPvPvFq4G07EU247M8CW2jfoeDmqMjdmv2e+b9ifpAcsMuzqM9vxpiNLILYxXx4oWEIllj6ix+JVb43/jIur2fF7hdI1rA14Q2AIhuPOq1i+A7f+mUYQfCSTv0FlRRXB5kzXv6oBqOuAUwrfAdBWuReWCrkKuw5lFEJjvY5/K/0dlzKSbnUdvAgQ7Bs8sR8aBphGa0LhjCMB/xU21CWBimhxg9wCvKb17/A+nz2WSx4nKJKas39sfqIa/3p5jlYZMfeIlwcH8PRNtuZzIMvg1ud71YO9P1QwU0qGCv/FNl8dqueCYIYHw0EECH+o7juK7EF+5w2GSA3dT+uEOOF0Kk0QstxwdxUa5vNWW+hZkrkTjYPo5mvb9JHk0uRLTUcdIyKgSIu2FkVKYyfHt8oZMoHbn50AMa3wHBnHy50P0GCGgPJuBCplU8sYSx9bXPl0K5KxmdHh7A+9/UepHNqpgd2FXeIZhCv6z3Dovao9QbyQx03LjKuTmwirjzgN2Hr55R6oJ/Dme869Oz53arxGZoKgVISqaFz7Hg4+zoNSOXPwaIWgvzrsAA/cxHbk5U9M1CAWynI2JaLVvvrS+SjQpCU1qHV2badPFbvSteT1hlnSZdKc4nhFk= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;31:WYbsSQZLI/QSAGi1neCLmL5OHVLjidJbJmmiM6hIu3eW2i/PqprzRIxG8ksj6pOLmYj5oAQrPqEZnZkGmEQOndoTLwD5GbO8todlYMNVZyY/8urMV8s4DmSo2+hcawnx+cBL7IhoO/2J3k8JJHon4jEtklJnbx0tIgTo+pKZFFgS0BCgwyID//VSocTeAicfwJSoX+iwpiHR5ElGipFA61L4EDEexJzln79XpgWplkCFFchXDbrpeui8Lc8NFVdqowCYgCHFK9NawYPccwifCUEVveQFJeS/7sXbOTckVTU= 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)(13023025)(13024025)(13015025)(13017025)(13018025)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6096035)(20161123563025)(20161123561025)(20161123559025)(20161123556025)(20161123565025);SRVR:CY4PR03MB2469;BCL:0;PCL:0;RULEID:(400006);SRVR:CY4PR03MB2469; X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;4:tcQrkCchbEuhddfVkDbfgy+WnXQqP61xdaDNLJ4lRPDHweKdU6AwXY/l73cSZr0HfWb4mWbYrDCeclTRw2o68UK3sBKGJCRyB2oJRIUFn+Zc4DyvZgt3ZHurEDNbfwQz45MnxSUbZEgFzvQGf7fgu+pkPFqtB1zSAhwf4fc57BGzmKd5yWAcf1Ut3OF3egd64qvADB5fO+dgP4qfZDCr8xOqawtxst1CXE7CmEaWFCIGaKOu8RtaPdEOE8KwRlmA1LvAbKopeVqajVrSj6NSguZVDIgEl1mBYxb49QhLlafNv8XqZqYLAs/+LunlGJE9XyF3B6DqxvKrOrHU90joPspRMT219979uPYq73v7oAlTFjUBO875tvDzpP/GGZvlOuyxrlTgcSkyIMmpbx1+AQXmqu9Sgq+klSPO8ZxjyG5J4LkMtQgNC1hamrDQnZDRU/2yM7KfKI+RhYWUFxPsYMWzsKhGSI5myQoTd2NsAM6eVjC6JEc5gKuWLWPEQ/qBvOgkKQ50LSBVHiMWB/+vtUeLw7muptAGGOAYdH9gSstH4a92Sz2dGjmRwoXSvaWtZpZJc01WavZSk4Fhp39vEsJ7I1FtxICH5EvfmtuaIgUfUoR8Wc8DZnZm8TyGzwkT8jKlx/MnHmqxFB+XPGoZgl6on+55M1aDr/vRbfGpqVjkJOWakSA+JE+d1/bZ/x1xbBw6/njM51CYzcnK/rsanFcKyar9JQazWY5GtBMPFKalxMhblGSGr7YT4BR55C0b X-Forefront-PRVS: 01762B0D64 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR03MB2469;23:XQOsyuWVDCh3C+aAMjKZyzjvezIJvX6kBrjx7m/0u?= =?us-ascii?Q?KB9Eu2egzdKCd5z01PwgwYxXjSp746Cis8neJK1HrdPAPPLM9O7T+20RwhiU?= =?us-ascii?Q?nXjUyYu0U7vgTRKC+9aUAw6kjN7fuWwOBOmZx7gKBywIBB08QmDSF2DH9Rcf?= =?us-ascii?Q?CQ/diOqG83iiQWQUjNQs1wjbRpucqaOMeT6jZRzlixp/uKCUr+fhU0IcbJPY?= =?us-ascii?Q?8DVT7aHP4s8ikFGq3h2ImqVXaNSkAnOxPN3PMCL1AUHkOm6B19c0bLbJXG7t?= =?us-ascii?Q?ZguvyAHshfzfullY27/Sjc8DZNR1LqCEgX0nae5ZtCgOw3NHmkbIJks9xbQu?= =?us-ascii?Q?yJcy6g4djp2SfbGKxZTeb/X8NVp+H0WD7WJI6jRPBfkQpBPVdmpkSDYF2HEw?= =?us-ascii?Q?0dvohhSjQpS82XJmWwmpkQANHd3zT34vuj9m0POVlPPTYJCWbvyYnv+iGgHx?= =?us-ascii?Q?ofY8NsY5gnNCq55M67etzaYouYtNlQEAPIRLyMzPpWTnjIYCOtQAGstaXPy/?= =?us-ascii?Q?YR3VDUI7BEoZ73NtoI6jBmgc+evbx0ucDR5OXSDoHBpmvxItknf6YLyrkip1?= =?us-ascii?Q?Omd0TE1cQIf1ZYEERozxp5Vf9NBdXJoodDR5sryeyB72IB6neSDQvv/A0Is5?= =?us-ascii?Q?xpB3EFbQllEeyXD+jUDWLXtZ0q66Pcq4rEBCENPcZfZNaOoCC1nbTkn13+hV?= =?us-ascii?Q?a1ZAnFrmUSX4j09Du7/JrjKxog5tgj2HaRxVgzF0lKwsftJMccV+HzGu9TfZ?= =?us-ascii?Q?UJw1d2KnS/RehH8EoHBBpSm7xvvHsTic4z+dFRgTD9E0DI+D5NQiaIHcZUIX?= =?us-ascii?Q?hc/C6wwhQBV2ZzYtaxQhCtEoz1Gmzzn1KMaj+clsvC1oKmWFh78uGAI0m3w3?= =?us-ascii?Q?xixuGl5tt/ldun+YHjH1oZAEsgnukcYxZQxs1GTMSJyHrqj6a2l/1Z5ZcSBC?= =?us-ascii?Q?ADj4VGl+ny73R/r09V+q8aDT9a4MV2Awl950c+vQ95A8NgSTVvjYOW8Wemd8?= =?us-ascii?Q?ryXauoljxve5JMQHpZOPKdIaYU/myX9o8MP0lYYpvOcYNX65AtdPfD+/Mswd?= =?us-ascii?Q?P3dwwDLLb7bxsUcsNDMdVnyYdeFMPOBJWfySHG662MfGRAjlS//kpmQiHuoK?= =?us-ascii?Q?feyakGrALXS4x8d4wYMqxb5DavF3URs1OTlgs6ZKWHk8gkFr/4FlkG/JjzZf?= =?us-ascii?Q?9XSt92CaGPWMHfPPNUIVaWfJfVJr8BQRGwjn6O6RICmAPKSY91QSYfolxPgY?= =?us-ascii?Q?X4kwJyFfqtYCj9vBNAHDuGoSrJ9tOUin28faLoudNQdoWNzkqzvpyq8GgOmv?= =?us-ascii?Q?JuAH0ztvVFs5wfD40veQKi0SjPgOyhtFBviy73sH7/S?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;6:YcLm0/3XO522Y1sp3y4PUBmS6c63d4HkD4vVchsg1cgnsypirLmJlVco8OLRkUoLrG/4eim8h+V6DG3rM1fPe+/86E1r3hPE1OL5nfvMpTCiJb3iu9ifTXfQFocMnQ5TgU1IsS16Tv6Y16/P6moqaZ962BKlk8lJ/Mdk08QpkoQWeeK/VG2CMXYaqQvhCnMF1sbXefhA8F/h3Ee9QZZk8bj8tOWH2brsq8TuJPtdyoyzrEB81t0WOXSHgONx1vkP+AtOV2/T2RI1pZ/2b0Vhzbr8oVMeeGscZ1qt82U/OyolYnU4i8Z/NM/HRgxUsHG5ttnZG4joycOVjdb8bYeY9cSJJ0omrIF8h91URnNI1weE4NE+6I9YK5D2FMdGlbmnG4xcDCv02upJPZtsRs3YKG05wiQcfg3xlr6wOcnP10XioaiuBvLJH8svKWda1obj;5:NrZq6IxG1MeCR42sQJkYrOMUDdzhs/5VswCo2V45zK5rhiWFDX2I6i0IIYZOXFGRH52cJrWy4KfGQW+f57hURY3ISXqjXIauOj4EcCoxLRoKNmnnHQjm2pgkeIupspMOsyHw5+ZItYybfqeDFjQI+OdVYZZYhlyrCx1nCTAY4MtBRrt+19vW0f0DrdjYa2TB;24:hSIRxt9LUd6Ls1KY/sMhM+BIsfknc8/NwO2jI61Tiwt7Ckiq5vqMfG+JoTt/QS9lF5DF3szcLlmb+JAQr0kb/vofyxQKd8p+UCJ1+tmZASY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2469;7:kvetjUkq0YjOn4RrD09PG7BLF4srmINttZ+Py/SRWnmGxA/iaA3ivKp5K2uLElewhCa06DW3J0IGp7K31udNqG5e6kzKZ647QLksp7ZOIazmhO3dguZiFzR0qTUzNb/+smPOjrHhAHuROLJ5u4VcoHr4JChyEn5dFr5bMfFOq/TYqh3rq2uPlio0lJ42AVvP8smRgvqkHhPaszN3+CZluuhcOGclNXkzMKacomIw4GPOYIEQhBaXKNt0x3uwWDu/7KPVz3YM7fBYnOoWF2Bh0APqPKtE4ks+v+0J4Pdy2aww0hHRY88kzwhj3jarH7HQffT58JiNa4CWHKmqieiP0BEJj39mT5+DIlRfu1Dc37ON5nZnkzmivIWMvO6f7CFmGxtLEkGJC5Ea/x7LLnGTWj4OeG0d9/jrXT1lbw8NA+/1tZlZKv0XALsmRauhcKaEIf6+knFQewZHlLEI776bTw== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2017 09:02:02.1620 (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.158.2];Helo=[az84smr01.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 --- drivers/regulator/fixed.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c index a43b0e8..8f41015 100644 --- a/drivers/regulator/fixed.c +++ b/drivers/regulator/fixed.c @@ -245,11 +245,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