Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp20997966ybl; Sun, 5 Jan 2020 17:07:03 -0800 (PST) X-Google-Smtp-Source: APXvYqx6Uq33ietqtkG5+eqCjmtqQP0pkyOXyNgwN6SI/o/Bu7vOnZz5vlld+Z42nIbP9QFDcuwk X-Received: by 2002:a9d:ee2:: with SMTP id 89mr50090371otj.270.1578272823029; Sun, 05 Jan 2020 17:07:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578272823; cv=none; d=google.com; s=arc-20160816; b=alKwM2LUVv85oeVdbzUuhBn38i6idfR8xZHmF0xQuTfpGViPj2XmukENf01GJUTGmR me6OqBhVgPnsk/zbzxe85EoiDEzZaQi6YltgAUV7UzhF7MhJkCgdkE4mt4TqMJliGKv/ VXWJiodfUrEfZbqKqEYdvCCbZcFYhEpfDjBsbKj+uUwZzMnzK27g+64OITUAQ2/xsr1F Z2r27Lg2v9DuXIBzBc4C9J7MZJo239cYkMekxTrmIOiskdoOTaNhjHbvQN/1IcnMytSV RLA+AJ6ALS6ZQ2DqMP+7VhuRPeRgv4mDgGDzN6O5VK+MUdiFNv1eAakyYbc2aZxH7V2y KQng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0wDGXuY18A0/+zgWOUGjS7EoingM7KoaMm0Na+dcu9U=; b=AluIQM7CRSSngKsosL3Wg/6HIrysS2B4XoEA/uwOt514Zxkm5r2z9RMofSqluwzZ28 kmTevzi/EsA/6/jB8ldm7pGbAWWMA/O1wjkxk4iBBNu88M/MiLJ3cErjVDstIZ5Vg8tJ xaCpMKZ2uMwEBIsNqd7IiaShZhtl7anG0Qpj4CDTDLQu8MF27vzahT4gfuuHTK34f6ts RhPpDgBN+oSK0oNYyN8H7uajPcm5vHDCIMblhVdZXl7VereR/jdmc/NT14uvMKZ+mZaT O7KkygmjAZz0geOfITlcb3cB4imvX0OOV6Sh2wDQ10aDn1qA3OdfRu+qPifU3C6tcUbe abOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GBs2UtWF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r4si36984150otd.50.2020.01.05.17.06.50; Sun, 05 Jan 2020 17:07:03 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GBs2UtWF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727270AbgAFBEj (ORCPT + 99 others); Sun, 5 Jan 2020 20:04:39 -0500 Received: from mail-lf1-f67.google.com ([209.85.167.67]:37785 "EHLO mail-lf1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726526AbgAFBEj (ORCPT ); Sun, 5 Jan 2020 20:04:39 -0500 Received: by mail-lf1-f67.google.com with SMTP id b15so35323631lfc.4; Sun, 05 Jan 2020 17:04:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0wDGXuY18A0/+zgWOUGjS7EoingM7KoaMm0Na+dcu9U=; b=GBs2UtWFxeeLekr/D23vfCkd6wnRqAm/OYCnKE6jqfuYusXS3XxMYEP537ysCys0eR iuedWCneC4VKarU6uLQusFsskJm++OOxrpHUail8Z2jhCJEO7Y1Kfy5wKDVLaTxziF8m 6NX4/5QH+Peva8UBv9i5mvSRuYeEG6q1PiEfBx3BIhFpvlOjSopjtgxcK4pzt6JprdCX h+hg7vQIPXXgt5zwU275NljW4f67keVEhYbrRx8Tk25ANRTFJeMEEHVvozg+ST+w2wMX IJIOTKcY8sgw2n5JZ2Drbtym/G8080qk19+w63KLGtex2RMMRSXKiNbTNjMfWHYvw6ww wlUQ== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=0wDGXuY18A0/+zgWOUGjS7EoingM7KoaMm0Na+dcu9U=; b=qeDuAywQSVHuwoSI6q+cm6v+XOhr2jIHxHYd9D5rytwxgOo9a8czWTooW7G2yg/FZe RYWqiHUnvb8Svrj16Z5N/EmmJk1F5TtW/0X0MxU9cLKWXRloLStyKUmR39p+PEre0vFu d552ah+aDND7xz1zrBr4rpoG2UiOD8zgW0W+WH2XE4AbM4QxMPhi5zE+g65uNdYzVJny 4VA4aCJUiS/1gijgEFY3MmwC5nRF+MMSxkPrBLC0tkysmkVuJbwuyEvx9BFnmEAKFPbY YrjsN6uiu6zUnKGwmroP2d2OPzMlT15SCE4wMbfKdw2L4Z3klusRLPOlEmLMUdt/fH/p uOLQ== X-Gm-Message-State: APjAAAXq6I5rXDNflPbnF9QxBrFE3P4OsWb4z0+dO59l0fiaX3oiNA1l iOL0axPVa07mBd3LxWUtI4E= X-Received: by 2002:a19:7401:: with SMTP id v1mr54473610lfe.129.1578272676859; Sun, 05 Jan 2020 17:04:36 -0800 (PST) Received: from localhost.localdomain (79-139-233-37.dynamic.spd-mgts.ru. [79.139.233.37]) by smtp.gmail.com with ESMTPSA id a19sm28245910ljb.103.2020.01.05.17.04.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jan 2020 17:04:36 -0800 (PST) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Mikko Perttunen , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 1/9] i2c: tegra: Fix suspending in active runtime PM state Date: Mon, 6 Jan 2020 04:04:15 +0300 Message-Id: <20200106010423.5890-2-digetx@gmail.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20200106010423.5890-1-digetx@gmail.com> References: <20200106010423.5890-1-digetx@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I noticed that sometime I2C clock is kept enabled during suspend-resume. This happens because runtime PM defers dynamic suspension and thus it may happen that runtime PM is in active state when system enters into suspend. In particular I2C controller that is used for CPU's DVFS is often kept ON during suspend because CPU's voltage scaling happens quite often. Fixes: 8ebf15e9c869 ("i2c: tegra: Move suspend handling to NOIRQ phase") Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index a98bf31d0e5c..79d19f6ce94e 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -1710,9 +1710,14 @@ static int tegra_i2c_remove(struct platform_device *pdev) static int __maybe_unused tegra_i2c_suspend(struct device *dev) { struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev); + int err; i2c_mark_adapter_suspended(&i2c_dev->adapter); + err = pm_runtime_force_suspend(dev); + if (err < 0) + return err; + return 0; } @@ -1733,6 +1738,10 @@ static int __maybe_unused tegra_i2c_resume(struct device *dev) if (err) return err; + err = pm_runtime_force_resume(dev); + if (err < 0) + return err; + i2c_mark_adapter_resumed(&i2c_dev->adapter); return 0; -- 2.24.0