Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp995500pxb; Sun, 19 Sep 2021 02:50:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxy1cNJGerRJ4JpVJed7fEN/U9W+wfvafli/nh9sVIoJJK6sxYYfOBgjoBqAgrtsQKn+a43 X-Received: by 2002:a5e:8e04:: with SMTP id a4mr14847422ion.56.1632045042407; Sun, 19 Sep 2021 02:50:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632045042; cv=none; d=google.com; s=arc-20160816; b=H5jULwKqqiJqFijoN5TPpmZbFixInu4APMxjuE2OZLPeEVJeO17BMmft3J5Xm6D3lY FNR9V9bSapr6O3wdaVO0cqm5dtEwYlFFI8WoOHQwZFbzCyIp1ttpxcN6qiXWcQwqbET5 1ym4bROmjedLCJXEGxMgPF+16E5uymge+E4ynB/xo8rrlqdLAYglYBT4PBw2Q3KawqJt VsPSp3odDXkVa7hj42VPyeHmLG3+W8BnyMIhWN45jUwahfJSDIQTd2PXmA7c1q8XsoqJ KrR8eHp2tTqKIo9cQk//4AxJxc7aY89SD6ExC68MHMwTG1GdZUrL6+TT13IhfTzik3bB 06Hg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from:dmarc-filter :sender:dkim-signature; bh=+U2GiqwuWx+H3KaZJ3sfJgpTvDO76iW140USeHkgnAU=; b=ZE12Z6Cfk5mA0NDvxXuRJUr8PayFXKST6EEPjCNuv1j58pcm/ywQQyCMDxsKTXEAhe 9U9IarbBsCVpnoPF/2U8IvUgVMlK78C4djnSR1c/ha0aK80VShheMXYHojpS/bh3ATz2 fWeXDwEAToJG4BzsWg5R4GwOFJQvH4RBWL5trXkNDrzdu6R7g5Z0gjVM2woXngdJsCZC IEHtN7ioYZSaSiLZDKuFshsmZMzIY3Zzlk/B8r3sSWFyhPLwO/NyQqwO9c+YLEWS0AJb m1WI83k2xM5i+sC+mNh3dru/llxkiKylyybGlUQaNKRXqhj1d5uXhDzjEMoNsvPWiZU8 my9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=Re98a7SR; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i3si12054743iom.99.2021.09.19.02.50.30; Sun, 19 Sep 2021 02:50:42 -0700 (PDT) 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; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=Re98a7SR; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234976AbhIRTEa (ORCPT + 99 others); Sat, 18 Sep 2021 15:04:30 -0400 Received: from so254-9.mailgun.net ([198.61.254.9]:64111 "EHLO so254-9.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235442AbhIRTE3 (ORCPT ); Sat, 18 Sep 2021 15:04:29 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1631991786; h=Message-Id: Date: Subject: Cc: To: From: Sender; bh=+U2GiqwuWx+H3KaZJ3sfJgpTvDO76iW140USeHkgnAU=; b=Re98a7SRUADW948hpKw+CZig5KmPRyas/IlrXFaaB9xPNsre2HfZKYv4MG2oy1bLPJ/axZZQ dP7C9Vx2wiFzlfUbtjzhMMZOYLw909/fYle8Ex1fSZBWxyTj7JRpiOwFJ59z5oua3j0414l9 jidjMVqu8LTh5qj69/CV7Pya6OI= X-Mailgun-Sending-Ip: 198.61.254.9 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n02.prod.us-east-1.postgun.com with SMTP id 614637cfbd6681d8ed1291b3 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Sat, 18 Sep 2021 19:02:39 GMT Sender: deesin=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id D7E24C43618; Sat, 18 Sep 2021 19:02:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00,SPF_FAIL autolearn=no autolearn_force=no version=3.4.0 Received: from deesin-linux.qualcomm.com (unknown [202.46.22.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: deesin) by smtp.codeaurora.org (Postfix) with ESMTPSA id 33D1BC4338F; Sat, 18 Sep 2021 19:02:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 smtp.codeaurora.org 33D1BC4338F Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=codeaurora.org From: Deepak Kumar Singh To: bjorn.andersson@linaro.org, swboyd@chromium.org, clew@codeaurora.org, sibis@codeaurora.org Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, Deepak Kumar Singh , Andy Gross Subject: [PATCH V4 1/1] soc: qcom: smp2p: Add wakeup capability to SMP2P IRQ Date: Sun, 19 Sep 2021 00:32:15 +0530 Message-Id: <1631991735-18920-1-git-send-email-deesin@codeaurora.org> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Remote susbsystems notify fatal crash throught smp2p interrupt. When remoteproc crashes it can cause soc to come out of low power state and may not allow again to enter in low power state until crash is handled. Mark smp2p interrupt wakeup capable so that interrupt handler is executed and remoteproc crash can be handled in system resume path. This patch marks interrupt wakeup capable but keeps wakeup disabled by default. User space can enable it based on its requirement for wakeup from suspend. Signed-off-by: Deepak Kumar Singh --- drivers/soc/qcom/smp2p.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c index 2df4883..60ad632 100644 --- a/drivers/soc/qcom/smp2p.c +++ b/drivers/soc/qcom/smp2p.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -538,9 +539,26 @@ static int qcom_smp2p_probe(struct platform_device *pdev) goto unwind_interfaces; } + /* + * Treat smp2p interrupt as wakeup source, but keep it disabled + * by default. User space can decide enabling it depending on its + * use cases. For example if remoteproc crashes and device wants + * to handle it immediatedly (e.g. to not miss phone calls) it can + * enable wakeup source from user space, while other devices which + * do not have proper autosleep feature may want to handle it with + * other wakeup events (e.g. Power button) instead waking up immediately. + */ + device_set_wakeup_capable(&pdev->dev, true); + + ret = dev_pm_set_wake_irq(&pdev->dev, irq); + if (ret) + goto set_wake_irq_fail; return 0; +set_wake_irq_fail: + dev_pm_clear_wake_irq(&pdev->dev); + unwind_interfaces: list_for_each_entry(entry, &smp2p->inbound, node) irq_domain_remove(entry->domain); @@ -565,6 +583,9 @@ static int qcom_smp2p_remove(struct platform_device *pdev) struct qcom_smp2p *smp2p = platform_get_drvdata(pdev); struct smp2p_entry *entry; + dev_pm_clear_wake_irq(&pdev->dev); + device_init_wakeup(&pdev->dev, false); + list_for_each_entry(entry, &smp2p->inbound, node) irq_domain_remove(entry->domain); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project