From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83731C433EF for ; Thu, 12 May 2022 22:46:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244764AbiELWql (ORCPT ); Thu, 12 May 2022 18:46:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356241AbiELWqk (ORCPT ); Thu, 12 May 2022 18:46:40 -0400 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84CA04B874 for ; Thu, 12 May 2022 15:46:38 -0700 (PDT) Received: by mail-pj1-x1033.google.com with SMTP id qe3-20020a17090b4f8300b001dc24e4da73so6670168pjb.1 for ; Thu, 12 May 2022 15:46:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=w7xRYGEEgLlcfSNhLyiae2Suom2+oKJoUELtHjnH1l4=; b=JcxyzS2/X+CTAkdqnryxhc1CdjvPBZ6DX7dJAB08YX/K61V5t4vhFW0BZn/hQ+cbUE 4Dju2qWnEnZm4o7CahLxVzBOo6nqKavIFCjlMbGVer+y5zrTtDFDHDrWav+llnze2g0x 5x7Jv1JJulg7CUH5L4GwG+2yXJOQ0+bFjF5gs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=w7xRYGEEgLlcfSNhLyiae2Suom2+oKJoUELtHjnH1l4=; b=TADmfNbQDvhE+4zq0v4UlfnKKWMaBHl5DGJ9bOvoXnF4DkhI9st53N2COns6bxUyfo 6VfOp3oFygq8v8eTkwWcSFP/arCJSAZNls62xg2I5c34b99ibZ8Ye47dcXEhy5KAvVuc WLf98PII7PVblDARDMUUwMcGUBDtFgvJoEGC84hhpOL3nJJ4MHCOvnx7GfdKxwsqm+9n 8IaLUIKv+kSky6zbW9tnrNU4EpcaAht1MPOF3kRjRVcJnQq4os8diGT8hsa3bWvXmSf+ QPrf3bHRjNdxYImJbgwLzDkEMgLOQVQdubq1Td67I+te6DwXj6PnCaZam4R+1NVzrH6i llHA== X-Gm-Message-State: AOAM532BYFTAMKPKUgxt+lFaajiZdfM1hH//BdNNqlSnqzRpl4N5Smub +DsjIP71Sw506XE7XwJuyxCs7A== X-Google-Smtp-Source: ABdhPJxLdQopQQB82M4oh6IUbuLnZifJOaY3RgFRN8NvEkSNVuq88W7hpERHgcLZHkvW2a9p6vFsBw== X-Received: by 2002:a17:902:7891:b0:15e:f845:b816 with SMTP id q17-20020a170902789100b0015ef845b816mr1640183pll.60.1652395598075; Thu, 12 May 2022 15:46:38 -0700 (PDT) Received: from localhost ([2620:15c:11a:202:bc87:9632:bcce:8e17]) by smtp.gmail.com with UTF8SMTPSA id 2-20020a17090a19c200b001d5c571f487sm306302pjj.25.2022.05.12.15.46.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 12 May 2022 15:46:37 -0700 (PDT) Date: Thu, 12 May 2022 15:46:36 -0700 From: Matthias Kaehlcke To: Krishna Kurapati Cc: Krzysztof Kozlowski , Rob Herring , Andy Gross , Bjorn Andersson , Greg Kroah-Hartman , Felipe Balbi , Stephen Boyd , Doug Anderson , Mathias Nyman , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, quic_pkondeti@quicinc.com, quic_ppratap@quicinc.com, quic_vpulyala@quicinc.com, Sandeep Maheswaram Subject: Re: [v16 5/5] usb: dwc3: qcom: Keep power domain on to retain controller status Message-ID: References: <1652379802-8318-1-git-send-email-quic_kriskura@quicinc.com> <1652379802-8318-6-git-send-email-quic_kriskura@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1652379802-8318-6-git-send-email-quic_kriskura@quicinc.com> Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On Thu, May 12, 2022 at 11:53:22PM +0530, Krishna Kurapati wrote: > From: Sandeep Maheswaram > > Keep the power domain always on during runtime suspend or if the > controller supports wakeup in order to retain controller status > and to support wakeup from devices. > > Signed-off-by: Sandeep Maheswaram > Signed-off-by: Krishna Kurapati > --- > drivers/usb/dwc3/dwc3-qcom.c | 23 ++++++++++++++++------- > 1 file changed, 16 insertions(+), 7 deletions(-) > > diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c > index 9804a19..1f9589a 100644 > --- a/drivers/usb/dwc3/dwc3-qcom.c > +++ b/drivers/usb/dwc3/dwc3-qcom.c > @@ -17,6 +17,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -718,12 +719,13 @@ dwc3_qcom_create_urs_usb_platdev(struct device *dev) > > static int dwc3_qcom_probe(struct platform_device *pdev) > { > - struct device_node *np = pdev->dev.of_node; > - struct device *dev = &pdev->dev; > - struct dwc3_qcom *qcom; > - struct resource *res, *parent_res = NULL; > - int ret, i; > - bool ignore_pipe_clk; > + struct device_node *np = pdev->dev.of_node; > + struct device *dev = &pdev->dev; > + struct dwc3_qcom *qcom; > + struct resource *res, *parent_res = NULL; > + int ret, i; > + bool ignore_pipe_clk; > + struct generic_pm_domain *genpd; > > qcom = devm_kzalloc(&pdev->dev, sizeof(*qcom), GFP_KERNEL); > if (!qcom) > @@ -732,6 +734,8 @@ static int dwc3_qcom_probe(struct platform_device *pdev) > platform_set_drvdata(pdev, qcom); > qcom->dev = &pdev->dev; > > + genpd = pd_to_genpd(qcom->dev->pm_domain); > + > if (has_acpi_companion(dev)) { > qcom->acpi_pdata = acpi_device_get_match_data(dev); > if (!qcom->acpi_pdata) { > @@ -839,7 +843,12 @@ static int dwc3_qcom_probe(struct platform_device *pdev) > if (ret) > goto interconnect_exit; > > - device_init_wakeup(&pdev->dev, 1); > + genpd->flags |= GENPD_FLAG_RPM_ALWAYS_ON; > + > + if (device_may_wakeup(&qcom->dwc3->dev)) { This should probably be device_can_wakeup(), otherwise you'll have to set/clear the flag before suspending (the wakeup policy might change after the device is probed). Also I'm not sure if switching the domain off can impact the power consumption of some connected peripherals, as is observed when the PHYs are powered off (I could confirm this if needed). > + genpd->flags |= GENPD_FLAG_ALWAYS_ON; > + device_init_wakeup(&pdev->dev, true); > + } > qcom->is_suspended = false; > pm_runtime_set_active(dev); > pm_runtime_enable(dev); > -- > 2.7.4 >