From patchwork Thu Nov 17 05:31:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 21437 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp225370wrr; Wed, 16 Nov 2022 21:33:17 -0800 (PST) X-Google-Smtp-Source: AA0mqf7ojqthn/ExDQQtD+lFEUUGZtoiwHVTqP2YujbzIcHpXoHOlnGJ4b3Fd5qAazMrtrTr+XpN X-Received: by 2002:a17:906:dcc:b0:7ad:69eb:90c3 with SMTP id p12-20020a1709060dcc00b007ad69eb90c3mr897975eji.285.1668663197504; Wed, 16 Nov 2022 21:33:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668663197; cv=none; d=google.com; s=arc-20160816; b=LoD+11JChR1QKNFhprfoJeaQrwrdFfwWZu8Ld44f9RnVLzR1+OiuhGL85foeRcRG6F qPrCZA/z9hDZImgWfts8lveeoaTEuJ70/rJkQ5krpf0dR8zKaW/s5LtwRRVKyILOTDE/ RwKA8M+VFxGubRftowa9PKEHbAxoMKAoWL8we1o4dFSLnh+Cg29T8ddHQTW5Y/+jBBUy 0dVdTnDt8gDc+VxoK1snGf2lKjuz6BACI5GxsYC3DCyV04wa+94cePeR7lZGT9tJKb/l qI/eHpg+4yTnjr70H0elwlmBNf059iuCZndOMMjrmEfCMeYCE1Dn9Jaj/H2Qr5TlqalY UZOg== 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=J2RysX7TiVCclv2UJBtgXviDFq2/T3mQypqGPEA1b7s=; b=Q9HRfaJYPjpKRVIJFQDF+XhHpf/7eMuVmo3L6xwq5mjntUPZTDwTa2i4ntkxVNPW1p 0nfyHbcjU9gxRbSD8ucDKXhOgNCp5UUdOHl/Bur2Hj7njVBorgDPmteJJnRqpr4cEGtM kuzzM0dxFlvO3Yuvh+eZMTtfkEWKRMko3hP5yZTk4ILhhy7g52s63FgOlipYDu7lzP+J qq2UZeYjc46svXb6g48pobHyiRNxR4k2zkX5iUqx5qSSj5SXwU1KrImMLs0iKacuUase n5Q/rOPVcu/js/UcxGkQ7jsornBmjotyowVTwvPUFVTF/BWuad6AJav4p2TqPsGw6mtY mggA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=RZsVifCu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l16-20020a170906795000b0078e1e216396si15249800ejo.66.2022.11.16.21.32.54; Wed, 16 Nov 2022 21:33:17 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=RZsVifCu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234718AbiKQFcF (ORCPT + 99 others); Thu, 17 Nov 2022 00:32:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229658AbiKQFcC (ORCPT ); Thu, 17 Nov 2022 00:32:02 -0500 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 34146554DC for ; Wed, 16 Nov 2022 21:32:01 -0800 (PST) Received: by mail-pl1-x62a.google.com with SMTP id l2so599178pld.13 for ; Wed, 16 Nov 2022 21:32:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; 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=J2RysX7TiVCclv2UJBtgXviDFq2/T3mQypqGPEA1b7s=; b=RZsVifCuuHh4V2cxHmbtLYLghbm1LoZSUWYte+QctCQW1n0hXcgdQfISnQVDiXRd4d OTtW281b+r7/C8nkpSesqja0z3EkWcRrWujsthf3dQi+PL0wKCsll/S6gT1HTE/Ahv7S oPiU38AWsO9mG3YspF5IePBxZC1cK5bZgd6AfXtA73gvXJIzgWObGX5qmMXcwpabYqaD LJGiwb6dWfP5sXX8ac/rSCQZkzMyxASwAcH/xZP/DzMz68duHb2on/psSLpqbNum4a5w GYr1M8pfADMvBsAgDy7UFaPE/cn49s05qL91v6tXGr+kzJBMn5mEAJqFRQWYVOgLbDvc 9XdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=J2RysX7TiVCclv2UJBtgXviDFq2/T3mQypqGPEA1b7s=; b=2p//P4shsZm5AZaEYXWasd+jJmC5+dKH3Q23ZgfIUr5kOs8twsNBBRwPFVjkQu4Rd6 IWiF59brcyEbZeeWdNpTjFOpFN7F06nFLIfQ1vtrxC2Z09w210/k74jS87/07qxvReRe YNEC0VmLJwcq3QBTrlOcLFPwrg47yh3Mf0p9LkZAd0gmp45uxt3C3KqBe6HFsK7kl+bF ELtRDoXCNklPSOePJzBAO+HWQ7tATaRTUOv73n4CoH7s8MxXAjUAee1m+9ne0PFMp3sr 8bBbm8RuGYX3nj5Z0QZ0qkdZTEQtzOS/50tkOJHgnqI9dD/JwI0ndLwvKlSRbGEYwN6H 3hxw== X-Gm-Message-State: ANoB5plpJ6sNmBA0xiCpG0EXXfQw3UXcjKLJ16Zg0ykSdeSosZXAzqiU 6kVngrZ+UtIi6ZV1ahEU3S2H X-Received: by 2002:a17:902:d38c:b0:186:8c19:d436 with SMTP id e12-20020a170902d38c00b001868c19d436mr1245857pld.96.1668663120669; Wed, 16 Nov 2022 21:32:00 -0800 (PST) Received: from localhost.localdomain ([117.193.208.31]) by smtp.gmail.com with ESMTPSA id q4-20020a17090311c400b001865c298588sm96600plh.258.2022.11.16.21.31.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 21:31:59 -0800 (PST) From: Manivannan Sadhasivam To: andersson@kernel.org, viresh.kumar@linaro.org, krzysztof.kozlowski+dt@linaro.org, rafael@kernel.org, robh+dt@kernel.org Cc: johan@kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Manivannan Sadhasivam , Rob Herring Subject: [PATCH v7 1/4] dt-bindings: cpufreq: cpufreq-qcom-hw: Add cpufreq clock provider Date: Thu, 17 Nov 2022 11:01:42 +0530 Message-Id: <20221117053145.10409-2-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221117053145.10409-1-manivannan.sadhasivam@linaro.org> References: <20221117053145.10409-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749720181000763561?= X-GMAIL-MSGID: =?utf-8?q?1749720181000763561?= Qualcomm platforms making use of CPUFreq HW Engine (EPSS/OSM) supply clocks to the CPU cores. Document the same in the binding to reflect the actual implementation. CPUFreq HW will become the clock provider and CPU cores will become the clock consumers. The clock index for each CPU core is based on the frequency domain index. Signed-off-by: Manivannan Sadhasivam Reviewed-by: Rob Herring --- .../devicetree/bindings/cpufreq/cpufreq-qcom-hw.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-qcom-hw.yaml b/Documentation/devicetree/bindings/cpufreq/cpufreq-qcom-hw.yaml index e58c55f78aaa..676d369a6fdd 100644 --- a/Documentation/devicetree/bindings/cpufreq/cpufreq-qcom-hw.yaml +++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-qcom-hw.yaml @@ -56,6 +56,9 @@ properties: '#freq-domain-cells': const: 1 + '#clock-cells': + const: 1 + required: - compatible - reg @@ -83,6 +86,7 @@ examples: enable-method = "psci"; next-level-cache = <&L2_0>; qcom,freq-domain = <&cpufreq_hw 0>; + clocks = <&cpufreq_hw 0>; L2_0: l2-cache { compatible = "cache"; cache-unified; @@ -103,6 +107,7 @@ examples: enable-method = "psci"; next-level-cache = <&L2_100>; qcom,freq-domain = <&cpufreq_hw 0>; + clocks = <&cpufreq_hw 0>; L2_100: l2-cache { compatible = "cache"; cache-unified; @@ -118,6 +123,7 @@ examples: enable-method = "psci"; next-level-cache = <&L2_200>; qcom,freq-domain = <&cpufreq_hw 0>; + clocks = <&cpufreq_hw 0>; L2_200: l2-cache { compatible = "cache"; cache-unified; @@ -133,6 +139,7 @@ examples: enable-method = "psci"; next-level-cache = <&L2_300>; qcom,freq-domain = <&cpufreq_hw 0>; + clocks = <&cpufreq_hw 0>; L2_300: l2-cache { compatible = "cache"; cache-unified; @@ -148,6 +155,7 @@ examples: enable-method = "psci"; next-level-cache = <&L2_400>; qcom,freq-domain = <&cpufreq_hw 1>; + clocks = <&cpufreq_hw 1>; L2_400: l2-cache { compatible = "cache"; cache-unified; @@ -163,6 +171,7 @@ examples: enable-method = "psci"; next-level-cache = <&L2_500>; qcom,freq-domain = <&cpufreq_hw 1>; + clocks = <&cpufreq_hw 1>; L2_500: l2-cache { compatible = "cache"; cache-unified; @@ -178,6 +187,7 @@ examples: enable-method = "psci"; next-level-cache = <&L2_600>; qcom,freq-domain = <&cpufreq_hw 1>; + clocks = <&cpufreq_hw 1>; L2_600: l2-cache { compatible = "cache"; cache-unified; @@ -193,6 +203,7 @@ examples: enable-method = "psci"; next-level-cache = <&L2_700>; qcom,freq-domain = <&cpufreq_hw 1>; + clocks = <&cpufreq_hw 1>; L2_700: l2-cache { compatible = "cache"; cache-unified; @@ -215,6 +226,7 @@ examples: clock-names = "xo", "alternate"; #freq-domain-cells = <1>; + #clock-cells = <1>; }; }; ... From patchwork Thu Nov 17 05:31:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 21442 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp225871wrr; Wed, 16 Nov 2022 21:35:10 -0800 (PST) X-Google-Smtp-Source: AA0mqf69qsX9VLZZYzT24HsQKPZlzkIHSh2uOFcjqhOEo8ZUFzgF7xMDUSIevQ6rllSDDeRPGwfW X-Received: by 2002:a17:907:170a:b0:7ad:a198:3177 with SMTP id le10-20020a170907170a00b007ada1983177mr824183ejc.750.1668663310097; Wed, 16 Nov 2022 21:35:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668663310; cv=none; d=google.com; s=arc-20160816; b=ebyAfX3vBOsoGxMcHYXnsQDQqED1fGTWkP0A5dhenq1P5nQ+ZSnmzBSIJOXq60ttBN ecj0yiVLMo5aQgsIOs95QtfBp6PfrOkqYRXebhl4W0uZZn2HE01XU1E/DEUGhmeDDtjF HSrSEJPrr8+YBZkrEniGRLiC067bp9adr8ZJoi8W3NFRjF2phG5ZOj8Qw27uxRG3aAB6 y9R57PBNUdDkruj1VIfyJZRXJHa2kFZPrvr2ePJFnfACuV1ktY/RGtevZeH8bZT6A6/Q WWo6Dt4pC9Uf/F7OaZJijFCkRIjymgixILJlyKNRuu371GwJulqvElComOkyMW3VnuiQ jvaA== 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=cWX3PFtX+iNvvcqKHYXPbN+3ItiEZ3sX7UGhc0uTyP8=; b=s7yOikshI37zI4CzZiaJuUM2ktX6LsIM3G1yiG8j3VT5YN5i2pVwyjyG6nOwYtCfc6 NRWEbh2pfJ7sFHBhaO2VatU6qv/DT4zUIGlrHrulwSmkVsz+0PcwnpZSfihR/MYm4YxV oMlBnx/j7UCUhpF2fFI7RbbWvHlHQcmaoMEv2b5UbPH4BniDJSXzkRQisb0pqMEw4Er9 6AVMLswPvKKTHrM51q3Ot73ItFM3Ve93qfrYgwITCkoj7usp7W9m3NfUohIHe4+P0F+1 XRMcnbmNlVkjt4cXRgIeaL7m2XSlokaXQ4d2NH3DBS8umyWRYZFZZ9qN8xaqaVIvWoXw AHIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="PR/8mCOn"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y20-20020a056402441400b004587e99bcc2si115721eda.383.2022.11.16.21.34.47; Wed, 16 Nov 2022 21:35:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="PR/8mCOn"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239118AbiKQFcN (ORCPT + 99 others); Thu, 17 Nov 2022 00:32:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38294 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234503AbiKQFcL (ORCPT ); Thu, 17 Nov 2022 00:32:11 -0500 Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5A4358BCE for ; Wed, 16 Nov 2022 21:32:05 -0800 (PST) Received: by mail-pg1-x52d.google.com with SMTP id 6so1033846pgm.6 for ; Wed, 16 Nov 2022 21:32:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; 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=cWX3PFtX+iNvvcqKHYXPbN+3ItiEZ3sX7UGhc0uTyP8=; b=PR/8mCOnSsExiSeGPcrsDsleREB/V6THyCi3uFVYT0j0AN5xogqVE3FLHGytVZcWU4 kB2+/E1fXz3G8tOdtQZJv62+cYuQYbCDqOTRuJk9Nl3DfGNHUaepKJxMKKBfiV5mj6NT hNvdH6hk7hESk5PBu5cMBukPXuuhmgzS5XXW67ZaryqwsmDtbDZkoRcIQpOCiPFyH5FJ Tc+wzJ4zbz8lsPF8hreHyuD8Zipsqgx63uVcvMlOOhw8mEG3oi1t1R7hBabZxme/JJ8A 8/FbAP//ZlNkdEEHUH5leHxw3lvbaIW1P7hrr3tR4H72HVWY4Kr0LJSEIOXpnmfl+Mtm 8faQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=cWX3PFtX+iNvvcqKHYXPbN+3ItiEZ3sX7UGhc0uTyP8=; b=7+jdXIa2E6a8TsArCKus5E+1qOalX7+37PHcAX5T9UlIr4is+n6h+3RWiziJaKSYkx Vkd1p32uMv8RKtC4mFhzrJlkMZO1BNY4fIWRdpO5ft9/brR/54XmsoRuGhXpH0lLm8EL Vehx83kVa6BU8w5LadK8vH9Pvda9NHH5xsLAWndHH38JiM3KPr/6GO+9Iid0Arn5P7dl tXdD1B3LP5h3Ugs7lYT8r7a+YNJd+g/IGwIIFBohl3VoM5wkEQd5Sl8ykgeWsHa2gA3z sDn3BHnQVq4RuNVkBTOIvLW/4rUurj6PBV9WKVNdxhdAdE5pBhp0oEFUt15zQxU4rBSO nJAQ== X-Gm-Message-State: ANoB5pnilzmGMtARZfWZjtkZ/7tNG7Yff11URQluHLefDEZpm/6sBYVE pfRBzUknnrnMa3AHDL9NZTkU X-Received: by 2002:a65:6d95:0:b0:46f:f482:6920 with SMTP id bc21-20020a656d95000000b0046ff4826920mr670439pgb.327.1668663125387; Wed, 16 Nov 2022 21:32:05 -0800 (PST) Received: from localhost.localdomain ([117.193.208.31]) by smtp.gmail.com with ESMTPSA id q4-20020a17090311c400b001865c298588sm96600plh.258.2022.11.16.21.32.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 21:32:04 -0800 (PST) From: Manivannan Sadhasivam To: andersson@kernel.org, viresh.kumar@linaro.org, krzysztof.kozlowski+dt@linaro.org, rafael@kernel.org, robh+dt@kernel.org Cc: johan@kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v7 2/4] arm64: dts: qcom: sm8450: Supply clock from cpufreq node to CPUs Date: Thu, 17 Nov 2022 11:01:43 +0530 Message-Id: <20221117053145.10409-3-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221117053145.10409-1-manivannan.sadhasivam@linaro.org> References: <20221117053145.10409-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749720299099900431?= X-GMAIL-MSGID: =?utf-8?q?1749720299099900431?= Qualcomm platforms making use of CPUFreq HW Engine (EPSS/OSM) supply clocks to the CPU cores. But this relationship is not represented in DTS so far. So let's make cpufreq node as the clock provider and CPU nodes as the consumers. The clock index for each CPU node is based on the frequency domain index. Signed-off-by: Manivannan Sadhasivam --- arch/arm64/boot/dts/qcom/sm8450.dtsi | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sm8450.dtsi b/arch/arm64/boot/dts/qcom/sm8450.dtsi index d32f08df743d..234d2722a4fa 100644 --- a/arch/arm64/boot/dts/qcom/sm8450.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8450.dtsi @@ -51,6 +51,7 @@ CPU0: cpu@0 { power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 0>; #cooling-cells = <2>; + clocks = <&cpufreq_hw 0>; L2_0: l2-cache { compatible = "cache"; next-level-cache = <&L3_0>; @@ -70,6 +71,7 @@ CPU1: cpu@100 { power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 0>; #cooling-cells = <2>; + clocks = <&cpufreq_hw 0>; L2_100: l2-cache { compatible = "cache"; next-level-cache = <&L3_0>; @@ -86,6 +88,7 @@ CPU2: cpu@200 { power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 0>; #cooling-cells = <2>; + clocks = <&cpufreq_hw 0>; L2_200: l2-cache { compatible = "cache"; next-level-cache = <&L3_0>; @@ -102,6 +105,7 @@ CPU3: cpu@300 { power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 0>; #cooling-cells = <2>; + clocks = <&cpufreq_hw 0>; L2_300: l2-cache { compatible = "cache"; next-level-cache = <&L3_0>; @@ -118,6 +122,7 @@ CPU4: cpu@400 { power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 1>; #cooling-cells = <2>; + clocks = <&cpufreq_hw 1>; L2_400: l2-cache { compatible = "cache"; next-level-cache = <&L3_0>; @@ -134,6 +139,7 @@ CPU5: cpu@500 { power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 1>; #cooling-cells = <2>; + clocks = <&cpufreq_hw 1>; L2_500: l2-cache { compatible = "cache"; next-level-cache = <&L3_0>; @@ -151,6 +157,7 @@ CPU6: cpu@600 { power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 1>; #cooling-cells = <2>; + clocks = <&cpufreq_hw 1>; L2_600: l2-cache { compatible = "cache"; next-level-cache = <&L3_0>; @@ -167,6 +174,7 @@ CPU7: cpu@700 { power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 2>; #cooling-cells = <2>; + clocks = <&cpufreq_hw 2>; L2_700: l2-cache { compatible = "cache"; next-level-cache = <&L3_0>; @@ -3075,6 +3083,7 @@ cpufreq_hw: cpufreq@17d91000 { ; interrupt-names = "dcvsh-irq-0", "dcvsh-irq-1", "dcvsh-irq-2"; #freq-domain-cells = <1>; + #clock-cells = <1>; }; gem_noc: interconnect@19100000 { From patchwork Thu Nov 17 05:31:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 21439 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp225574wrr; Wed, 16 Nov 2022 21:34:09 -0800 (PST) X-Google-Smtp-Source: AA0mqf4G91ipIAdbE8gS7yXCy72oltJNBDexh6JFpvILvEIP3d05PaeRWq1LpfHiQfqUtBo69xI2 X-Received: by 2002:aa7:d2c6:0:b0:468:86cf:1da6 with SMTP id k6-20020aa7d2c6000000b0046886cf1da6mr786898edr.427.1668663249579; Wed, 16 Nov 2022 21:34:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668663249; cv=none; d=google.com; s=arc-20160816; b=r2msmFs3KcqggVer/IFvOEcwr+1ibqlzuna21w/JV5l8gmMm8NkQ9hLCg71QEmm+7U JUaen8wJloCvVRBjkLhlyho8YeYfRn/VNCyHqg4XYtZzIevVC+qqhh8ewT52lVgyhEqo 5oBogCYgAhvmIMwkUxOK+VEcU9r45LpFTr8c9mRqgSLuDs4dGEKFNSwxIBwrGT5KYl5t Nv2fNi9eJMkPDaOFU0VH/F0lmSTbiz7uQ7Kbs5pmWW4p4peemgBCb52lR04c+/Jw7IQC rbgQ6yYB/qordmKkDCHHZxgy2yxj+ZF9lv2GDt+RnxvXUDlMvVGHng8GmCOGxnTw6Gp+ Ml1A== 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=4OvsIbRKjLs7ZX9h1wlc3YCPycyX8ACIte6CDckfX6U=; b=04IzPQ9SSSOOsuCAEJ9aMsl4f2j5/PUgAEUHM31VZ3N1ZsGGXRb8Cd9jMNDVQ/85jm TjWb1H0jVpiMVctCzDyLuCGvi00yzHnZtCYrWfCmsi0TAoy2zYL/tn5yrL8yGtC1U8PX HXy6k76LFjiHiJe6P6GVNxYSDszs2HLBbuTjvTJtUQCcmSU6X3hH0Vk5HVJVP43lbFPK l1XRuSsfb9ScHBkTS5QLu+qcItQYysv0rmNzwWFP+TrFE5QEuYBz1OlzFEzkQXlhnZZn 5m9RVrxjsfmylVSuK4nW17bedulXq4AdYzSHuAMAzLW8TZ9DNoLoxr1FSL/oxcRW1kau bHzQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BGyW9bWV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id wt13-20020a170906ee8d00b0073d9c29892csi10488465ejb.939.2022.11.16.21.33.46; Wed, 16 Nov 2022 21:34:09 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BGyW9bWV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239066AbiKQFcS (ORCPT + 99 others); Thu, 17 Nov 2022 00:32:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38374 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239057AbiKQFcN (ORCPT ); Thu, 17 Nov 2022 00:32:13 -0500 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F01963151 for ; Wed, 16 Nov 2022 21:32:10 -0800 (PST) Received: by mail-pl1-x62a.google.com with SMTP id l2so599434pld.13 for ; Wed, 16 Nov 2022 21:32:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; 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=4OvsIbRKjLs7ZX9h1wlc3YCPycyX8ACIte6CDckfX6U=; b=BGyW9bWVtdS5mgE3nioOqgLfTm7+DHwgyeTpo9L9qsBEO6dKaPKCgo/Ig1VwqrGrPv K5NIJDOMx1Hzb1pWHMIx5mXDUPyIlxFpDGl2sF5RSQSV3QHzQAlswolZUrnAxhgCJXUp 56DNxzLShqfz/5xcKzgZl6psOoflOrZZ1m1KhncJVCtJos2k/20YD/4SN4l8N6cA0Zd3 EVGOBcSCagsTCLtJ89CgljI+kbrwFjQjJJVWklnHWjFy+LC9+9xHOgxnDXEVG1dA8uQd LM4cK0MCtMr7ySTjD1UVQSzmQSfBR2SEwCYJkPxGGQhkOIs5U93000lP4N8LI99X2XzC Hyhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=4OvsIbRKjLs7ZX9h1wlc3YCPycyX8ACIte6CDckfX6U=; b=cSR6heRF3FkgoTo84sQZenU04+LesAgExaZHeotsmAKrO6O3zo5Eb2YvkBOwW9cdZv rMcSpUycnfjA4En199rlE5yZ+OMnuaXGC9mOhC0diSCgf5FzwTabQ69J1mNzKCWSzVi7 dgCkHz3NuMkbir1rYSbYuzLpGYX9cZeAMPIcTwRgb+fdEAW/u0mZKUeLaVU3VgC0j551 VGp2XEcRmQbXyRGtMoM9NaNSVmF9b0QrCr19CCLlk+fpCBUuoDRvWCG9cAGkHujaZgky jQPjVGk8jLbhJ2cq6IEPLMKOwnn+dfmdHXINGBCZUrdQ5/pGY/CfrqsuQjPznBVo0Jxp I9RA== X-Gm-Message-State: ANoB5pn2ZOob3c2Qq7g5Gcgy5h0PNz0OHcF7apcE5YfJ7E/9zh0WzMHw LLCfcnvoq2VPdXEuskXfSz+3 X-Received: by 2002:a17:90a:dd83:b0:218:61bd:d00d with SMTP id l3-20020a17090add8300b0021861bdd00dmr4554709pjv.236.1668663129783; Wed, 16 Nov 2022 21:32:09 -0800 (PST) Received: from localhost.localdomain ([117.193.208.31]) by smtp.gmail.com with ESMTPSA id q4-20020a17090311c400b001865c298588sm96600plh.258.2022.11.16.21.32.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 21:32:08 -0800 (PST) From: Manivannan Sadhasivam To: andersson@kernel.org, viresh.kumar@linaro.org, krzysztof.kozlowski+dt@linaro.org, rafael@kernel.org, robh+dt@kernel.org Cc: johan@kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v7 3/4] cpufreq: qcom-hw: Add CPU clock provider support Date: Thu, 17 Nov 2022 11:01:44 +0530 Message-Id: <20221117053145.10409-4-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221117053145.10409-1-manivannan.sadhasivam@linaro.org> References: <20221117053145.10409-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749720235858972541?= X-GMAIL-MSGID: =?utf-8?q?1749720235858972541?= Qcom CPUFreq hardware (EPSS/OSM) controls clock and voltage to the CPU cores. But this relationship is not represented with the clk framework so far. So, let's make the qcom-cpufreq-hw driver a clock provider. This makes the clock producer/consumer relationship cleaner and is also useful for CPU related frameworks like OPP to know the frequency at which the CPUs are running. The clock frequency provided by the driver is for each frequency domain. We cannot get the frequency of each CPU core because, not all platforms support per-core DCVS feature. Also the frequency supplied by the driver is the actual frequency that comes out of the EPSS/OSM block after the DCVS operation. This frequency is not same as what the CPUFreq framework has set but it is the one that gets supplied to the CPUs after throttling by LMh. Signed-off-by: Manivannan Sadhasivam --- drivers/cpufreq/qcom-cpufreq-hw.c | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c index 5e0598730a04..1faa325d3e52 100644 --- a/drivers/cpufreq/qcom-cpufreq-hw.c +++ b/drivers/cpufreq/qcom-cpufreq-hw.c @@ -4,6 +4,7 @@ */ #include +#include #include #include #include @@ -54,6 +55,7 @@ struct qcom_cpufreq_data { bool cancel_throttle; struct delayed_work throttle_work; struct cpufreq_policy *policy; + struct clk_hw cpu_clk; bool per_core_dcvs; @@ -615,8 +617,20 @@ static struct cpufreq_driver cpufreq_qcom_hw_driver = { .ready = qcom_cpufreq_ready, }; +static unsigned long qcom_cpufreq_hw_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) +{ + struct qcom_cpufreq_data *data = container_of(hw, struct qcom_cpufreq_data, cpu_clk); + + return qcom_lmh_get_throttle_freq(data); +} + +static const struct clk_ops qcom_cpufreq_hw_clk_ops = { + .recalc_rate = qcom_cpufreq_hw_recalc_rate, +}; + static int qcom_cpufreq_hw_driver_probe(struct platform_device *pdev) { + struct clk_hw_onecell_data *clk_data; struct device *dev = &pdev->dev; struct device *cpu_dev; struct clk *clk; @@ -659,8 +673,15 @@ static int qcom_cpufreq_hw_driver_probe(struct platform_device *pdev) qcom_cpufreq.soc_data = of_device_get_match_data(dev); + clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, num_domains), GFP_KERNEL); + if (!clk_data) + return -ENOMEM; + + clk_data->num = num_domains; + for (i = 0; i < num_domains; i++) { struct qcom_cpufreq_data *data = &qcom_cpufreq.data[i]; + struct clk_init_data clk_init = {}; struct resource *res; void __iomem *base; @@ -672,6 +693,30 @@ static int qcom_cpufreq_hw_driver_probe(struct platform_device *pdev) data->base = base; data->res = res; + + /* Register CPU clock for each frequency domain */ + clk_init.name = kasprintf(GFP_KERNEL, "qcom_cpufreq%d", i); + if (!clk_init.name) + return -ENOMEM; + + clk_init.flags = CLK_GET_RATE_NOCACHE; + clk_init.ops = &qcom_cpufreq_hw_clk_ops; + data->cpu_clk.init = &clk_init; + + ret = devm_clk_hw_register(dev, &data->cpu_clk); + if (ret < 0) { + dev_err(dev, "Failed to register clock %d: %d\n", i, ret); + return ret; + } + + clk_data->hws[i] = &data->cpu_clk; + kfree(clk_init.name); + } + + ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data); + if (ret < 0) { + dev_err(dev, "Failed to add clock provider\n"); + return ret; } ret = cpufreq_register_driver(&cpufreq_qcom_hw_driver); From patchwork Thu Nov 17 05:31:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 21441 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp225726wrr; Wed, 16 Nov 2022 21:34:36 -0800 (PST) X-Google-Smtp-Source: AA0mqf4f4UsXqiCUNz84KFniibwU+pQPi0nQbs3rCxdyHk4JpbtUnVPcEF/z+fwmn0Hz+lFXMfDD X-Received: by 2002:a17:906:190c:b0:7ae:c1b2:d912 with SMTP id a12-20020a170906190c00b007aec1b2d912mr783988eje.577.1668663276532; Wed, 16 Nov 2022 21:34:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668663276; cv=none; d=google.com; s=arc-20160816; b=j11gRvVP6P/pXMpV2f2fw3ss7c3czq8fswZZW9B/cNy0j4aF4H4OqyteuqAAKqLJeg cy5RA1lEDC0A1gaJaZ5BLAcR/qwCpx2N8Hgcd4gWyFnkL2NpAJGYEtoef3QH+whUEKF4 TglI+GhQxNp2Om4uD4NtOYsoCd95RI5KUyXVYOi+kvsQGVd5rBvTg4cI7YKWGRA9asMm QYqzZhxaIBawq9TWCh/UGFLznn6I9o2msDfSBQEtKaW06h1fF00bxKGXZyvLAGFbOhCq Y+U82BvRu/c+fptImfxwfg9bLVhTMg/QKAAXesvJ/H27SvkCjX+SS4o9nmfO7CEYI+/H noZw== 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=s/wG+QZxohAkdtGSCZUjkm9USP+zFO96InHp16ZHrwI=; b=iUYljhVrVn2bRGeg5nOK5DxgzRp8IeexojP93Z2CydHRtQSULJh0U6lk5+hAoUWRp1 wEgDdu8N86G0y4KWwhB5mUxBCJh7TLYRlZTMYbOtrAZPmQOuLw2sVcjcJwOOazkiBst2 RYgvGatIkxg+FsFSvTAy9C58ntfg7YxYrS0bNB38FLf9IbpkgB9Zdsv6mw2YHtVBrJmu wJlozu/7pbcC0w1NjbQnJeO76Pnwk+CnB4A+LgAYZWxZtMjwh98WTK+ojiNWpwZPHexy GCDPHeJkNK2FrjGLBfhPMZG9Wo5DMNwINy3p4TL+adPvwptrKehtnn/OxmvGAjtpSrny qavg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ixACoPOp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z12-20020a05640240cc00b0046154f0f866si139455edb.159.2022.11.16.21.34.14; Wed, 16 Nov 2022 21:34:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ixACoPOp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239288AbiKQFck (ORCPT + 99 others); Thu, 17 Nov 2022 00:32:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239145AbiKQFcR (ORCPT ); Thu, 17 Nov 2022 00:32:17 -0500 Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5CD995D683 for ; Wed, 16 Nov 2022 21:32:15 -0800 (PST) Received: by mail-pg1-x52d.google.com with SMTP id r18so998905pgr.12 for ; Wed, 16 Nov 2022 21:32:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; 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=s/wG+QZxohAkdtGSCZUjkm9USP+zFO96InHp16ZHrwI=; b=ixACoPOpJAo1XabXh0ai5MRohX1nfzDnP+c3V/0XnhmxGFg9bQBQKfx+bZehp287Iw tA3P29CfXHaYoVJc84FH804TqJsKSMCHH+XEKIP8es2QGKWIF6FaPN6T06uxw5ElSWor uC858F1alnV9dw8S4CnNniwA4xXYNdRYDBuhKAp/c0zFibfw8o5w5cCUZQ3C2HiVXZXP u7s9g9NjsbtZ6eouMmxS5QE3oG9Q9tb0Mt0azDxuaPIi0uSDAsaDBjil3E/ohOPY1IuR qGu0f/xw32dKzdn6OD6Gso6yELEF3y7GOjJ+3xZj4QZjic7iii/3BT/MwI+xE8deUsnQ A1MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=s/wG+QZxohAkdtGSCZUjkm9USP+zFO96InHp16ZHrwI=; b=bRW4QCq8uhEj7er4NkJO13diAw4+Uc2NL9bbUerF5/AEq7PzM1+MBV91tfByJs+2pg qqq1T7BWAihVm9XZHWGnD7HraK0h0gPVj/p+IErCeoeSdUJMKqaG4A2boP6DIbdwJ2Rl ecHmkmyIdqzlhuLcEIetXHfh0Fd6qvPb+Z6EdvqtsIU+VEsOiQFDecPf4dGjgPuM6Sqi 4cvDuK0sAMUOiBCXZPLDXeGyOUjr3HPVk1MA/cxV7ltWeYvWDcHiX9f38FdNjLAvuUIq Ibm6TNcnyrZhuRkg4RlXTt6BEgOrGpnHPS+87ERUCJPbJ0bGJyGZN+mHyVxs1qLYkSu4 O+vQ== X-Gm-Message-State: ANoB5pk0iZgV3fuLJOC1haeHs3UWdjddlg6BPrJN9ae1MwBLfD97lPez 0WjGenF5qFdHYXQZNJWN8rmw X-Received: by 2002:a05:6a00:1a48:b0:56c:b4d3:906e with SMTP id h8-20020a056a001a4800b0056cb4d3906emr1510909pfv.10.1668663134822; Wed, 16 Nov 2022 21:32:14 -0800 (PST) Received: from localhost.localdomain ([117.193.208.31]) by smtp.gmail.com with ESMTPSA id q4-20020a17090311c400b001865c298588sm96600plh.258.2022.11.16.21.32.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 21:32:13 -0800 (PST) From: Manivannan Sadhasivam To: andersson@kernel.org, viresh.kumar@linaro.org, krzysztof.kozlowski+dt@linaro.org, rafael@kernel.org, robh+dt@kernel.org Cc: johan@kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Manivannan Sadhasivam , stable@vger.kernel.org, Sudeep Holla Subject: [PATCH v7 4/4] cpufreq: qcom-hw: Fix the frequency returned by cpufreq_driver->get() Date: Thu, 17 Nov 2022 11:01:45 +0530 Message-Id: <20221117053145.10409-5-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221117053145.10409-1-manivannan.sadhasivam@linaro.org> References: <20221117053145.10409-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749720263770862671?= X-GMAIL-MSGID: =?utf-8?q?1749720263770862671?= The cpufreq_driver->get() callback is supposed to return the current frequency of the CPU and not the one requested by the CPUFreq core. Fix it by returning the frequency that gets supplied to the CPU after the DCVS operation of EPSS/OSM. Cc: stable@vger.kernel.org # v5.15 Fixes: 2849dd8bc72b ("cpufreq: qcom-hw: Add support for QCOM cpufreq HW driver") Reported-by: Sudeep Holla Signed-off-by: Manivannan Sadhasivam --- drivers/cpufreq/qcom-cpufreq-hw.c | 42 +++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c index 1faa325d3e52..62f36c76e26c 100644 --- a/drivers/cpufreq/qcom-cpufreq-hw.c +++ b/drivers/cpufreq/qcom-cpufreq-hw.c @@ -131,7 +131,35 @@ static int qcom_cpufreq_hw_target_index(struct cpufreq_policy *policy, return 0; } +static unsigned long qcom_lmh_get_throttle_freq(struct qcom_cpufreq_data *data) +{ + unsigned int lval; + + if (qcom_cpufreq.soc_data->reg_current_vote) + lval = readl_relaxed(data->base + qcom_cpufreq.soc_data->reg_current_vote) & 0x3ff; + else + lval = readl_relaxed(data->base + qcom_cpufreq.soc_data->reg_domain_state) & 0xff; + + return lval * xo_rate; +} + +/* Get the current frequency of the CPU (after throttling) */ static unsigned int qcom_cpufreq_hw_get(unsigned int cpu) +{ + struct qcom_cpufreq_data *data; + struct cpufreq_policy *policy; + + policy = cpufreq_cpu_get_raw(cpu); + if (!policy) + return 0; + + data = policy->driver_data; + + return qcom_lmh_get_throttle_freq(data) / HZ_PER_KHZ; +} + +/* Get the frequency requested by the cpufreq core for the CPU */ +static unsigned int qcom_cpufreq_get_freq(unsigned int cpu) { struct qcom_cpufreq_data *data; const struct qcom_cpufreq_soc_data *soc_data; @@ -292,18 +320,6 @@ static void qcom_get_related_cpus(int index, struct cpumask *m) } } -static unsigned long qcom_lmh_get_throttle_freq(struct qcom_cpufreq_data *data) -{ - unsigned int lval; - - if (qcom_cpufreq.soc_data->reg_current_vote) - lval = readl_relaxed(data->base + qcom_cpufreq.soc_data->reg_current_vote) & 0x3ff; - else - lval = readl_relaxed(data->base + qcom_cpufreq.soc_data->reg_domain_state) & 0xff; - - return lval * xo_rate; -} - static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data) { struct cpufreq_policy *policy = data->policy; @@ -347,7 +363,7 @@ static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data) * If h/w throttled frequency is higher than what cpufreq has requested * for, then stop polling and switch back to interrupt mechanism. */ - if (throttled_freq >= qcom_cpufreq_hw_get(cpu)) + if (throttled_freq >= qcom_cpufreq_get_freq(cpu)) enable_irq(data->throttle_irq); else mod_delayed_work(system_highpri_wq, &data->throttle_work,