Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp897942pxb; Sat, 9 Jan 2021 00:33:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJyoRa0ocv5S+N4ejU2ONHpaPDWJro2z6BI+mdetGic1cj/2gB+9DVvoA2eUJcQ/lSDmYHVv X-Received: by 2002:a50:f61b:: with SMTP id c27mr7821067edn.61.1610181191892; Sat, 09 Jan 2021 00:33:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610181191; cv=none; d=google.com; s=arc-20160816; b=KgVsRQEKTlyIIodUrC1PfDm3KQbt0JvgFxheg9NWdXYyuMTkZYmaxYPdd02zPU3VM4 mhicWSo0/b1mkA9ylkhycMurLBnwT7cE3Bp1QIGcgdhx3HlAJ+OqlkaFTRK+xHNcZ7E7 zdLWr8ieGlZlfNS7KEY3t/XTfEjU9CB0c0LpW9jEjbRX2NdDhe2yKsIPosxdm0ui37GL c8/+ZqqDbgFC7+0Up/HKZL898r3piFYaUo97LroNAMsGlEKLtZqJLpDHuvef1bVRn7mQ ik6pgy9HrsR1oSVUtoqKQlsWzJZqXba0COGR2CCWeJaWAGgtWj0z084Ej3A0++N23wZM 8LzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=+EBRf4wVjTK6sqGCoCgKSKZwjEOrGBsgOWsSQfCq5n0=; b=rBSn86RSMyQGNNwXdsRd0CWTCtGDzGSQIpfCWL467zDraOJBMheIJyAhbZq3/eYc8K cGyaQDXq7SRQn6espKESVLwwGzrsdIUWVZL0eJb9TVqAUBXa0e4KHLIvv6UXoaEo6kxr ZnEokmgYqlsrsFLLi2M9j0G4iKM42HnzjjEjgBJg/ERjj1t9GiTARgeJ+siHTeDgmkZg qmSSlT75nM6MSKQksRYIxqx/bOHA7A49INIWGFRwHL4m26hncIJizuKQvoV7CfTYvEhr WD5CDWRBWo9havS+5+AjTdEvVOHSE2UNEy6p2A3Ty1qmQM5OrFk+T0FIs82LttRe4Nv6 dXbg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h21si4494656edq.302.2021.01.09.00.32.48; Sat, 09 Jan 2021 00:33:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726724AbhAIIaq (ORCPT + 99 others); Sat, 9 Jan 2021 03:30:46 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:60099 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726443AbhAIIap (ORCPT ); Sat, 9 Jan 2021 03:30:45 -0500 X-UUID: 0c9a43d1204f4a50874a69be5b9b8998-20210109 X-UUID: 0c9a43d1204f4a50874a69be5b9b8998-20210109 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1064750974; Sat, 09 Jan 2021 16:29:58 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 9 Jan 2021 16:29:56 +0800 Received: from localhost.localdomain (10.17.3.153) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sat, 9 Jan 2021 16:29:56 +0800 From: To: CC: , , , , , , , Subject: [RESEND, V2] i2c: mediatek: Move suspend and resume handling to NOIRQ phase Date: Sat, 9 Jan 2021 16:29:50 +0800 Message-ID: <1610180990-23496-1-git-send-email-qii.wang@mediatek.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Qii Wang Some i2c device driver indirectly uses I2C driver when it is now being suspended. The i2c devices driver is suspended during the NOIRQ phase and this cannot be changed due to other dependencies. Therefore, we also need to move the suspend handling for the I2C controller driver to the NOIRQ phase as well. Signed-off-by: Qii Wang --- Changes in v2: - Replied some comments - Fixed the wrong spelling medaitek to mediatek drivers/i2c/busses/i2c-mt65xx.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c index 0818d3e..2ffd2f3 100644 --- a/drivers/i2c/busses/i2c-mt65xx.c +++ b/drivers/i2c/busses/i2c-mt65xx.c @@ -1275,7 +1275,8 @@ static int mtk_i2c_probe(struct platform_device *pdev) mtk_i2c_clock_disable(i2c); ret = devm_request_irq(&pdev->dev, irq, mtk_i2c_irq, - IRQF_TRIGGER_NONE, I2C_DRV_NAME, i2c); + IRQF_NO_SUSPEND | IRQF_TRIGGER_NONE, + I2C_DRV_NAME, i2c); if (ret < 0) { dev_err(&pdev->dev, "Request I2C IRQ %d fail\n", irq); @@ -1302,7 +1303,16 @@ static int mtk_i2c_remove(struct platform_device *pdev) } #ifdef CONFIG_PM_SLEEP -static int mtk_i2c_resume(struct device *dev) +static int mtk_i2c_suspend_noirq(struct device *dev) +{ + struct mtk_i2c *i2c = dev_get_drvdata(dev); + + i2c_mark_adapter_suspended(&i2c->adap); + + return 0; +} + +static int mtk_i2c_resume_noirq(struct device *dev) { int ret; struct mtk_i2c *i2c = dev_get_drvdata(dev); @@ -1317,12 +1327,15 @@ static int mtk_i2c_resume(struct device *dev) mtk_i2c_clock_disable(i2c); + i2c_mark_adapter_resumed(&i2c->adap); + return 0; } #endif static const struct dev_pm_ops mtk_i2c_pm = { - SET_SYSTEM_SLEEP_PM_OPS(NULL, mtk_i2c_resume) + SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(mtk_i2c_suspend_noirq, + mtk_i2c_resume_noirq) }; static struct platform_driver mtk_i2c_driver = { -- 1.9.1