[{"id":1759534,"web_url":"http://patchwork.ozlabs.org/comment/1759534/","msgid":"<2533904.WxKdIHdxQJ@aspire.rjw.lan>","list_archive_url":null,"date":"2017-08-29T16:38:11","subject":"Re: [PATCH 3/3] PM: i2c-designware-platdrv: System sleep handling\n\trework","submitter":{"id":26536,"url":"http://patchwork.ozlabs.org/api/people/26536/","name":"Rafael J. Wysocki","email":"rjw@rjwysocki.net"},"content":"On Tuesday, August 29, 2017 2:59:49 AM CEST Rafael J. Wysocki wrote:\n> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\n> \n> Rework the power management part of the i2c-designware-platdrv driver\n> so that its ->suspend and ->resume callbacks do not point to the\n> callback routines used by it for runtime PM.  Instead, point its late\n> suspend and early resume callbacks to pm_runtime_force_suspend() and\n> pm_runtime_force_resume(), respectively, and make it set the\n> SAFE_SUSPEND driver flag (introduced earlier) to instruct the generic\n> ACPI PM domain code that the driver can cope with runtime suspended\n> devices in its system sleep callbacks.\n> \n> Signed-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(-)\n> \n> 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\nThis isn't going to work, because pm_runtime_force_suspend() will invoke\nthe bus type callback and not the driver's one.\n\nSo scratch this, please.\n\nThanks,\nRafael","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 3xhZKw491Tz9t33\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 30 Aug 2017 02:47:00 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751808AbdH2Qq4 (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tTue, 29 Aug 2017 12:46:56 -0400","from cloudserver094114.home.net.pl ([79.96.170.134]:45024 \"EHLO\n\tcloudserver094114.home.net.pl\" rhost-flags-OK-OK-OK-OK)\n\tby vger.kernel.org with ESMTP id S1751180AbdH2Qqx (ORCPT\n\t<rfc822; linux-i2c@vger.kernel.org>); Tue, 29 Aug 2017 12:46:53 -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 a55a66fcdf117d37; Tue, 29 Aug 2017 18:46:50 +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":"Re: [PATCH 3/3] PM: i2c-designware-platdrv: System sleep handling\n\trework","Date":"Tue, 29 Aug 2017 18:38:11 +0200","Message-ID":"<2533904.WxKdIHdxQJ@aspire.rjw.lan>","In-Reply-To":"<6543072.R9SdZCE16v@aspire.rjw.lan>","References":"<1503499329-28834-1-git-send-email-ulf.hansson@linaro.org>\n\t<4245176.X6JjkhnUAM@aspire.rjw.lan>\n\t<6543072.R9SdZCE16v@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"}},{"id":1759538,"web_url":"http://patchwork.ozlabs.org/comment/1759538/","msgid":"<3516258.tZRHLsck48@aspire.rjw.lan>","list_archive_url":null,"date":"2017-08-29T16:40:27","subject":"Re: [PATCH 3/3] PM: i2c-designware-platdrv: System sleep handling\n\trework","submitter":{"id":26536,"url":"http://patchwork.ozlabs.org/api/people/26536/","name":"Rafael J. Wysocki","email":"rjw@rjwysocki.net"},"content":"On Tuesday, August 29, 2017 6:38:11 PM CEST Rafael J. Wysocki wrote:\n> On Tuesday, August 29, 2017 2:59:49 AM CEST Rafael J. Wysocki wrote:\n> > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\n> > \n> > Rework the power management part of the i2c-designware-platdrv driver\n> > so that its ->suspend and ->resume callbacks do not point to the\n> > callback routines used by it for runtime PM.  Instead, point its late\n> > suspend and early resume callbacks to pm_runtime_force_suspend() and\n> > pm_runtime_force_resume(), respectively, and make it set the\n> > SAFE_SUSPEND driver flag (introduced earlier) to instruct the generic\n> > ACPI PM domain code that the driver can cope with runtime suspended\n> > devices in its system sleep callbacks.\n> > \n> > Signed-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(-)\n> > \n> > 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> This isn't going to work, because pm_runtime_force_suspend() will invoke\n> the bus type callback and not the driver's one.\n> \n> So scratch this, please.\n\nBTW, I don't think it is OK to mess up with bus type _runtime_suspend and\n_runtime_resume and try to make them magically handle the system suspend\ncase as well.  There has to be a different way ...\n\nThanks,\nRafael","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 3xhZNR2Tsbz9t38\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 30 Aug 2017 02:49:11 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751848AbdH2QtJ (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tTue, 29 Aug 2017 12:49:09 -0400","from cloudserver094114.home.net.pl ([79.96.170.134]:61298 \"EHLO\n\tcloudserver094114.home.net.pl\" rhost-flags-OK-OK-OK-OK)\n\tby vger.kernel.org with ESMTP id S1751684AbdH2QtI (ORCPT\n\t<rfc822; linux-i2c@vger.kernel.org>); Tue, 29 Aug 2017 12:49:08 -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 53c08e33941d2521; Tue, 29 Aug 2017 18:49:06 +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":"Re: [PATCH 3/3] PM: i2c-designware-platdrv: System sleep handling\n\trework","Date":"Tue, 29 Aug 2017 18:40:27 +0200","Message-ID":"<3516258.tZRHLsck48@aspire.rjw.lan>","In-Reply-To":"<2533904.WxKdIHdxQJ@aspire.rjw.lan>","References":"<1503499329-28834-1-git-send-email-ulf.hansson@linaro.org>\n\t<6543072.R9SdZCE16v@aspire.rjw.lan>\n\t<2533904.WxKdIHdxQJ@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"}}]