From patchwork Tue Aug 29 14:56:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 111218 Delivered-To: patches@linaro.org Received: by 10.140.95.112 with SMTP id h103csp1457351qge; Tue, 29 Aug 2017 07:57:00 -0700 (PDT) X-Received: by 10.25.42.75 with SMTP id f72mr148891lfl.181.1504018620234; Tue, 29 Aug 2017 07:57:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504018620; cv=none; d=google.com; s=arc-20160816; b=Dxl/65iPbe9m0MW+hRLw9lFEHfg8jZe+HCklnPzg39bDQxe29Kim9TndLlOCcDeUG7 DQbYAVEMG/n9gVKwed4GIWeDubIsPCZDGVIW7fpjYtos8dL4yWh+DIg/NCxzboAuWb/9 pbYQE1sV8Jq2vZLP7VL5zHeYMpq0WEGGEBr+IJpkVLTncK79SIbNKiNokXnOf0EJ6tHo 8C6ALsoMlTViREzccbQb0hCMcpuNWi/by9XyonvZJyNEdxet+FmUtKS6PA2DPyS/ftCb gNeQwYzsaFIpP7VcpAODZ3j3qd6kAR4Thpu6gNMQsQ1oKQSYp3/RJGxRCPMHlqDGouur AZNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=X8SYAw+I0xQAOB6bxbbt67cXTs9Hlryvu3HmsEkfoy0=; b=xk3+lJcc8Et5w4J2Rzzs2eFepfSOxvf7y8u4cCTJ/6OxykkDTEPGlWvElb4o/oYA4w xrgrOkaNVCiAiNhVPJB7NBc+0qPdtG29wlH0mWYHBUN7qYvrONEEG0UqVQlUqpdjoyym +ZiFJU+hjQTmZGKSviUrcLmqntWq2N0uRGLmtkyLHWZOWIf5D+YPAVEy/I5QRC213xhK fXtXO0NSDm9P8eGA2Ba/Je7AXJ1zPDot6k2RKaK2PdX64cdKTOSyJ/CQZnBKKGwQ7+Hy R2zFOLKyzINwndzMYrwzwTAQwX3LFB3YmkMI6hbTK2HDkxIK2ao+lN4oH66UzERxthgH DArg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SRjkI5vg; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 2a00:1450:4010:c07::22e as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-lf0-x22e.google.com (mail-lf0-x22e.google.com. [2a00:1450:4010:c07::22e]) by mx.google.com with ESMTPS id b26si1276480lff.196.2017.08.29.07.57.00 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 29 Aug 2017 07:57:00 -0700 (PDT) Received-SPF: pass (google.com: domain of ulf.hansson@linaro.org designates 2a00:1450:4010:c07::22e as permitted sender) client-ip=2a00:1450:4010:c07::22e; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SRjkI5vg; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 2a00:1450:4010:c07::22e as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: by mail-lf0-x22e.google.com with SMTP id d17so14394866lfe.1 for ; Tue, 29 Aug 2017 07:57:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=X8SYAw+I0xQAOB6bxbbt67cXTs9Hlryvu3HmsEkfoy0=; b=SRjkI5vgff3mykLJ48/eT+6DQUmO9W47okZ0+YHY0hhphpZV4oRGyD0VwKm3F3xhHt Q5f00QopgQbMpzhMzTiwBoCMDKwoVmEOvUwXXRApY6HodjHT8lnfTNemFpBJx1XXGFE5 ZmoVo6BYkLOZ1cKrOYHNA7KGZGml+B0rpLLcE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=X8SYAw+I0xQAOB6bxbbt67cXTs9Hlryvu3HmsEkfoy0=; b=REPNkYxRq/7Cmmcys5zxSQF4u8CU92NHOZQZd82dcek+itSsPqlReFalmIlqP/yFPz 0zCXhJ2viHlRot4OV/0QqDepfRn7bJ3ft1nCi17qG6t40SoHYQYzzN9zsbS4CjySDDP4 EVjqg1WahLaUCuQeLMB02AZdL/IMzeNks26dBbf8i/dHcUNe9R/FUhc8H/aeZjGWbz8M D8NBDOXBF+ZLdK0ohavJiyi4zGAXovSL+KJUz0ydJEv1rc3yH0z8lr3Oa4CWNHWDnTQe E5HOlzmAFUmxaGoT5qB0u2GH7YpvF2k3CNAt8C6pi0Yf6L9FNZAtnuM9aYTz08APLEyI nkWQ== X-Gm-Message-State: AHYfb5geVFIxcFn0qA5QzG8ZPxzxH7NTAtLIlGtmGAKhAEdO6/mjtX7s juiS1QEntsnDwXb7G+4= X-Received: by 10.25.147.13 with SMTP id v13mr207854lfd.165.1504018619757; Tue, 29 Aug 2017 07:56:59 -0700 (PDT) Return-Path: Received: from localhost.localdomain (h-158-174-22-67.NA.cust.bahnhof.se. [158.174.22.67]) by smtp.gmail.com with ESMTPSA id y23sm652454ljd.19.2017.08.29.07.56.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 29 Aug 2017 07:56:59 -0700 (PDT) From: Ulf Hansson To: Wolfram Sang , "Rafael J . Wysocki" , Len Brown , linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org Cc: Kevin Hilman , Jarkko Nikula , Andy Shevchenko , Mika Westerberg , Jisheng Zhang , John Stultz , Guodong Xu , Sumit Semwal , Haojian Zhuang , Johannes Stezenbach , linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org, Ulf Hansson Subject: [PATCH v3 0/8] PM / ACPI / i2c: Deploy runtime PM centric path for system sleep Date: Tue, 29 Aug 2017 16:56:42 +0200 Message-Id: <1504018610-10822-1-git-send-email-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.7.4 The i2c designware platform driver, drivers/i2c/busses/i2c-designware-platdrv.c, isn't well optimized for system sleep. What makes this driver particularly interesting is because it's a cross-SoC driver, which sometimes means there is an ACPI PM domain attached to the i2c device and sometimes not. The driver is being used on both x86 and ARM. In principle, to optimize the system sleep support in i2c driver, this series enables the proven runtime PM centric path for the i2c driver. However, to do that the ACPI PM domain also have to collaborate and understand this behaviour. >From earlier versions, Rafael has also pointed out that also the PM core needs to be involved. Therefore a number of changes, patch 1 to patch 6, makes the needed changes to the PM core and the ACPI PM domain. In patch7 and patch 8, the i2c driver gets optimized and is converted to the runtime PM centric path for system sleep. It shall be noted, the behaviour of the ACPI PM domain should remain intact, still taking benefit of using the direct_complete path during system sleep, except for those drivers that uses the runtime PM centric path. This series has been tested on an ARM64 Hikey board, which isn't having the i2c device attached to the ACPI PM domain. This means that the ACPI changes needs to be tested on some relevant Intel SoCs and it's greatly appreciated is someone could help out with this, so is of course review comments. Some news in v3: - The fix for the i2c driver [1], is now present in Linus' tree from tag v4.13-rc7 - and so does Rafael's tree. - To simplify for testers, I have published a branch [3] based upon Rafael's pm tree and linux-next branch. - Rephrased some part of the coverletter to clarify the intent of this series. - Addressed review comments from v2. Some news in v2: - The v1 contained a fix for the i2c driver, this has been sent separately [1] and picked up for fixes by Wolfram for v4.13-rcs. However the fix has not yet reached Linus' tree. The changes on i2c driver are based upon that change. - To simplify for testers, I have published a branch [2] based upon Rafael's pm tree and linux-next branch, which also includes the above patch. - Rephrased the coverletter to clarify the intent of this series. - Addressed review comments from v1. [1] http://patchwork.ozlabs.org/patch/799803/ [2] git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git acpi_pm_i2c_rpm_path_v2 [3] git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git acpi_pm_i2c_rpm_path_v3 Kind regards Ulf Hansson Ulf Hansson (8): PM / Sleep: Make the runtime PM centric path known to the PM core PM / ACPI: Restore acpi_subsys_complete() PM / Sleep: Remove pm_complete_with_resume_check() PM / ACPI: Split code validating need for runtime resume in ->prepare() PM / ACPI: Split acpi_lpss_suspend_late|resume_early() PM / ACPI: Enable the runtime PM centric approach for system sleep i2c: designware: Don't resume device in the ->complete() callback i2c: designware: Deploy the runtime PM centric path for system sleep drivers/acpi/acpi_lpss.c | 79 ++++++++++++++------ drivers/acpi/device_pm.c | 111 ++++++++++++++++++++++------ drivers/base/power/generic_ops.c | 23 ------ drivers/base/power/main.c | 49 ++++++++++-- drivers/base/power/runtime.c | 1 + drivers/i2c/busses/i2c-designware-platdrv.c | 34 ++------- include/linux/pm.h | 8 +- 7 files changed, 204 insertions(+), 101 deletions(-) -- 2.7.4