From patchwork Sat Sep 23 11:50:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 143894 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp157368vqu; Sat, 23 Sep 2023 05:51:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEZQM+VEy4Sxw6hedUIbTl26BDeOYNsoQNr6D3Ef9vwoXaLexpGahQO36Z6YfQixEI6kdZC X-Received: by 2002:a05:6358:339b:b0:13a:a85b:a4ce with SMTP id i27-20020a056358339b00b0013aa85ba4cemr2978984rwd.16.1695473482619; Sat, 23 Sep 2023 05:51:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695473482; cv=none; d=google.com; s=arc-20160816; b=w2GEfcEupX8bzV0MpoaqmVEA/io8iG4VC0dlPxWwHLCjtEtSmPlJQYgpNfp3vWlN50 1n38HomGvMTrvFq3sWTO4RrQ9k0DIv5B4csa1il8MwMNXk8uOOvh5WNBRxOfLb/M5spK Z9W+sn9q2fTKgbHqbMJBWUwn6SOCPVC7ogOXj3MkamTMy/wE0SZdXGydEDzGSri8YWSn ZfyGvssemXJe6WwRMMOLoz6qRyJ2QsZit2F22sJZOa3UNLnqW/RWkxGp6swsME0yXITT EiDT9Qke+C6QCwnJ+Q3w589rQFNuS7n3Sq2PuKnkNaiK5vGXV9u0mK1IH2c4E5wbrxqG 9U9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=UPs/8kVgbnM0mW5nRHnV6PsEkWTa8KX9zy7vOpy7zco=; fh=MCN03NosXtEjV2CWNN8+8RSYxzzUiUWwqAVAZ2yCf5c=; b=an8QzNHRduaudkdpqWCytlfTQcF4x1cXRn4G2d7m5bKV62e0UmUdjV61Qgs3BGYotI JxU33o+WJo9SQhycNK8tw4hya25opRf5oTclXi52NKvgpVhwHbQUiqHPJGyb5sPyq1b5 SeBG04TnifmGFPYfPdbaItz7ZGagmQBeMjYmi3uiBD8l2ZE45e1KTMhzDi8sUnkbOFN+ CsTALFAt4BDh5l9MEMcGYtdCpYF7U+unCvgHVKKMvzl+Df5/CAC1dgKK1x/2Z+vlnzhk dnCOEo8O49HqIgmN9/3r0hMRgLh6/XH3sZ4UQwFXhAO8Qf1RUZakDX7pNwgQ2WG6/pJI 2DmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PweBAeQY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id h2-20020a631202000000b00557531eafb0si5593719pgl.559.2023.09.23.05.51.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 05:51:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PweBAeQY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 6DA508083B22; Sat, 23 Sep 2023 04:51:14 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231499AbjIWLud (ORCPT + 29 others); Sat, 23 Sep 2023 07:50:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35020 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231168AbjIWLu0 (ORCPT ); Sat, 23 Sep 2023 07:50:26 -0400 Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com [IPv6:2a00:1450:4864:20::22f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7FF51AD for ; Sat, 23 Sep 2023 04:50:19 -0700 (PDT) Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-2bffdf50212so57568641fa.1 for ; Sat, 23 Sep 2023 04:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1695469818; x=1696074618; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UPs/8kVgbnM0mW5nRHnV6PsEkWTa8KX9zy7vOpy7zco=; b=PweBAeQYomHnpiZ33syNTGedNrTDTDRbzwDrg2QFtoBAWX4zfrpQJWtGWfHpYUBFvz LjJ3D/C4MZX36ce4zqfbwiqTizZYeXmMzflqyNHdKSavFKR/y2p69e/S4dUz8bLypykt c+Upo6GoERq9MggkLvsUTLv3UJtwOLkczlWVB/TFXtwqFoyV9WhojPT4zmri5xu2BQKA +35LV/dGfnWyeBqI0c8qud3KWaV9/9JLGJgFYxrSyDmbzAZj3X2G2hbqiUHXH0JZxKqS MFOmHGL8ziqvMOFTdhsD9RfYljE24B+6XdUG6vM1L2SBkDbgd2r/+goXPNV0elSaoROM tW3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695469818; x=1696074618; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UPs/8kVgbnM0mW5nRHnV6PsEkWTa8KX9zy7vOpy7zco=; b=dyIvOOLG6sSkKebuIXaDwPlRHc1HHlIuuQhAN2Ord1oXfDKV+NfILpNx9002UlMy5S tpAKzTcR6lLV0qCHOhC8qvTZo+ycKlM86WkpP6yQn0BBX9YqZVtyL8xiQpwr19gUxp63 TPj3BnlP7xOZj4n40kL7IK4uZKePVQjbWpUyUSk5CCQOPTqYmpd8jXsqv+sBY0HhT43L uynCVpyiI2Trv2cWL3SBwDMeX2befCbBQBCm8YIrSvWNqO5Pc5fVWYEW1u+gKEd1KsIP crrzWiU5F9UxfMShIuVFpZSrvzM8vwy6ymzHedw65mJ7pr6QKifR1p2GPZ5K2TOepm0D NUYQ== X-Gm-Message-State: AOJu0Yz7dFFyjQfAu8w5phgWuHPuf1F0ZMBfXfJLqOjGckBxf6Ab2oc0 1pr0rSgvhF2EJ360s1W+OZyiVQ== X-Received: by 2002:a2e:9d98:0:b0:2bc:e882:f717 with SMTP id c24-20020a2e9d98000000b002bce882f717mr1448649ljj.53.1695469817288; Sat, 23 Sep 2023 04:50:17 -0700 (PDT) Received: from hackbox.lan ([86.120.16.169]) by smtp.gmail.com with ESMTPSA id k15-20020a1709062a4f00b009ad8084e08asm3853310eje.0.2023.09.23.04.50.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 04:50:16 -0700 (PDT) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Pavel Machek , Len Brown , Greg Kroah-Hartman , Bjorn Andersson , Andy Gross , Konrad Dybcio , Mike Turquette , Stephen Boyd , Taniya Das Cc: linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org Subject: [RESEND v3 1/5] PM: domains: Allow devices attached to genpd to be managed by HW Date: Sat, 23 Sep 2023 14:50:04 +0300 Message-Id: <20230923115008.1698384-2-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230923115008.1698384-1-abel.vesa@linaro.org> References: <20230923115008.1698384-1-abel.vesa@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Sat, 23 Sep 2023 04:51:14 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777832802123894629 X-GMAIL-MSGID: 1777832802123894629 From: Ulf Hansson Some power-domains may be capable of relying on the HW to control the power for a device that's hooked up to it. Typically, for these kinds of configurations the device doesn't really need to be attached to a PM domain (genpd), from Linux point of view. However, in some cases the behaviour of the power-domain and its device can be changed in runtime. To allow a consumer driver to change the behaviour of the PM domain for its device, let's provide a new function, dev_pm_genpd_set_hwmode(). Moreover, let's add a corresponding optional genpd callback, ->set_hwmode_dev(), which the genpd provider should implement if it can support switching between HW controlled mode and SW controlled mode. Similarly, add the dev_pm_genpd_get_hwmode() to allow consumers to read the current mode and its corresponding optional genpd callback, ->get_hwmode_dev(), which the genpd provider can also implement for reading back the mode from the hardware. Signed-off-by: Ulf Hansson Signed-off-by: Abel Vesa --- drivers/base/power/domain.c | 69 +++++++++++++++++++++++++++++++++++++ include/linux/pm_domain.h | 17 +++++++++ 2 files changed, 86 insertions(+) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 5cb2023581d4..dfb4f1de540d 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -541,6 +541,75 @@ void dev_pm_genpd_synced_poweroff(struct device *dev) } EXPORT_SYMBOL_GPL(dev_pm_genpd_synced_poweroff); +/** + * dev_pm_genpd_set_hwmode - Set the HW mode for the device and its PM domain. + * + * @dev: Device for which the HW-mode should be changed. + * @enable: Value to set or unset the HW-mode. + * + * Some PM domains can rely on HW signals to control the power for a device. To + * allow a consumer driver to switch the behaviour for its device in runtime, + * which may be beneficial from a latency or energy point of view, this function + * may be called. + * + * It is assumed that the users guarantee that the genpd wouldn't be detached + * while this routine is getting called. + * + * Returns 0 on success and negative error values on failures. + */ +int dev_pm_genpd_set_hwmode(struct device *dev, bool enable) +{ + struct generic_pm_domain *genpd; + int ret = 0; + + genpd = dev_to_genpd_safe(dev); + if (!genpd) + return -ENODEV; + + if (!genpd->set_hwmode_dev) + return -EOPNOTSUPP; + + genpd_lock(genpd); + + if (dev_gpd_data(dev)->hw_mode == enable) + goto out; + + ret = genpd->set_hwmode_dev(genpd, dev, enable); + if (!ret) + dev_gpd_data(dev)->hw_mode = enable; + +out: + genpd_unlock(genpd); + return ret; +} +EXPORT_SYMBOL_GPL(dev_pm_genpd_set_hwmode); + +/** + * dev_pm_genpd_get_hwmode - Get the HW mode setting for the device. + * + * @dev: Device for which the current HW-mode setting should be fetched. + * + * This helper function allows consumer drivers to fetch the current HW mode + * setting of its the device. + * + * It is assumed that the users guarantee that the genpd wouldn't be detached + * while this routine is getting called. + */ +bool dev_pm_genpd_get_hwmode(struct device *dev) +{ + struct generic_pm_domain *genpd; + + genpd = dev_to_genpd_safe(dev); + if (!genpd) + return false; + + if (genpd->get_hwmode_dev) + return genpd->get_hwmode_dev(genpd, dev); + + return dev_gpd_data(dev)->hw_mode; +} +EXPORT_SYMBOL_GPL(dev_pm_genpd_get_hwmode); + static int _genpd_power_on(struct generic_pm_domain *genpd, bool timed) { unsigned int state_idx = genpd->state_idx; diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index f776fb93eaa0..36d308ba40b0 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -146,6 +146,10 @@ struct generic_pm_domain { int (*set_performance_state)(struct generic_pm_domain *genpd, unsigned int state); struct gpd_dev_ops dev_ops; + int (*set_hwmode_dev)(struct generic_pm_domain *domain, + struct device *dev, bool enable); + bool (*get_hwmode_dev)(struct generic_pm_domain *domain, + struct device *dev); int (*attach_dev)(struct generic_pm_domain *domain, struct device *dev); void (*detach_dev)(struct generic_pm_domain *domain, @@ -208,6 +212,7 @@ struct generic_pm_domain_data { unsigned int performance_state; unsigned int default_pstate; unsigned int rpm_pstate; + bool hw_mode; void *data; }; @@ -237,6 +242,8 @@ int dev_pm_genpd_remove_notifier(struct device *dev); void dev_pm_genpd_set_next_wakeup(struct device *dev, ktime_t next); ktime_t dev_pm_genpd_get_next_hrtimer(struct device *dev); void dev_pm_genpd_synced_poweroff(struct device *dev); +int dev_pm_genpd_set_hwmode(struct device *dev, bool enable); +bool dev_pm_genpd_get_hwmode(struct device *dev); extern struct dev_power_governor simple_qos_governor; extern struct dev_power_governor pm_domain_always_on_gov; @@ -305,6 +312,16 @@ static inline ktime_t dev_pm_genpd_get_next_hrtimer(struct device *dev) static inline void dev_pm_genpd_synced_poweroff(struct device *dev) { } +static inline int dev_pm_genpd_set_hwmode(struct device *dev, bool enable) +{ + return -EOPNOTSUPP; +} + +static inline bool dev_pm_genpd_get_hwmode(struct device *dev) +{ + return false; +} + #define simple_qos_governor (*(struct dev_power_governor *)(NULL)) #define pm_domain_always_on_gov (*(struct dev_power_governor *)(NULL)) #endif From patchwork Sat Sep 23 11:50:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 143939 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp257466vqu; Sat, 23 Sep 2023 09:06:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEMDDMp9Wso9Sqa0+OqGlVLFgDFpMmz2qSptsh75SwLolccxOtgsFDNaa6vjfF/umm/wVXi X-Received: by 2002:a17:903:2305:b0:1c3:8976:e821 with SMTP id d5-20020a170903230500b001c38976e821mr2307455plh.15.1695485196670; Sat, 23 Sep 2023 09:06:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695485196; cv=none; d=google.com; s=arc-20160816; b=hWf3IN7YWi62tg0C4TBdH/en3ZG1/JE8kLYsE4te/3Krk1HO/Pl+/mO3ZjEfqL1kTJ W8WTedA3J5KOO8V0RRMFTn2Rs+AF4nDhwDkwO3xp4U8La3myL7FnisZOKG4U2PcQlDR+ wZzwhDiW8SaVVSn16T2/z2pmFwqhWxVUtEin5lMNnDQLazd1bA9t7jBKjulH2dDjnF0X mYiwdz6mZy47yVAXpdLGn3jVGumsnb9YUky67uOdNHBbxVEp06+MLffciut9VtuQ6ZYJ ONdjj/qlp9fTaLZ5eykESJZMmjfBbtk2JnDQuft66FcLthvXT/ynXNZiNodQRCc/wjAA DIEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=gkMg6Ss1ODOcr8VdxRq6yPqfjTyE6Onn/Fwc4BWB7DM=; fh=RG9C+9f0qjD/nLRixABSsWLzASEJfBY2X6LH+3XeL2I=; b=Tbqtn45Fr2+Izvu1LVRR/jw2qe38HbNTewYVpBzKrJ+TOxtpkfK0ptSuJtVbKFjGT+ /uEvQa5Q7s0uQ/kOKerWLcwQZRn4IdgC0thtDQfBdV15n4GV28zPV2ynMzxAGCQp96o1 TspW2DkKXPMn7Rg/eqjEhzZcnjK+pcmMjU46lHAhyJbM5iBtYHmNx8BvzRBFSHD+8IBY Czu45nrEsGQZJWzMGe9zMxuYsp03j6JgmSftQi0QnsU0Tg5NSpIKIc34I/VWGnUGDIWk MClytr5dTsHtJXr6bEANuSOQniTQ724+QDTMWLn/Wgn4K2Q4mtC4ReRaR/xz59BTMSxf kjGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rLkzUVP9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id u11-20020a170902e20b00b001c5bb1f0cccsi932498plb.275.2023.09.23.09.06.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 09:06:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rLkzUVP9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id A95C983C23A8; Sat, 23 Sep 2023 04:50:46 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231448AbjIWLua (ORCPT + 29 others); Sat, 23 Sep 2023 07:50:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231425AbjIWLu0 (ORCPT ); Sat, 23 Sep 2023 07:50:26 -0400 Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 576561B0 for ; Sat, 23 Sep 2023 04:50:20 -0700 (PDT) Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-99357737980so443813466b.2 for ; Sat, 23 Sep 2023 04:50:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1695469819; x=1696074619; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gkMg6Ss1ODOcr8VdxRq6yPqfjTyE6Onn/Fwc4BWB7DM=; b=rLkzUVP9FvDi4+xOnZH7Iga1U2MJSV+W/0G+rtds2o8MTzHpFrZ009AS4vb/8PN6td f9vExEq4tuN4HGGf7XfxTn1GwdiQhiq2QZ11Dyu6shWaC5nbvKNbgotBaGEmajaiBSW0 +gc72amGkuTSZxoRt/Kv4yH99qDceXRaltQ6HceQpxu+z9o1RXa07q0i7ymRcV4of6hf H1TXEbkI7YxfcN4wk+VvVt/uvBnohsgKBGXfTxIEqbLg7QVI7WZB7aFFxF+SE5/vHkHi qzgCk6EctIw9+jHV9x2iX5Zz4NXmrGfEj5Dt4AzZEqMqLS83NEF+JKgCl0eQKlExPsl0 R5Ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695469819; x=1696074619; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gkMg6Ss1ODOcr8VdxRq6yPqfjTyE6Onn/Fwc4BWB7DM=; b=IEOa8wLaZ6ZJ9MC0jm8wO4fakzHUSGb/Idq0g4+QqzYBfQOgBAGzM+wnmOtk150gDL TsPOVi0XI4pY+9LVQ+46LxJDatVflshC+/C4PTpa1xN+3EritDC2eW/by/tsdt1u0LlM w7bGBenqBeKrAUpYCgWDzl+cmwRMCWweS71vPQsvIaG89yFfJ66Mp1P4zRyeHXRZBlvN G7S09jjLdtUJ+s8FnhgBmWNhzW6TmRxJNVwJfTZ8WuP8/1IT03CGxy46EGbKDkB0SVFW QR/P9wNNVUD1pCrsIwoTQrF2N/DcsoygZrYK2VxyPO36/uNQ4A78ZhfPUhKURrtyFBzJ JFHA== X-Gm-Message-State: AOJu0YzJPC9/v8bzzX0eEGdgSfhKVPxzpxcKdK/Z+ferXVZKy0fGXEms xfij8Ce8AWMjDrWS20122ireJw== X-Received: by 2002:a17:906:310d:b0:9a2:24f9:fabe with SMTP id 13-20020a170906310d00b009a224f9fabemr2003596ejx.66.1695469818880; Sat, 23 Sep 2023 04:50:18 -0700 (PDT) Received: from hackbox.lan ([86.120.16.169]) by smtp.gmail.com with ESMTPSA id k15-20020a1709062a4f00b009ad8084e08asm3853310eje.0.2023.09.23.04.50.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 04:50:18 -0700 (PDT) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Pavel Machek , Len Brown , Greg Kroah-Hartman , Bjorn Andersson , Andy Gross , Konrad Dybcio , Mike Turquette , Stephen Boyd , Taniya Das Cc: linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, Taniya Das Subject: [RESEND v3 2/5] PM: domains: Add the domain HW-managed mode to the summary Date: Sat, 23 Sep 2023 14:50:05 +0300 Message-Id: <20230923115008.1698384-3-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230923115008.1698384-1-abel.vesa@linaro.org> References: <20230923115008.1698384-1-abel.vesa@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Sat, 23 Sep 2023 04:50:46 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777845085519107296 X-GMAIL-MSGID: 1777845085519107296 Now that genpd supports dynamically switching the control for an attached device between hardware- and software-mode, let's add this information to the genpd summary in debugfs. Suggested-by: Taniya Das Signed-off-by: Abel Vesa Reviewed-by: Ulf Hansson --- drivers/base/power/domain.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index dfb4f1de540d..93350e67b0e8 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -3171,6 +3171,15 @@ static void rtpm_status_str(struct seq_file *s, struct device *dev) seq_printf(s, "%-25s ", p); } +static void mode_status_str(struct seq_file *s, struct device *dev) +{ + struct generic_pm_domain_data *gpd_data; + + gpd_data = to_gpd_data(dev->power.subsys_data->domain_data); + + seq_printf(s, "%20s", gpd_data->hw_mode ? "HW" : "SW"); +} + static void perf_status_str(struct seq_file *s, struct device *dev) { struct generic_pm_domain_data *gpd_data; @@ -3229,6 +3238,7 @@ static int genpd_summary_one(struct seq_file *s, seq_printf(s, "\n %-50s ", kobj_path); rtpm_status_str(s, pm_data->dev); perf_status_str(s, pm_data->dev); + mode_status_str(s, pm_data->dev); kfree(kobj_path); } @@ -3245,8 +3255,9 @@ static int summary_show(struct seq_file *s, void *data) int ret = 0; seq_puts(s, "domain status children performance\n"); - seq_puts(s, " /device runtime status\n"); - seq_puts(s, "----------------------------------------------------------------------------------------------\n"); + seq_puts(s, " /device runtime status managed by\n"); + seq_puts(s, "------------------------------------------------------------------------------------------------------------\n"); + ret = mutex_lock_interruptible(&gpd_list_lock); if (ret) From patchwork Sat Sep 23 11:50:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 143893 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp157289vqu; Sat, 23 Sep 2023 05:51:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHLgxn1O9kNtmEJ8UjnfBX86hpXZF/4nKOUgclQWx+TmSWSgktgDbmntAKD1IvhpVR/SHi8 X-Received: by 2002:a05:6870:9112:b0:1bb:b9d6:a879 with SMTP id o18-20020a056870911200b001bbb9d6a879mr2559432oae.38.1695473472548; Sat, 23 Sep 2023 05:51:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695473472; cv=none; d=google.com; s=arc-20160816; b=P2cjuBHCCO5G89GwlHuHyJKrVycb1/Txzm883yf3BfYjEl8Io+Zs2Ulbp7xdNMg6DZ B9BE06ccZnh/RnTc6MU9QMuIXifHySQVw3jIA6ra6Q+uuzNKisL2zJgiVD6RGld6wDrD orOfYgFMbNHKuTVL5f2jtVsVRTrvw7dFgcKp8p+F4dPhBl/3S9BLmp7v8+HHv95tG11r WsMrWRPclUnA2Lwk7IVp7kql2ZePkqjYZ4suiZwvbggqgQEBnxol1mqVei1+/2rlKKgH OVDUj4IuYKyWC/EOSJP9vvGE9KNZjBIdH0GqhoUonAepIFetgMKgpHykGJFBqFMeGOIx hEOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Z22Rfgd7UjpYt4TAoqngtq5qLN6/k4A45SAesnG+QTI=; fh=1QHLcDy1ZRPn/5DTn+R3fdAhw9ianmkovn+vfO9VQJ4=; b=c3GDtuiHL4YqXkZMBoV3kbeAKdC945o/mRqOV3d1a4SgLlbhZod0VSuVB0rHe7EfgE x61CvpX8k2i7AcJCdP/ci+CdZKRvpoIbgTM5NLb2eFYcxmGaGz8pewkG5xWtMmKmES+F qL9qTwAs0hESiRR6ShI7qhi//xebuArn5psznQsJY9+oY0ZyyMJbsMg6M0gI74YeotJE ioc9sVWiHtJodsBjWgPV3DMYyWFyHhtlreA4mKZVMjbi9dvtIcz78VD6b6P5mt2M9pKF DDAyRza5hj9qzDwZCFDSSMINSlCnvkvfoplSutJoViM+cPi+fGoWg3AN2ovE6ngLu1cf KjUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=JLBeSQiC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id j185-20020a638bc2000000b00563f8ccc097si5927264pge.780.2023.09.23.05.51.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 05:51:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=JLBeSQiC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 07D16834E599; Sat, 23 Sep 2023 04:50:48 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231552AbjIWLug (ORCPT + 29 others); Sat, 23 Sep 2023 07:50:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231445AbjIWLu2 (ORCPT ); Sat, 23 Sep 2023 07:50:28 -0400 Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D9C641A6 for ; Sat, 23 Sep 2023 04:50:21 -0700 (PDT) Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-9b11cc499c2so182077566b.2 for ; Sat, 23 Sep 2023 04:50:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1695469820; x=1696074620; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Z22Rfgd7UjpYt4TAoqngtq5qLN6/k4A45SAesnG+QTI=; b=JLBeSQiCAXlpMl4ybd17rbwgJeipNxL4Xo+SnWlEwAmABKLVqMjqxkkr4ceB5c3RnR cpi+25uwJq7kUlyaZdiHTvvdV9+XDaMuqs9Tgmg7j6J2sO+sV4HCqlMyppyVZ21R8M2M VzHHWPbJHb9THQBWcdXIUj3cGfFqK2tE/+IazsTuBOhxfERebBmuoMpJ+XwUNSpWzpcp /p0gINNfScBa0naH80YEgjiD2arIXQivf/ydWV1yctIa3qpDoUEa0OnanhTh+9ut++WH u20We6AN1Ws0vgf1n69T5eRG1WdJVUCy6IPZfQgXac1o0AzVnAQhzbgX4d6NmuZA9FQO cZzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695469820; x=1696074620; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Z22Rfgd7UjpYt4TAoqngtq5qLN6/k4A45SAesnG+QTI=; b=WSEwtXih779byWnojn19/zwikT4GcPl7xhUiaEdy1tLyzSEjUcgz6cGTPcANjqn+bZ GezFnX70/Z5phcFYUVsHFy9GFgQ4LWe/GiF5cS3Jl6bi+L+hBKOxY1Rdld64dDDEPgK8 /tAvbBu5ITTHjT1YmIx1o+DTUQNLCc+mEo2o9QQ+8JP2uHTjsh2u53Q9aK9mH3whYadW O6RfuAp7OQUG9syja/YG5lbAgJLD7dk9os6htJ+nY65KhOeq89EKaTcgthMKpXKoLJLh Hu0O9c2l/iiJxsYtH1eyh73e2CBf4u4b7OJDok7j5YowVKzcb1qyhLYtRNGRU1elAlEg uorA== X-Gm-Message-State: AOJu0Yyff94/pSvTpPOWLgie4Sv/teo8L5NnNejSZagpKYgHQdvxTCmM Ano8mAfRY+mu1jDkFogzPIJUPA== X-Received: by 2002:a17:907:3d86:b0:9ae:729c:f651 with SMTP id he6-20020a1709073d8600b009ae729cf651mr1743569ejc.17.1695469820447; Sat, 23 Sep 2023 04:50:20 -0700 (PDT) Received: from hackbox.lan ([86.120.16.169]) by smtp.gmail.com with ESMTPSA id k15-20020a1709062a4f00b009ad8084e08asm3853310eje.0.2023.09.23.04.50.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 04:50:19 -0700 (PDT) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Pavel Machek , Len Brown , Greg Kroah-Hartman , Bjorn Andersson , Andy Gross , Konrad Dybcio , Mike Turquette , Stephen Boyd , Taniya Das Cc: linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, Jagadeesh Kona Subject: [RESEND v3 3/5] clk: qcom: gdsc: Add set and get hwmode callbacks to switch GDSC mode Date: Sat, 23 Sep 2023 14:50:06 +0300 Message-Id: <20230923115008.1698384-4-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230923115008.1698384-1-abel.vesa@linaro.org> References: <20230923115008.1698384-1-abel.vesa@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Sat, 23 Sep 2023 04:50:48 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777832791376372378 X-GMAIL-MSGID: 1777832791376372378 From: Jagadeesh Kona Add support for set and get hwmode callbacks to switch the GDSC between SW and HW modes. Currently, the GDSC is moved to HW control mode using HW_CTRL flag and if this flag is present, GDSC is moved to HW mode as part of GDSC enable itself. The intention is to keep the HW_CTRL flag functionality as is, since many older chipsets still use this flag. Introduce a new HW_CTRL_TRIGGER flag to switch the GDSC back and forth between HW/SW modes dynamically at runtime. If HW_CTRL_TRIGGER flag is present, register set_hwmode_dev callback to switch the GDSC mode which can be invoked from consumer drivers using dev_pm_genpd_set_hwmode function. Unlike HW_CTRL flag, HW_CTRL_TRIGGER won't move the GDSC to HW control mode as part of GDSC enable itself, GDSC will be moved to HW control mode only when consumer driver explicity calls dev_pm_genpd_set_hwmode to switch to HW mode. Also add the dev_pm_genpd_get_hwmode to allow the consumers to read the actual HW/SW mode from hardware. Signed-off-by: Jagadeesh Kona Signed-off-by: Abel Vesa --- drivers/clk/qcom/gdsc.c | 32 ++++++++++++++++++++++++++++++++ drivers/clk/qcom/gdsc.h | 1 + 2 files changed, 33 insertions(+) diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c index 5358e28122ab..c763524cd5da 100644 --- a/drivers/clk/qcom/gdsc.c +++ b/drivers/clk/qcom/gdsc.c @@ -363,6 +363,34 @@ static int gdsc_disable(struct generic_pm_domain *domain) return 0; } +static int gdsc_set_hwmode(struct generic_pm_domain *domain, struct device *dev, bool mode) +{ + struct gdsc *sc = domain_to_gdsc(domain); + + if (sc->rsupply && !regulator_is_enabled(sc->rsupply)) { + pr_err("Cannot set mode while parent is disabled\n"); + return -EIO; + } + + return gdsc_hwctrl(sc, mode); +} + +static bool gdsc_get_hwmode(struct generic_pm_domain *domain, struct device *dev) +{ + struct gdsc *sc = domain_to_gdsc(domain); + u32 val; + int ret; + + ret = regmap_read(sc->regmap, sc->gdscr, &val); + if (ret) + return ret; + + if (val & HW_CONTROL_MASK) + return true; + + return false; +} + static int gdsc_init(struct gdsc *sc) { u32 mask, val; @@ -451,6 +479,10 @@ static int gdsc_init(struct gdsc *sc) sc->pd.power_off = gdsc_disable; if (!sc->pd.power_on) sc->pd.power_on = gdsc_enable; + if (sc->flags & HW_CTRL_TRIGGER) { + sc->pd.set_hwmode_dev = gdsc_set_hwmode; + sc->pd.get_hwmode_dev = gdsc_get_hwmode; + } ret = pm_genpd_init(&sc->pd, NULL, !on); if (ret) diff --git a/drivers/clk/qcom/gdsc.h b/drivers/clk/qcom/gdsc.h index 803512688336..1e2779b823d1 100644 --- a/drivers/clk/qcom/gdsc.h +++ b/drivers/clk/qcom/gdsc.h @@ -67,6 +67,7 @@ struct gdsc { #define ALWAYS_ON BIT(6) #define RETAIN_FF_ENABLE BIT(7) #define NO_RET_PERIPH BIT(8) +#define HW_CTRL_TRIGGER BIT(9) struct reset_controller_dev *rcdev; unsigned int *resets; unsigned int reset_count; From patchwork Sat Sep 23 11:50:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 143892 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp157209vqu; Sat, 23 Sep 2023 05:50:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFCtSo7O6+Psli39quB3lAYesQ+FrYOt9ZBMdZC5nD3KBG4HNlawogH3J2dx+qxR2AWUbTe X-Received: by 2002:a05:6870:5b8a:b0:1ba:dbad:e70 with SMTP id em10-20020a0568705b8a00b001badbad0e70mr2573291oab.21.1695473458766; Sat, 23 Sep 2023 05:50:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695473458; cv=none; d=google.com; s=arc-20160816; b=cnsyqDqStc6OJ4TvbwbVVwpsXIGckEV67hh/cp50C3z4eYVN5lL08GuAffmDpi7ztc 3MPDQG2bWA//f33g61UdiNVzSLv/zC/LPdVONNtpJ02ND55TA8aDAnVzTfBl632YDrPq zbSBPEPn3nl7KBoDfXBDZPb+XONKIxUWshS94Ds9WIM19sdSQSRpQmg9ZBX9Q9t5yC62 h1+5NzyQkH+umHHjsnbzQs1ahb3MBo1t5pIVgfKAC5Gfwb/7Cv11lZxr8gZ6TqeES2D/ Y+BR45QpuT3Q1Xvc/7iy2UmnYisIqgO9ZXcfdPHg4jiL4IoDPquqtBnLyGWea8KL5I9H Uy9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=aqRk4B6eKO4+DTlXGIdciaqzHBfx/5bfeFOsXKr6qVY=; fh=1QHLcDy1ZRPn/5DTn+R3fdAhw9ianmkovn+vfO9VQJ4=; b=HCqiiTNtb+7B6f1N11HmWdW90i5YiInwUEteH6/hQqDPI4b2UVA4hEaDZNzcNFlt5l 993eZDwqvSTO2B+X7nlDhHfm/IiBVo1aa1KT+eAhRm+17cq9dCbtGvPwIunfdsTME+q6 C+JnIalnbugM0mBfUnE0RFW9WZOiZK9JcZRNRLpbz32Wj6agZIEdM5z83vNDvHNLWH7H NafEixl+9xMDFTgraYoj1SR7jE6gi/8443uA0L6bBaeM7PhiJk6uU7B+O2UabtAqAPJ7 w2IAzBtN9yX8HjTc1MCeY4uctTPrn4whQ2vpkoknuUXI+wVEgZzRzl15lSd+wf9sImRB HFIQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Fr6ZRbzh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id ca28-20020a056a02069c00b0056ba5e3f604si6667893pgb.352.2023.09.23.05.50.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 05:50:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Fr6ZRbzh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 38972834E5AC; Sat, 23 Sep 2023 04:50:59 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231503AbjIWLuj (ORCPT + 29 others); Sat, 23 Sep 2023 07:50:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231476AbjIWLua (ORCPT ); Sat, 23 Sep 2023 07:50:30 -0400 Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com [IPv6:2a00:1450:4864:20::231]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 99EE219F for ; Sat, 23 Sep 2023 04:50:23 -0700 (PDT) Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2c135cf2459so45752051fa.0 for ; Sat, 23 Sep 2023 04:50:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1695469822; x=1696074622; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aqRk4B6eKO4+DTlXGIdciaqzHBfx/5bfeFOsXKr6qVY=; b=Fr6ZRbzh+THiQKj7BOaugKhRzBi2YbMJJm38PigppjbdrqbfrPTfVQtWOD9lujcY4Z heEoN6qQxLXrC9glhbQ0n5Fl3Xl79uZAWAVLuP32c4IKzaqF/Uk869eGmv+zLFhH4i7F gFu5oHZNnv4ZYsHqyoez5SQFDmBPv6JO8qtUo7m6Rg2ALzRWY/xAb+1hvgh74jOLr0Pt Q8TTtz+wt1m1xY8B1Hwmbu96CvPCitAUpRZ2f2lh9NvZOZo0VtB4QeyHXVcjER7BXe8G YnCewKFlsTa9/Nfe7nLykRkqLnRSvBS2MXLoDBCJY7aSTQ4j5d/nVBYBdBbgoHSN95rV HJ8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695469822; x=1696074622; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aqRk4B6eKO4+DTlXGIdciaqzHBfx/5bfeFOsXKr6qVY=; b=v1x6kEdBNZLF/SY8VDSI2dnjRE4kgr66yYk+Z9ZuyCrFsh2MvIOrwEMODHujB+V/rj JQr+Z19DllyJKBosgfeBywWnF+e/VUYIJvbq6TuHYeKMhq7o3ZcY1nQQH6u+qSCpKcZf J9tBzjxvEP1D/gYpVTwMu14H1Zh2GsEAX97va3dRF3ur/GQfdf4T9pr9vOn78FffZm10 OFSmDG124w+fEUVrCLwdxLOsUd9VEYMTPtnPcCXvmccind0MUi78to1fJLONEOrQYEUU TxvF6CFU1Wntit2+TOPubgHyhmxM39LO9YUGPe2TYvZD5rC2TP0RlzRW7N72Wq2Ip/Iu pONw== X-Gm-Message-State: AOJu0Ywi2exSGuvSfJyBalWbu5xR4HeiSCcD8v4OpZiX9zeVsRa2IqdH 0xobsEUbhqJ81/fJsfUBRYhuJH7HcFakrwnsmr4HkQ== X-Received: by 2002:a2e:7a16:0:b0:2c0:192a:c567 with SMTP id v22-20020a2e7a16000000b002c0192ac567mr1567691ljc.20.1695469821952; Sat, 23 Sep 2023 04:50:21 -0700 (PDT) Received: from hackbox.lan ([86.120.16.169]) by smtp.gmail.com with ESMTPSA id k15-20020a1709062a4f00b009ad8084e08asm3853310eje.0.2023.09.23.04.50.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 04:50:21 -0700 (PDT) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Pavel Machek , Len Brown , Greg Kroah-Hartman , Bjorn Andersson , Andy Gross , Konrad Dybcio , Mike Turquette , Stephen Boyd , Taniya Das Cc: linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, Jagadeesh Kona Subject: [RESEND v3 4/5] clk: qcom: Use HW_CTRL_TRIGGER flag to switch video GDSC to HW mode Date: Sat, 23 Sep 2023 14:50:07 +0300 Message-Id: <20230923115008.1698384-5-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230923115008.1698384-1-abel.vesa@linaro.org> References: <20230923115008.1698384-1-abel.vesa@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Sat, 23 Sep 2023 04:50:59 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777832777630484739 X-GMAIL-MSGID: 1777832777630484739 From: Jagadeesh Kona The current HW_CTRL flag switches the video GDSC to HW control mode as part of GDSC enable itself, instead of that use HW_CTRL_TRIGGER flag to give consumer drivers more control and switch the GDSC mode as and when required. HW_CTRL_TRIGGER flag allows consumer drivers to switch the video GDSC to HW/SW control modes at runtime using dev_pm_genpd_set_hwmode API. Signed-off-by: Jagadeesh Kona Signed-off-by: Abel Vesa --- drivers/clk/qcom/videocc-sc7180.c | 2 +- drivers/clk/qcom/videocc-sc7280.c | 2 +- drivers/clk/qcom/videocc-sdm845.c | 4 ++-- drivers/clk/qcom/videocc-sm8250.c | 4 ++-- drivers/clk/qcom/videocc-sm8550.c | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/clk/qcom/videocc-sc7180.c b/drivers/clk/qcom/videocc-sc7180.c index 5b9b54f616b8..51439f7ba70c 100644 --- a/drivers/clk/qcom/videocc-sc7180.c +++ b/drivers/clk/qcom/videocc-sc7180.c @@ -166,7 +166,7 @@ static struct gdsc vcodec0_gdsc = { .pd = { .name = "vcodec0_gdsc", }, - .flags = HW_CTRL, + .flags = HW_CTRL_TRIGGER, .pwrsts = PWRSTS_OFF_ON, }; diff --git a/drivers/clk/qcom/videocc-sc7280.c b/drivers/clk/qcom/videocc-sc7280.c index 615695d82319..3d07b1e95986 100644 --- a/drivers/clk/qcom/videocc-sc7280.c +++ b/drivers/clk/qcom/videocc-sc7280.c @@ -236,7 +236,7 @@ static struct gdsc mvs0_gdsc = { .name = "mvs0_gdsc", }, .pwrsts = PWRSTS_OFF_ON, - .flags = HW_CTRL | RETAIN_FF_ENABLE, + .flags = HW_CTRL_TRIGGER | RETAIN_FF_ENABLE, }; static struct gdsc mvsc_gdsc = { diff --git a/drivers/clk/qcom/videocc-sdm845.c b/drivers/clk/qcom/videocc-sdm845.c index c77a4dd5d39c..dad011c48973 100644 --- a/drivers/clk/qcom/videocc-sdm845.c +++ b/drivers/clk/qcom/videocc-sdm845.c @@ -260,7 +260,7 @@ static struct gdsc vcodec0_gdsc = { }, .cxcs = (unsigned int []){ 0x890, 0x930 }, .cxc_count = 2, - .flags = HW_CTRL | POLL_CFG_GDSCR, + .flags = HW_CTRL_TRIGGER | POLL_CFG_GDSCR, .pwrsts = PWRSTS_OFF_ON, }; @@ -271,7 +271,7 @@ static struct gdsc vcodec1_gdsc = { }, .cxcs = (unsigned int []){ 0x8d0, 0x950 }, .cxc_count = 2, - .flags = HW_CTRL | POLL_CFG_GDSCR, + .flags = HW_CTRL_TRIGGER | POLL_CFG_GDSCR, .pwrsts = PWRSTS_OFF_ON, }; diff --git a/drivers/clk/qcom/videocc-sm8250.c b/drivers/clk/qcom/videocc-sm8250.c index ad46c4014a40..c1b73d852f1c 100644 --- a/drivers/clk/qcom/videocc-sm8250.c +++ b/drivers/clk/qcom/videocc-sm8250.c @@ -293,7 +293,7 @@ static struct gdsc mvs0_gdsc = { .pd = { .name = "mvs0_gdsc", }, - .flags = HW_CTRL, + .flags = HW_CTRL_TRIGGER, .pwrsts = PWRSTS_OFF_ON, }; @@ -302,7 +302,7 @@ static struct gdsc mvs1_gdsc = { .pd = { .name = "mvs1_gdsc", }, - .flags = HW_CTRL, + .flags = HW_CTRL_TRIGGER, .pwrsts = PWRSTS_OFF_ON, }; diff --git a/drivers/clk/qcom/videocc-sm8550.c b/drivers/clk/qcom/videocc-sm8550.c index 3bb136ec31b1..504b2ef264eb 100644 --- a/drivers/clk/qcom/videocc-sm8550.c +++ b/drivers/clk/qcom/videocc-sm8550.c @@ -324,7 +324,7 @@ static struct gdsc video_cc_mvs0_gdsc = { }, .pwrsts = PWRSTS_OFF_ON, .parent = &video_cc_mvs0c_gdsc.pd, - .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL, + .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL_TRIGGER, }; static struct gdsc video_cc_mvs1c_gdsc = { @@ -349,7 +349,7 @@ static struct gdsc video_cc_mvs1_gdsc = { }, .pwrsts = PWRSTS_OFF_ON, .parent = &video_cc_mvs1c_gdsc.pd, - .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL, + .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL_TRIGGER, }; static struct clk_regmap *video_cc_sm8550_clocks[] = {