{"id":806883,"url":"http://patchwork.ozlabs.org/api/1.0/patches/806883/?format=json","project":{"id":35,"url":"http://patchwork.ozlabs.org/api/1.0/projects/35/?format=json","name":"Linux I2C development","link_name":"linux-i2c","list_id":"linux-i2c.vger.kernel.org","list_email":"linux-i2c@vger.kernel.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<6543072.R9SdZCE16v@aspire.rjw.lan>","date":"2017-08-29T00:59:49","name":"[3/3] PM: i2c-designware-platdrv: System sleep handling rework","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"1c879f1ffaf8af43147b58d1b60224ff84414f67","submitter":{"id":26536,"url":"http://patchwork.ozlabs.org/api/1.0/people/26536/?format=json","name":"Rafael J. Wysocki","email":"rjw@rjwysocki.net"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-i2c/patch/6543072.R9SdZCE16v@aspire.rjw.lan/mbox/","series":[{"id":283,"url":"http://patchwork.ozlabs.org/api/1.0/series/283/?format=json","date":"2017-08-29T00:59:49","name":"PM / ACPI / i2c: Runtime PM aware system sleep handling","version":1,"mbox":"http://patchwork.ozlabs.org/series/283/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/806883/checks/","tags":{},"headers":{"Return-Path":"<linux-i2c-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-i2c-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xh9Xs3x1Mz9sP5\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Aug 2017 11:10:05 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751271AbdH2BKD (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tMon, 28 Aug 2017 21:10:03 -0400","from cloudserver094114.home.net.pl ([79.96.170.134]:60782 \"EHLO\n\tcloudserver094114.home.net.pl\" rhost-flags-OK-OK-OK-OK)\n\tby vger.kernel.org with ESMTP id S1751211AbdH2BKC (ORCPT\n\t<rfc822; linux-i2c@vger.kernel.org>); Mon, 28 Aug 2017 21:10:02 -0400","from 79.184.253.199.ipv4.supernova.orange.pl (79.184.253.199)\n\t(HELO aspire.rjw.lan)\n\tby serwer1319399.home.pl (79.96.170.134) with SMTP (IdeaSmtpServer\n\t0.82) id 8c59de3d6cbe6d1b; Tue, 29 Aug 2017 03:10:00 +0200"],"From":"\"Rafael J. Wysocki\" <rjw@rjwysocki.net>","To":"Ulf Hansson <ulf.hansson@linaro.org>","Cc":"Wolfram Sang <wsa@the-dreams.de>, Len Brown <lenb@kernel.org>,\n\tlinux-acpi@vger.kernel.org, linux-pm@vger.kernel.org,\n\tKevin Hilman <khilman@kernel.org>,\n\tJarkko Nikula <jarkko.nikula@linux.intel.com>,\n\tAndy Shevchenko <andriy.shevchenko@linux.intel.com>,\n\tMika Westerberg <mika.westerberg@linux.intel.com>,\n\tJisheng Zhang <jszhang@marvell.com>,\n\tJohn Stultz <john.stultz@linaro.org>, Guodong Xu <guodong.xu@linaro.org>,\n\tSumit Semwal <sumit.semwal@linaro.org>,\n\tHaojian Zhuang <haojian.zhuang@linaro.org>,\n\tlinux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org,\n\tGreg Kroah-Hartman <gregkh@linuxfoundation.org>","Subject":"[PATCH 3/3] PM: i2c-designware-platdrv: System sleep handling rework","Date":"Tue, 29 Aug 2017 02:59:49 +0200","Message-ID":"<6543072.R9SdZCE16v@aspire.rjw.lan>","In-Reply-To":"<4245176.X6JjkhnUAM@aspire.rjw.lan>","References":"<1503499329-28834-1-git-send-email-ulf.hansson@linaro.org>\n\t<4245176.X6JjkhnUAM@aspire.rjw.lan>","MIME-Version":"1.0","Content-Transfer-Encoding":"7Bit","Content-Type":"text/plain; charset=\"us-ascii\"","Sender":"linux-i2c-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<linux-i2c.vger.kernel.org>","X-Mailing-List":"linux-i2c@vger.kernel.org"},"content":"From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\n\nRework the power management part of the i2c-designware-platdrv driver\nso that its ->suspend and ->resume callbacks do not point to the\ncallback routines used by it for runtime PM.  Instead, point its late\nsuspend and early resume callbacks to pm_runtime_force_suspend() and\npm_runtime_force_resume(), respectively, and make it set the\nSAFE_SUSPEND driver flag (introduced earlier) to instruct the generic\nACPI PM domain code that the driver can cope with runtime suspended\ndevices in its system sleep callbacks.\n\nSigned-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\n---\n drivers/i2c/busses/i2c-designware-platdrv.c |    4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)","diff":"Index: linux-pm/drivers/i2c/busses/i2c-designware-platdrv.c\n===================================================================\n--- linux-pm.orig/drivers/i2c/busses/i2c-designware-platdrv.c\n+++ linux-pm/drivers/i2c/busses/i2c-designware-platdrv.c\n@@ -358,6 +358,7 @@ static int dw_i2c_plat_probe(struct plat\n \tif (dev->pm_disabled) {\n \t\tpm_runtime_forbid(&pdev->dev);\n \t} else {\n+\t\tdev->power.driver_flags = DPM_FLAG_SAFE_SUSPEND;\n \t\tpm_runtime_set_autosuspend_delay(&pdev->dev, 1000);\n \t\tpm_runtime_use_autosuspend(&pdev->dev);\n \t\tpm_runtime_set_active(&pdev->dev);\n@@ -455,7 +456,8 @@ static int dw_i2c_plat_resume(struct dev\n static const struct dev_pm_ops dw_i2c_dev_pm_ops = {\n \t.prepare = dw_i2c_plat_prepare,\n \t.complete = dw_i2c_plat_complete,\n-\tSET_SYSTEM_SLEEP_PM_OPS(dw_i2c_plat_suspend, dw_i2c_plat_resume)\n+\tSET_LATE_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,\n+\t\t\t\t     pm_runtime_force_resume)\n \tSET_RUNTIME_PM_OPS(dw_i2c_plat_suspend, dw_i2c_plat_resume, NULL)\n };\n \n","prefixes":["3/3"]}