Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753442AbdHKOZa (ORCPT ); Fri, 11 Aug 2017 10:25:30 -0400 Received: from bhuna.collabora.co.uk ([46.235.227.227]:48478 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753154AbdHKOXM (ORCPT ); Fri, 11 Aug 2017 10:23:12 -0400 From: Thierry Escande To: Benson Leung , Lee Jones , Jonathan Cameron Cc: Joseph Lo , Gwendal Grignou , Douglas Anderson , Daniel Hung-yu Wu , Vincent Palatin , Wei-Ning Huang , linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Subject: [PATCH v2 2/8] mfd: cros_ec_i2c: move the system sleep pm ops to late Date: Fri, 11 Aug 2017 16:22:59 +0200 Message-Id: <1502461385-27564-3-git-send-email-thierry.escande@collabora.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1502461385-27564-1-git-send-email-thierry.escande@collabora.com> References: <1502461385-27564-1-git-send-email-thierry.escande@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset = "utf-8" Content-Transfert-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1281 Lines: 36 From: Joseph Lo The cros_ec_i2c driver is still active after it had suspended or before it resumes. Besides that, it also tried to transfer data even after the I2C host had been suspended. This leads the system to crash. During the test, we also observed that the EC needs to be resumed earlier due to some status polling from the EC firmware (e.g. battery status). This patch moves the PM ops to late stage to make it work normally. Signed-off-by: Joseph Lo Signed-off-by: Thierry Escande Acked-by: Benson Leung --- drivers/mfd/cros_ec_i2c.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/mfd/cros_ec_i2c.c b/drivers/mfd/cros_ec_i2c.c index 9f70de1..576fcc4 100644 --- a/drivers/mfd/cros_ec_i2c.c +++ b/drivers/mfd/cros_ec_i2c.c @@ -341,8 +341,9 @@ static int cros_ec_i2c_resume(struct device *dev) } #endif -static SIMPLE_DEV_PM_OPS(cros_ec_i2c_pm_ops, cros_ec_i2c_suspend, - cros_ec_i2c_resume); +const struct dev_pm_ops cros_ec_i2c_pm_ops = { + SET_LATE_SYSTEM_SLEEP_PM_OPS(cros_ec_i2c_suspend, cros_ec_i2c_resume) +}; static const struct of_device_id cros_ec_i2c_of_match[] = { { .compatible = "google,cros-ec-i2c", }, -- 2.7.4