From nobody Sun Feb 8 17:22:40 2026 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 43B78C7EE37 for ; Fri, 9 Jun 2023 20:19:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231367AbjFIUTZ (ORCPT ); Fri, 9 Jun 2023 16:19:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60522 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231432AbjFIUTT (ORCPT ); Fri, 9 Jun 2023 16:19:19 -0400 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BF2730DB for ; Fri, 9 Jun 2023 13:19:18 -0700 (PDT) Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-4f004cc54f4so2814443e87.3 for ; Fri, 09 Jun 2023 13:19:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341956; x=1688933956; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Ak6pJEE70i86/FySUfYrSS2au3HzGmo13oLp85+Of0E=; b=ZYAUnt1h3zm6yQuJF1O1u6Ig6wC9ql4ygP9qXxGbilJuXcPAy7cdmCLtw+cUDcWIm0 JmO2qITOniwgUYE3FpWPyL4a99luPb1TJ5FLn4CFYSanbrVXwmwidcberK6Ggsz6TCkL OrqtkGm7zVtBjrsaKY2i5UCmXrzRTU1TYxxCOWc6/CQWKch6S43Kirk93vdie2FiT7c5 FuwPgm1WB9vL0+o+Y27wdqheOrTOlfR8UOZ9zSgAMsEu1J3PMAN+/modElOHSoARjMLH ZDkvuRZWwOvA8vFlVuM6u543GS4xoy2NPiE8buYk+H1i3vLawb7r//P2wbQA9YqqiNzd RuWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341956; x=1688933956; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ak6pJEE70i86/FySUfYrSS2au3HzGmo13oLp85+Of0E=; b=gLt5Mk4JmpwWD6rf309VrOS1WfDcw0el2hTWH/sPqRReBQpR7s1JehhYE48MYI1lCG ExG1zMZD8njCPuf2VMMvLR1Q1JABvM8C1RLjmnTrZkDwBsMh/F0t+1tTdsogmtfoUXOP hLkk+G/tbyNANa/PKX+NvjS2zSXfHtFDeN3mAt08oeGtnRSPp9D0gGP31A7x0t4IFHho wW3IohETDY9ZBBMldZpfRwIYCiaT9Urm5QprWPYB/WOswVVQ3rqVQf0B/q2u5HrqXCNd 7Gckfv/hqZsydiRxS+V4ht0oxZxJD6t92sGv4i4Ci3p/1Dt+Wsp0fBAtGI2fe6IY9B+0 d3Ww== X-Gm-Message-State: AC+VfDwcpQ17PKA+ZS9tEgbrKBGBgXL0u2c/kDViCa7YNTYhrKgxZOxy BgcFk6Mp3xdmp1DqaTxYclbeLw== X-Google-Smtp-Source: ACHHUZ4icgfvQyEhtHTf+n5uX0D49UtWc7i4nRks7NKaUET/j87fPt7+8h9IwPHPZ8DTEaVr850e1Q== X-Received: by 2002:a19:8c14:0:b0:4f6:4fcb:6e9a with SMTP id o20-20020a198c14000000b004f64fcb6e9amr1401776lfd.12.1686341956535; Fri, 09 Jun 2023 13:19:16 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:16 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:06 +0200 Subject: [PATCH v2 01/22] soc: qcom: smd-rpm: Add QCOM_SMD_RPM_STATE_NUM MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-1-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=664; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=XHE1WQYZzaLo+c3xD4ALM/GRb1VwY7GuxNqpdL0mBnk=; b=6RgsfDZ2UAsQB1GY/otsgs26Hc6coYtp4QVzrinbpw/gqd+d3IaH7aJ+z1h5QDVrTQC029lTU s6o+aHaRz+rBf6F8PbEP+PDGhbi82dgfHUMyjp98eDrrWChbNTFtqUy X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a preprocessor define to indicate the number of RPM contexts/states. Signed-off-by: Konrad Dybcio --- include/linux/soc/qcom/smd-rpm.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-= rpm.h index 2990f425fdef..e468f94fa323 100644 --- a/include/linux/soc/qcom/smd-rpm.h +++ b/include/linux/soc/qcom/smd-rpm.h @@ -6,6 +6,7 @@ struct qcom_smd_rpm; =20 #define QCOM_SMD_RPM_ACTIVE_STATE 0 #define QCOM_SMD_RPM_SLEEP_STATE 1 +#define QCOM_SMD_RPM_STATE_NUM 2 =20 /* * Constants used for addressing resources in the RPM. --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 03B4BC7EE25 for ; Fri, 9 Jun 2023 20:19:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231871AbjFIUTb (ORCPT ); Fri, 9 Jun 2023 16:19:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60522 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231650AbjFIUTU (ORCPT ); Fri, 9 Jun 2023 16:19:20 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71CF530F5 for ; Fri, 9 Jun 2023 13:19:19 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2b1a4250b07so24592441fa.3 for ; Fri, 09 Jun 2023 13:19:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341958; x=1688933958; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=SD+82Kp64qdWpl/p0nHwxIb/l/7wz0DuQnwuSSdR/H4=; b=OwO3Auy7crryfX+wyX7S6r2o2fCVI6oNqvTgeY15i1gE0hbXu2gsulroECVxaoo9sC niEjxY9zH9dpnsNjX/snxyi0+Xx0iAIWGvFMo2afjLUWEMJickIKFW/Isb47V5Fr3nZ2 AnlnE+j3LsVcsodRYQiFP6fkLXcRoVZZrfciC4kmFpxJTvppJVjC99o6kLysc3B03yjN NCzpLqA443Rd0yy68YOhLLikqYMFAZbgQNPWaUSfWqb6yasOoXvsOZaOIz6DNqTeKOOY n7CDZtwp9an9glGdZLrSYwHzsrBxsUEz7f7G6BzJA65o6uLMFGZH1qSHc5BcQ0kU1w7V kk1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341958; x=1688933958; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SD+82Kp64qdWpl/p0nHwxIb/l/7wz0DuQnwuSSdR/H4=; b=hHhaHJfpywlJDftqkFUs4Ab6LkGy8PPidtxWEAsopPBLZQhLunDK6+B1TQrdArNQtV BRhAZwr/r15ePIjfkpnU5kryQlpC9RjqYgiX1hVp+moqTNvxmDHE+u/4o8p9fYcUnfUV ue1CMjXZIP50/YhlJU7GtIKLwDbLvZ2V25WjYiaDwlsuHtLZu5epRYoQeSUB8JOd+8rz JLMB1BfiIRDbdP/yjRI7dljrAWRbcfiKRLEdL53ho3E0g6XB5vin/My0HOqMnkWGGYvp ZZFamuFe/0yC0J+h8BH8sanlAuF3MksDzjvetlC7l/PlBuxcKBuxvy9NTcFhbyT1vMR2 6g4g== X-Gm-Message-State: AC+VfDwZT71xP0h9KfTqn5vnDWbPOFz23LBpS6dUp4fFxsSQARmV+GGN i+ie437kknW59lN5ei7zcKoD0w== X-Google-Smtp-Source: ACHHUZ7LdOiaJTmOwHVlsOJ+APt3wnSuCgU+CvvBtV+8zV3h6+LeQH7ffqgZLX0oq9ReZ4lq5Lpfnw== X-Received: by 2002:ac2:465b:0:b0:4f6:4f9a:706e with SMTP id s27-20020ac2465b000000b004f64f9a706emr1631988lfo.15.1686341957684; Fri, 09 Jun 2023 13:19:17 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:17 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:07 +0200 Subject: [PATCH v2 02/22] soc: qcom: smd-rpm: Use tabs for defines MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-2-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=691; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=7uAPa6YDjXHLJZjqpcpTS8PIWFtwDRP9qtCSKC7URyY=; b=qa3oHWLAPbUw8lJ/y8dB+VV8T9hoLLxb/r+MlOEOVrT1eiCEXbkhS5tyyyg+RB/JAOUo7Sq47 AHZelBVy83aBdpxj4Krpw7Lqa7eAIdwks9cxjHyJ4xcZTKF+WAixqxy X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use tabs for defines to make things spaced consistently. Signed-off-by: Konrad Dybcio --- include/linux/soc/qcom/smd-rpm.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-= rpm.h index e468f94fa323..99499e4b080e 100644 --- a/include/linux/soc/qcom/smd-rpm.h +++ b/include/linux/soc/qcom/smd-rpm.h @@ -4,8 +4,8 @@ =20 struct qcom_smd_rpm; =20 -#define QCOM_SMD_RPM_ACTIVE_STATE 0 -#define QCOM_SMD_RPM_SLEEP_STATE 1 +#define QCOM_SMD_RPM_ACTIVE_STATE 0 +#define QCOM_SMD_RPM_SLEEP_STATE 1 #define QCOM_SMD_RPM_STATE_NUM 2 =20 /* --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 3CE82C7EE2E for ; Fri, 9 Jun 2023 20:19:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231909AbjFIUTe (ORCPT ); Fri, 9 Jun 2023 16:19:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60548 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229541AbjFIUTW (ORCPT ); Fri, 9 Jun 2023 16:19:22 -0400 Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com [IPv6:2a00:1450:4864:20::233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7EB9E47 for ; Fri, 9 Jun 2023 13:19:20 -0700 (PDT) Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2b1adf27823so24900151fa.2 for ; Fri, 09 Jun 2023 13:19:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341959; x=1688933959; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=o4TG88G8lz+fAZ9zU8d6rxSrHlYur3wUM1VMDavTyKo=; b=qJwESa6TrqhD+rWOkoWhimvnDd5gJYhIyhdgbpLYlClG/vHRHCuf5+NIYgrDdv/+IU dPFvncbN3f62l7+bSJGFAy6mgh1S+JzjcnNS3Rsa4cFhq/HTdVusJCCI4nnfhvjU+btG xOh7T2pZwh28sLjFeLzk4SMBzgGa2kVlyxP64dCbI1mqI+mHy+ff1a6y28Ktr2q9SBQe 0YqXt1hTFQi++QlnuNb2HFqoMx500gSLIk9Zeks7JCZWQvBvJLPcA9o+2gk4BcyNfWKo nAxf0zHYjEaSzaCd6i6QHLJ68lRELOa2Ir1fnPYAwokV6Qd0d2+j/EVaJKyolfGiTKTx WEGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341959; x=1688933959; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o4TG88G8lz+fAZ9zU8d6rxSrHlYur3wUM1VMDavTyKo=; b=XAyN+U3MikZLuC7AXl5+iIZVXHrvBvYMe9i0xeDbcZtg94fLBSIjML7mMIQMl2d9qm l5Pdr1jd+kzjI0I5B8giWFnjw9/A3xEuhf1Sl5LfkEZkwwECCjcDHGzqdUzVVaIYWk47 0nQ3VPzolLgW99SdWT7CX+Tt68PtFQG58vCQkMvicD9QKHkq6SRvVKg/qgUmzxfrTrXx uizfIlGZc5PAVWZifwrzock6YM2AGRDHjHrYsGjb8AcysqTDVRJULuhUF3D2m4MNEaG8 ggJJdfOAaZPCnwXk1gx5eH4BvYXJqCCw4sCBeJERJEsLWtCfG8rHauLEGYDHAwAWTaMp GB4A== X-Gm-Message-State: AC+VfDzFH+9A4joD+WAp4oLwAHq7vAeW934d3vYellN1qokyU1dBbbl/ lMDHu+VhNLzlmxFmRbC1LYbV7w== X-Google-Smtp-Source: ACHHUZ6xql1w+WdyIIDr4lcjFgxl/jXyHBrafmUJAyH4+achRAdYsDJ5k1Ux/5A42nPJbA/ODNaihQ== X-Received: by 2002:a05:6512:32b7:b0:4f1:430d:ca5c with SMTP id q23-20020a05651232b700b004f1430dca5cmr1487387lfe.56.1686341959062; Fri, 09 Jun 2023 13:19:19 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:18 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:08 +0200 Subject: [PATCH v2 03/22] clk: qcom: smd-rpm: Move some RPM resources to the common header MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-3-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=2437; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=UU7GtjAFC9F3/14Sgtv72aSDwAe2u4JL+0KQToDCmwI=; b=DwmrC5bgCMsGkboo7dYMtoVQPexE6x7n5ZSH9/AjiZbntp4SZLkKIG9KH6RkKo14G2ByfEFLW 0ffy9SvAQ6dA7aIAD6TVs94ybJzOrnUGeoj0WZ06c55qBoErRW8IEV4 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In preparation for handling the bus clocks in the icc driver, carve out some defines and a struct definition to the common rpm header. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/clk/qcom/clk-smd-rpm.c | 13 ------------- include/linux/soc/qcom/smd-rpm.h | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index e4de74b68797..937cb1515968 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -18,13 +18,6 @@ =20 #include =20 -#define QCOM_RPM_KEY_SOFTWARE_ENABLE 0x6e657773 -#define QCOM_RPM_KEY_PIN_CTRL_CLK_BUFFER_ENABLE_KEY 0x62636370 -#define QCOM_RPM_SMD_KEY_RATE 0x007a484b -#define QCOM_RPM_SMD_KEY_ENABLE 0x62616e45 -#define QCOM_RPM_SMD_KEY_STATE 0x54415453 -#define QCOM_RPM_SCALING_ENABLE_ID 0x2 - #define __DEFINE_CLK_SMD_RPM_PREFIX(_prefix, _name, _active, \ type, r_id, key) \ static struct clk_smd_rpm clk_smd_rpm_##_prefix##_active; \ @@ -171,12 +164,6 @@ struct clk_smd_rpm { unsigned long rate; }; =20 -struct clk_smd_rpm_req { - __le32 key; - __le32 nbytes; - __le32 value; -}; - struct rpm_smd_clk_desc { struct clk_smd_rpm **clks; size_t num_clks; diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-= rpm.h index 99499e4b080e..8190878645f9 100644 --- a/include/linux/soc/qcom/smd-rpm.h +++ b/include/linux/soc/qcom/smd-rpm.h @@ -2,6 +2,8 @@ #ifndef __QCOM_SMD_RPM_H__ #define __QCOM_SMD_RPM_H__ =20 +#include + struct qcom_smd_rpm; =20 #define QCOM_SMD_RPM_ACTIVE_STATE 0 @@ -45,6 +47,19 @@ struct qcom_smd_rpm; #define QCOM_SMD_RPM_PKA_CLK 0x616b70 #define QCOM_SMD_RPM_MCFG_CLK 0x6766636d =20 +#define QCOM_RPM_KEY_SOFTWARE_ENABLE 0x6e657773 +#define QCOM_RPM_KEY_PIN_CTRL_CLK_BUFFER_ENABLE_KEY 0x62636370 +#define QCOM_RPM_SMD_KEY_RATE 0x007a484b +#define QCOM_RPM_SMD_KEY_ENABLE 0x62616e45 +#define QCOM_RPM_SMD_KEY_STATE 0x54415453 +#define QCOM_RPM_SCALING_ENABLE_ID 0x2 + +struct clk_smd_rpm_req { + __le32 key; + __le32 nbytes; + __le32 value; +}; + int qcom_rpm_smd_write(struct qcom_smd_rpm *rpm, int state, u32 resource_type, u32 resource_id, --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 5DF07C7EE25 for ; Fri, 9 Jun 2023 20:19:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230040AbjFIUTh (ORCPT ); Fri, 9 Jun 2023 16:19:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231771AbjFIUTX (ORCPT ); Fri, 9 Jun 2023 16:19:23 -0400 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 190E41B9 for ; Fri, 9 Jun 2023 13:19:22 -0700 (PDT) Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-4f660e57123so672655e87.3 for ; Fri, 09 Jun 2023 13:19:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341960; x=1688933960; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=WM2lIBCQpaCLxOM0eZa+yyh2dei168j4wOh+tPpmJK0=; b=gzLNdXMGWdBPqiQA7B5eUoaMSuyncfwekHUkflRA8lMz23+qJngQv+qACsgkJypyrB L4YOfXAZZJkm+YrTYHP04+wg2xFGVbfthizUyYYPVvmXH3raZwYfpgPc0WNenG1lHrfi TZoks45l93ZkzdBmIHh3ctj7zs7P9uT1E9ZltSuICh5odV1ys9a7WOgM5326KXNf9TYW E0s1+sCNR7Z0podvlw7Q3wWBUTHBZKdLhEstLZaTmYDeoqifjXTmuKFaiWy0BArqSVBl Go7ktf6WKHM1FhfNmVNTNaxLK1LNULx9gJDZbFFccaH/DRDvGhTR942liPJZRNre7NZO j9JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341960; x=1688933960; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WM2lIBCQpaCLxOM0eZa+yyh2dei168j4wOh+tPpmJK0=; b=HxTCbk6bF5zqb/+4FvB9KKVy0rMH4ICDUGyGPMFOvUsaz2AC0p1MT+J9p0xbdCOTeO 60UCkURLeID5FQQdS8zFzuPnLAajlQDRMov7+9/1iS7XbJ2Dfd+BhD+5IOlty72MSX0f OUMCBkMHiwAlgE71xl+mrXi8iX0wVZf2LEGia9eOkesIanNiKkS6DRbxz8xYP1eX4ioc DNtEUGHxLtaqNGHM3QIjjjf1XM5pCTDiS+VmrM5lS87WJ+mByDZkMb3ZEd/p3FGNI2uQ 5ou0+4FDi3mtSnAKq4+Q4x9Mtx4Na5UqaDNP737G+w6wujPsltgdqiACjaE7rAKz0lQy Rm5A== X-Gm-Message-State: AC+VfDyyrUwUPx3khMXSsiDT8ONPWfk6UsWrD1s2oifM6HUi0Y5kK8Fy 7NB8u0t5Vvs3XxJFYwpEWisBPQ== X-Google-Smtp-Source: ACHHUZ5bAormfh7KWJB2oKW/wLRnPrxw7KV3qrmhKb8FDp+RbOt03uINWLVcMmt+Ires0ZrjJcgX/Q== X-Received: by 2002:a05:6512:290:b0:4f3:a71a:9e5f with SMTP id j16-20020a056512029000b004f3a71a9e5fmr1497295lfp.65.1686341960341; Fri, 09 Jun 2023 13:19:20 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:20 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:09 +0200 Subject: [PATCH v2 04/22] clk: qcom: smd-rpm: Export clock scaling availability MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-4-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=1931; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=sfIIZ4nJOxKMuz78S/kJHIPdUookF7KrBzGOCFONLgY=; b=UGsFPui0AzaF8mwTfLqT11gqTSGaF6XKmO5msD2SsfjTYhDoq5xBBDwwF696aoGiYMWfJAghc 0wMWoO20fcxAuSzyDyj4jpMiPdgh9nnfNMzxwC62Wa44XYgWEUOo4Hl X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Before we issue a call to RPM through clk_smd_rpm_enable_scaling() the clock rate requests will not be commited in hardware. This poses a race threat since we're accessing the bus clocks directly from within the interconnect framework. Add a marker to indicate that we're good to go with sending new requests and export it so that it can be referenced from icc. Signed-off-by: Konrad Dybcio --- drivers/clk/qcom/clk-smd-rpm.c | 9 +++++++++ include/linux/soc/qcom/smd-rpm.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index 937cb1515968..482fe30ee6f0 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -151,6 +151,7 @@ #define to_clk_smd_rpm(_hw) container_of(_hw, struct clk_smd_rpm, hw) =20 static struct qcom_smd_rpm *rpmcc_smd_rpm; +static bool smd_rpm_clk_scaling; =20 struct clk_smd_rpm { const int rpm_res_type; @@ -385,6 +386,12 @@ static unsigned long clk_smd_rpm_recalc_rate(struct cl= k_hw *hw, return r->rate; } =20 +bool qcom_smd_rpm_scaling_available(void) +{ + return smd_rpm_clk_scaling; +} +EXPORT_SYMBOL_GPL(qcom_smd_rpm_scaling_available); + static int clk_smd_rpm_enable_scaling(void) { int ret; @@ -410,6 +417,8 @@ static int clk_smd_rpm_enable_scaling(void) return ret; } =20 + smd_rpm_clk_scaling =3D true; + pr_debug("%s: RPM clock scaling is enabled\n", __func__); return 0; } diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-= rpm.h index 8190878645f9..420f6c79d535 100644 --- a/include/linux/soc/qcom/smd-rpm.h +++ b/include/linux/soc/qcom/smd-rpm.h @@ -65,4 +65,6 @@ int qcom_rpm_smd_write(struct qcom_smd_rpm *rpm, u32 resource_type, u32 resource_id, void *buf, size_t count); =20 +bool qcom_smd_rpm_scaling_available(void); + #endif --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 E9106C87FDC for ; Fri, 9 Jun 2023 20:19:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231767AbjFIUT5 (ORCPT ); Fri, 9 Jun 2023 16:19:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231439AbjFIUTZ (ORCPT ); Fri, 9 Jun 2023 16:19:25 -0400 Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 46D1130E4 for ; Fri, 9 Jun 2023 13:19:23 -0700 (PDT) Received: by mail-lf1-x12c.google.com with SMTP id 2adb3069b0e04-4f6195d2b3fso2801532e87.1 for ; Fri, 09 Jun 2023 13:19:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341961; x=1688933961; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=UEM3N0iLIlvYLepw85JsPFibfyRzMkZ98OPjRwmkvbs=; b=n1invhpMx1ccyojiJAoc/FICf8qzZg8AvL9wLKjV9deTw4HRMh45dXjnAVoSy1Y61/ E742sFH9M/rXwqA2ei32FgwEEwDmIGETQaBI7raKSlmLlsHfqKKwkUaT1w39+KXR/LQO uAPAGu6bfCxGUNCSzG2o1vfhuHbYlmo51FD/9AYk0oW3DcqoRXTC9CtZtMQUDyJUUijI H3LC52CBKTNXkOKPOFiW6TYgrf+bgWGZGpc2Z8B3C1mAiqplfwhZgahsxCRvDb+7KBtK g4ou98GIZakBFD2bKrp5oVrXdXJX5eI8aEl7qkjeITXqgocayABX8W0yZBEskCaVkU9n QIwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341961; x=1688933961; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UEM3N0iLIlvYLepw85JsPFibfyRzMkZ98OPjRwmkvbs=; b=ZlA9xu61+5FeyDPGpGeb+hUQVlyanenGryh/q2a8GaRAEiK7NExbm+L8cHr8NnooJW /l9I07GbQUkbXPplby+uoGK2CK7954aCkNcLyUmt2ECSDXLdbdvTJA1c+XPSxzObXu0i 50lV6KHp+hTzs7sfbAFvmwyW6ezRsttE5CPn6MkYIFyXymq7JOnGRmh3dOgpnmtAXAKh LXwVNZnp7+CXCz9Ki5GrZrsPSrzojU5d8mS12UeBGZcHzW4+thY7ZExx1sOxtdlXV8El Iisq2HkKUPgUYNjWHBMXJICByXaSU7ryUbdbkgTtsvFG+n2gq9YrWaTk913HXR1O5/Ih VBFQ== X-Gm-Message-State: AC+VfDxWaC+pp9n12ChORymNxxBe59e2gJre6kFG5HA5TUPKgh0Ko83o CsGhdPKi17hRcMXlZDAZDCVruw== X-Google-Smtp-Source: ACHHUZ4E9CRrlu8/QHiIFgZN4bMEzOQJhgvO+8HfM3+sDZXij/QAJiGSGa9cV/kLDVjg0QcqqTGZPw== X-Received: by 2002:a19:9106:0:b0:4f3:a99c:fbbe with SMTP id t6-20020a199106000000b004f3a99cfbbemr1417540lfd.14.1686341961573; Fri, 09 Jun 2023 13:19:21 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:21 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:10 +0200 Subject: [PATCH v2 05/22] interconnect: qcom: icc-rpm: Introduce keep_alive MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-5-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=3661; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=g6kESh9vFn5cUExPwamnhleED6tFd+S7dtFe11cmEVE=; b=N0GZFd1D6lY98LSYi6TjN77PBSwUCLkJMaQklefTtlImuAIykZ8MVuwn2levHNt36jVkfRPX+ KTMOHPcIZCCD27uzyhX1OwB4BEm+ERzRFSS+A8pteqBB3lGg//fxlRt X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The downstream kernel employs the concept of "keeping the bus alive" by voting for the minimum (XO/19.2MHz) rate at all times on certain (well, most) buses. This is a very important thing to have, as if we either have a lackluster/wrong DT that doesn't specify a (high enough) vote on a certain bus, we may lose access to the entire bus altogether. This is very apparent when we only start introducing interconnect support on a given platform and haven't yet introduced voting on all peripherals. The same can happen if we only have a single driver casting a vote on a certain bus and that driver exits/crashes/suspends. The keepalive vote is limited to the ACTIVE bucket, as keeping a permanent vote on the SLEEP one could prevent the platform from properly entering low power mode states. Introduce the very same concept, with a slight twist: the vendor kernel checks whether the rate is zero before setting the minimum vote, but that's rather silly, as in doing so we're at the mercy of CCF. Instead, explicitly clamp the rates to always be >=3D 19.2 MHz for providers with keep_alive=3Dtrue. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 10 ++++++++++ drivers/interconnect/qcom/icc-rpm.h | 3 +++ 2 files changed, 13 insertions(+) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index 6acc7686ed38..863e8ba1daa2 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -50,6 +50,8 @@ #define NOC_QOS_MODE_FIXED_VAL 0x0 #define NOC_QOS_MODE_BYPASS_VAL 0x2 =20 +#define ICC_BUS_CLK_MIN_RATE 19200000ULL + static int qcom_icc_set_qnoc_qos(struct icc_node *src) { struct icc_provider *provider =3D src->provider; @@ -380,6 +382,13 @@ static int qcom_icc_set(struct icc_node *src, struct i= cc_node *dst) do_div(rate, src_qn->buswidth); rate =3D min_t(u64, rate, LONG_MAX); =20 + /* + * Downstream checks whether the requested rate is zero, but it makes li= ttle sense + * to vote for a value that's below the lower threshold, so let's not do= so. + */ + if (bucket =3D=3D QCOM_ICC_BUCKET_WAKE && qp->keep_alive) + rate =3D max(ICC_BUS_CLK_MIN_RATE, rate); + if (qp->bus_clk_rate[i] =3D=3D rate) continue; =20 @@ -453,6 +462,7 @@ int qnoc_probe(struct platform_device *pdev) for (i =3D 0; i < qp->num_bus_clks; i++) qp->bus_clks[i].id =3D bus_clocks[i]; =20 + qp->keep_alive =3D desc->keep_alive; qp->type =3D desc->type; qp->qos_offset =3D desc->qos_offset; =20 diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index ee705edf19dd..d2c04c400cad 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -33,6 +33,7 @@ enum qcom_icc_type { * @bus_clk_rate: bus clock rate in Hz * @bus_clks: the clk_bulk_data table of bus clocks * @intf_clks: a clk_bulk_data array of interface clocks + * @keep_alive: whether to always keep a minimum vote on the bus clocks * @is_on: whether the bus is powered on */ struct qcom_icc_provider { @@ -45,6 +46,7 @@ struct qcom_icc_provider { u64 bus_clk_rate[NUM_BUS_CLKS]; struct clk_bulk_data bus_clks[NUM_BUS_CLKS]; struct clk_bulk_data *intf_clks; + bool keep_alive; bool is_on; }; =20 @@ -102,6 +104,7 @@ struct qcom_icc_desc { const char * const *bus_clocks; const char * const *intf_clocks; size_t num_intf_clocks; + bool keep_alive; bool no_clk_scaling; enum qcom_icc_type type; const struct regmap_config *regmap_cfg; --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 1AF98C7EE45 for ; Fri, 9 Jun 2023 20:20:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232192AbjFIUUA (ORCPT ); Fri, 9 Jun 2023 16:20:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60634 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231918AbjFIUTp (ORCPT ); Fri, 9 Jun 2023 16:19:45 -0400 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B10A81B9 for ; Fri, 9 Jun 2023 13:19:24 -0700 (PDT) Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-2b15a327c20so24664271fa.1 for ; Fri, 09 Jun 2023 13:19:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341963; x=1688933963; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=FsjjWN/3ExrWWr4Y2ppq6JQGmoO1NTS4jkjNM8tw+cY=; b=Znr1n54W+8fGpzjYv2vsQaYQk388QlI8dSxPWoZAGkfXcOcU+zzS0ZWnmAHgtqhMlm mbWUmPrPjo3ga2TSeTUc+GJF2gMBhEZ4dUffy6+RIyLTH0VW2iWVP9NZ13uVUav+tbfF rFBFevWSv2RbmfVSYp/OnoD9NIllMYZN1n5XppHtBrqL5ym7+eDGZsYhNnrXuC1LCd17 s9xNhmIINS6dU5tcVeEbE9wx7PKNEgHbbVxIO7DmbZlccSQ1nxAS6SfXtrqfXE+NfqBN eSVV4PjeeLvATX0eExC/FGTV5fC1cXsQid5momBXnL0+wPuIFuMKCdeCZ+OTy6jQH/fl RCpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341963; x=1688933963; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FsjjWN/3ExrWWr4Y2ppq6JQGmoO1NTS4jkjNM8tw+cY=; b=bTf0g65gj8KcQpgYHac2SNQO1kb8BmCBTtTLrD+wuIVze/zdE6Rof9C38SIZyacNYq hbb5KJ/O8Nx1U3r2gq9lUNkkQe0gu129DNxdbuWhtNdVruDycoD9VgZulM7zFZgpnE49 lpTkcyIJsd30qFjjApdGD81X8cdEbae7DJJxFr6ub3bSCPRmA961Lj4V4lX9HOcrybd/ g8oiRfL/J5aN2y9clcSRvDlkcufNmi4M+TDRAgVRSpU63rYLd1MQtqE/oyMPDIRgl1Iu KBHb2UFGgYNg1wGa63wV6y3f5tYY6pHC+pd0FnagFyOfyqu/+6kwwRqirgcq+560BZxX Ul4w== X-Gm-Message-State: AC+VfDwQkQ8AwtQtrrndHdLiuf4c4qcsXj3T/NYp/fTlW9D8+RueJPYQ V0zRLS3LJVQtUM7xYFXKMpnnFA== X-Google-Smtp-Source: ACHHUZ57goyW/TYEI402vG9vnZdhnXMaiJo033PjpTU1zzDdaYe4dYLm2bogyH4FG5Eb8c3/QPZVdQ== X-Received: by 2002:a19:4347:0:b0:4f3:b2a7:68ef with SMTP id m7-20020a194347000000b004f3b2a768efmr1366987lfj.10.1686341963033; Fri, 09 Jun 2023 13:19:23 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:22 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:11 +0200 Subject: [PATCH v2 06/22] interconnect: qcom: icc-rpm: Allow negative QoS offset MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-6-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=1945; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=rgTDM+URKWJ36SFNnllBnyQwiFYuxKTtmuTacUJ+85U=; b=FpmhfeRG1aZHlIzvOClTkP2gbB2RANAcmI1h8mAYuMlhbe7Bt3tok8yu6mu1PrWXHl6YmwNdS JrH5kM9VHImAsQt2ZwnH4WuksfsviX+z/C70P9DPFSNckquLgr3QAlq X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In some very very very very unfortunate cases, the correct offset of the QoS registers will be.. negative. One such case is MSM8998, where The DDR BWMON occupies what-would-be-the-BIMC-base which we usually take into account with the register calculation, making the actual BIMC node start at what-would-be-the-BIMC-base+0x300. In order to keep the calculation code sane, the simplest - however ugly it may be - solution is to allow the offset to be negative. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index d2c04c400cad..ba840a436cc0 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -29,10 +29,10 @@ enum qcom_icc_type { * @num_intf_clks: the total number of intf_clks clk_bulk_data entries * @type: the ICC provider type * @regmap: regmap for QoS registers read/write access - * @qos_offset: offset to QoS registers * @bus_clk_rate: bus clock rate in Hz * @bus_clks: the clk_bulk_data table of bus clocks * @intf_clks: a clk_bulk_data array of interface clocks + * @qos_offset: offset to QoS registers * @keep_alive: whether to always keep a minimum vote on the bus clocks * @is_on: whether the bus is powered on */ @@ -42,7 +42,7 @@ struct qcom_icc_provider { int num_intf_clks; enum qcom_icc_type type; struct regmap *regmap; - unsigned int qos_offset; + int qos_offset; u64 bus_clk_rate[NUM_BUS_CLKS]; struct clk_bulk_data bus_clks[NUM_BUS_CLKS]; struct clk_bulk_data *intf_clks; @@ -108,7 +108,7 @@ struct qcom_icc_desc { bool no_clk_scaling; enum qcom_icc_type type; const struct regmap_config *regmap_cfg; - unsigned int qos_offset; + int qos_offset; }; =20 /* Valid for all bus types */ --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 973F9C87FDE for ; Fri, 9 Jun 2023 20:20:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232125AbjFIUUG (ORCPT ); Fri, 9 Jun 2023 16:20:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231964AbjFIUTp (ORCPT ); Fri, 9 Jun 2023 16:19:45 -0400 Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DFF7635B5 for ; Fri, 9 Jun 2023 13:19:25 -0700 (PDT) Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-4f122ff663eso2738878e87.2 for ; Fri, 09 Jun 2023 13:19:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341964; x=1688933964; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=6yqoaw1SJxAVA4zfoNJA8WPzYaF2aeMvPE6QC7WXXuk=; b=Kue55f1HrIY//vS2uD1QxfmeWRhNBHHGUe4PGho3Ex007ChMgT3W05Cixg0RP3YZh9 Zkvxqw+9ryMD5SjbqvyiokTpTzF8CdqBLKSs8LE7vvQj1QzGmPlYonWcgvq7h5m83Ryx i7B+oQDlMyZ7mC5Mxo4QgF+tG4eqWKNnYNoyhpQ5cVLsGfN4lZe4SfTjM/ZirlxLPbnK 9ze+Ax048qcb39cVmwH8LmGt0EewH8dwOl56FsyeKUcVazCNoXT5hsc6jR9EljxZhgOs WAfwOyZFhgtV0vmc1Ycv0rbdQUK6apPSQ8qSAWA53EckbQ5LPLxyS97FpFlImVnUVsUO HPJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341964; x=1688933964; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6yqoaw1SJxAVA4zfoNJA8WPzYaF2aeMvPE6QC7WXXuk=; b=AFM+9+d5Y1lP/TC6qPJelBv87iL3jLsohaor9BT1daIes3JASsVvPfwugoajhTTjJX /Qze0fc1oWsJbf/T5qoCCm6iL9qvmA9wRe8WJWEottixdJTmxarmDsNqQ11FTRtcSE9c PVPN7vIBNOeF3PAGehGp4DoiuHYIeCYoSIEl7plCk2wle0zAQ1IgG4RiIhyoic4JUoZo bJvyVlRU+82tfw2tayWao38hOdGVlbWPemuf848mNfg2f3v7T/o8STD+8v2FQ24Rtz9/ kVHMUtDxLH64V1KioX0DoT/IWqOFLw4GuTVPf3Her0UrPnPMLLqgulN4O89od8ZnM4U+ swXw== X-Gm-Message-State: AC+VfDz9ilBv5AExdp3plYPN4X+fGA7mp3WRtI3LxeZP1lU+f+lNySit oljkKOkgekI5CLOOmzWV1+Rl0w== X-Google-Smtp-Source: ACHHUZ5qPcvl9o8olqmuNW+pSeTOFb4CL5y4S3BSwndVSbpbvOzA8U8h1EB+k0YkoXeYFqjACSQQ5Q== X-Received: by 2002:a19:5e58:0:b0:4f3:aa74:2faf with SMTP id z24-20020a195e58000000b004f3aa742fafmr1527910lfi.6.1686341964241; Fri, 09 Jun 2023 13:19:24 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:23 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:12 +0200 Subject: [PATCH v2 07/22] interconnect: qcom: Fold smd-rpm.h into icc-rpm.h MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-7-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=5451; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=byYAlps9wH1OSJiblDOBqmeTnt9HlHHvwOPwDsuq8eU=; b=TNaoCQCvOGFaZOGxrOiTnZ9Mzo/7T2dJeHgUSmI0k6uRHFoQnWYtbc7RQyorpoJIyZbW61nyg MzTI5qdXtzWC6o5TXzTMl2jR3VZH1nISG1wEB6n2Mgmz1N6ANiS0wqO X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org smd-rpm.h is not very useful as-is and both files are always included anyway.. Combine them. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 1 - drivers/interconnect/qcom/icc-rpm.h | 5 +++++ drivers/interconnect/qcom/msm8916.c | 1 - drivers/interconnect/qcom/msm8939.c | 1 - drivers/interconnect/qcom/msm8974.c | 2 +- drivers/interconnect/qcom/msm8996.c | 1 - drivers/interconnect/qcom/qcm2290.c | 1 - drivers/interconnect/qcom/qcs404.c | 1 - drivers/interconnect/qcom/sdm660.c | 1 - drivers/interconnect/qcom/smd-rpm.c | 2 +- drivers/interconnect/qcom/smd-rpm.h | 15 --------------- 11 files changed, 7 insertions(+), 24 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index 863e8ba1daa2..b8ecf9538ab9 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -14,7 +14,6 @@ #include #include =20 -#include "smd-rpm.h" #include "icc-common.h" #include "icc-rpm.h" =20 diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index ba840a436cc0..9b4ea4e39b9f 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -6,6 +6,8 @@ #ifndef __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H #define __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H =20 +#include + #include =20 #define RPM_BUS_MASTER_REQ 0x73616d62 @@ -121,4 +123,7 @@ enum qos_mode { int qnoc_probe(struct platform_device *pdev); int qnoc_remove(struct platform_device *pdev); =20 +bool qcom_icc_rpm_smd_available(void); +int qcom_icc_rpm_smd_send(int ctx, int rsc_type, int id, u32 val); + #endif diff --git a/drivers/interconnect/qcom/msm8916.c b/drivers/interconnect/qco= m/msm8916.c index 5c4ba2f37c8e..196b05879896 100644 --- a/drivers/interconnect/qcom/msm8916.c +++ b/drivers/interconnect/qcom/msm8916.c @@ -15,7 +15,6 @@ =20 #include =20 -#include "smd-rpm.h" #include "icc-rpm.h" =20 enum { diff --git a/drivers/interconnect/qcom/msm8939.c b/drivers/interconnect/qco= m/msm8939.c index caf0aefad668..639566dce45a 100644 --- a/drivers/interconnect/qcom/msm8939.c +++ b/drivers/interconnect/qcom/msm8939.c @@ -16,7 +16,6 @@ =20 #include =20 -#include "smd-rpm.h" #include "icc-rpm.h" =20 enum { diff --git a/drivers/interconnect/qcom/msm8974.c b/drivers/interconnect/qco= m/msm8974.c index 1828deaca443..968162213d40 100644 --- a/drivers/interconnect/qcom/msm8974.c +++ b/drivers/interconnect/qcom/msm8974.c @@ -38,7 +38,7 @@ #include #include =20 -#include "smd-rpm.h" +#include "icc-rpm.h" =20 enum { MSM8974_BIMC_MAS_AMPSS_M0 =3D 1, diff --git a/drivers/interconnect/qcom/msm8996.c b/drivers/interconnect/qco= m/msm8996.c index 20340fb62fe6..1f7e88a37acd 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -18,7 +18,6 @@ #include =20 #include "icc-rpm.h" -#include "smd-rpm.h" #include "msm8996.h" =20 static const char * const mm_intf_clocks[] =3D { diff --git a/drivers/interconnect/qcom/qcm2290.c b/drivers/interconnect/qco= m/qcm2290.c index a29cdb4fac03..cb636e67a5a4 100644 --- a/drivers/interconnect/qcom/qcm2290.c +++ b/drivers/interconnect/qcom/qcm2290.c @@ -19,7 +19,6 @@ #include =20 #include "icc-rpm.h" -#include "smd-rpm.h" =20 enum { QCM2290_MASTER_APPSS_PROC =3D 1, diff --git a/drivers/interconnect/qcom/qcs404.c b/drivers/interconnect/qcom= /qcs404.c index fae155344332..938283ddd0e3 100644 --- a/drivers/interconnect/qcom/qcs404.c +++ b/drivers/interconnect/qcom/qcs404.c @@ -13,7 +13,6 @@ #include =20 =20 -#include "smd-rpm.h" #include "icc-rpm.h" =20 enum { diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom= /sdm660.c index 7ffaf70d62d3..003fc7d110a7 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -17,7 +17,6 @@ #include =20 #include "icc-rpm.h" -#include "smd-rpm.h" =20 enum { SDM660_MASTER_IPA =3D 1, diff --git a/drivers/interconnect/qcom/smd-rpm.c b/drivers/interconnect/qco= m/smd-rpm.c index dc8ff8d133a9..b0183262ba66 100644 --- a/drivers/interconnect/qcom/smd-rpm.c +++ b/drivers/interconnect/qcom/smd-rpm.c @@ -13,7 +13,7 @@ #include #include =20 -#include "smd-rpm.h" +#include "icc-rpm.h" =20 #define RPM_KEY_BW 0x00007762 =20 diff --git a/drivers/interconnect/qcom/smd-rpm.h b/drivers/interconnect/qco= m/smd-rpm.h deleted file mode 100644 index ca9d0327b8ac..000000000000 --- a/drivers/interconnect/qcom/smd-rpm.h +++ /dev/null @@ -1,15 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2019, Linaro Ltd. - * Author: Georgi Djakov - */ - -#ifndef __DRIVERS_INTERCONNECT_QCOM_SMD_RPM_H -#define __DRIVERS_INTERCONNECT_QCOM_SMD_RPM_H - -#include - -bool qcom_icc_rpm_smd_available(void); -int qcom_icc_rpm_smd_send(int ctx, int rsc_type, int id, u32 val); - -#endif --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 05FEEC7EE37 for ; Fri, 9 Jun 2023 20:20:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232491AbjFIUUR (ORCPT ); Fri, 9 Jun 2023 16:20:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60652 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232017AbjFIUTq (ORCPT ); Fri, 9 Jun 2023 16:19:46 -0400 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1DA1B3A8C for ; Fri, 9 Jun 2023 13:19:27 -0700 (PDT) Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-4f65779894eso1832862e87.1 for ; Fri, 09 Jun 2023 13:19:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341965; x=1688933965; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=SfrxuCryRwNruY8M45Wu3RJX+ovLhKu0IcVWJCqPsxA=; b=KP3A7+9FBIecqU615cEw0NVUU7OZT2ysrAuA3GWbLrqAPv2q2um9rzZ9rE7wrLB0C3 LmuTLt3juXN8Ppiz8vxzUtdKH3bZ7cM6gnVEF3H/ikoRPwi0pX7qUOW3Vh4Yu0CX278F MCLAz17EOt2i+00pCEo0JaZeRc/qp5dE3HLJyWMjoqVuSrxGN3pv5CDX0ydcde1DhuOI O7nbNMkI4aWEcNAngz62MgmaqsMbOiBKDBlw1sOlNAElaihzwJeqrGVqYkGk9j7b38gC ysjsoTznvLK5uIDcIw+xk6X0rqRco6GxK+b9ToBjqF1sKtdOCTIZhr48QRT4Gmmfd5E3 CmpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341965; x=1688933965; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SfrxuCryRwNruY8M45Wu3RJX+ovLhKu0IcVWJCqPsxA=; b=dxpuUXDcz+Wn4RIGYr+ysin3CTxGSSy+Agwg76Gi6MOWntTyi0CXsKKph1I1rkfnwb O2jw9rq0SxlPNlESxYrrv9tc9CYfpqb37Dbwhr+JGtphVTD6lzKXPS3R+8OwjnP102ao liIf2KsSU7WARAnCoztzkIyIMhOhwXxase+PFTpJhOYA6Mvo6mqTvI9ECRwG01quJvPN UwwaXvozjfzhTmwdYMo9mr9l0uBMCASX2RXObhYSTELQwXPWvNEfzHWge8gy2hHA8B1D 3pA3d+bSxfCqNSKck6JPovMQ+3qRtetXBZENZ17tQacXCq83jhzMPWY8pJoiWmNXmQLW hptw== X-Gm-Message-State: AC+VfDwg0hTkRyuUEGLdSwhvKKqIQAeY9hKvjgCeR/6CQ+64+3hMEuE8 gCQSv2V4jEQyi9c4jJYgzh1Mpg== X-Google-Smtp-Source: ACHHUZ57mtvh0Fc3MOodhaPBpI9c+k4zhwvL0O8bCEslmW59IgvvJBqXfyROP6dh646bawhPQGXjBA== X-Received: by 2002:a05:6512:1189:b0:4f6:29b1:c872 with SMTP id g9-20020a056512118900b004f629b1c872mr993739lfr.34.1686341965479; Fri, 09 Jun 2023 13:19:25 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:25 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:13 +0200 Subject: [PATCH v2 08/22] interconnect: qcom: smd-rpm: Add rpmcc handling skeleton code MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-8-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=3840; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=Be0qL+ODrjCDl44ro/wrhtm3D8xnErJxyrWWn+SRhEI=; b=7lsJVMnla/ctq1ICQUEQZnHZ5G+do1MXvq8+atVp+X9Wj7lkLh6SSBUpc/FVjWwAeOPlKXWkW oe4s086HNvSAU9FRarNzMqepczduiogllgwdRJB3hoKtaWyTL6kVf7u X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Introduce qcom_icc_rpm_set_bus_rate() in preparation for handling RPM clock resources within the interconnect framework. This lets us greatly simplify all of the code handling, as setting the rate comes down to: u32 rate_khz =3D max(clk.sleep_rate, clk.active_rate, clk_a.active_rate) write_to_rpm(clock.description, rate_khz); Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.h | 15 +++++++++++++++ drivers/interconnect/qcom/smd-rpm.c | 37 +++++++++++++++++++++++++++++++++= ++++ 2 files changed, 52 insertions(+) diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index 9b4ea4e39b9f..aec192321411 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -22,6 +22,18 @@ enum qcom_icc_type { QCOM_ICC_QNOC, }; =20 +/** + * struct rpm_clk_resource - RPM bus clock resource + * @resource_type: RPM resource type of the clock resource + * @clock_id: index of the clock resource of a specific resource type + * @branch: whether the resource represents a branch clock +*/ +struct rpm_clk_resource { + u32 resource_type; + u32 clock_id; + bool branch; +}; + #define NUM_BUS_CLKS 2 =20 /** @@ -47,6 +59,7 @@ struct qcom_icc_provider { int qos_offset; u64 bus_clk_rate[NUM_BUS_CLKS]; struct clk_bulk_data bus_clks[NUM_BUS_CLKS]; + const struct rpm_clk_resource *bus_clk_desc; struct clk_bulk_data *intf_clks; bool keep_alive; bool is_on; @@ -104,6 +117,7 @@ struct qcom_icc_desc { struct qcom_icc_node * const *nodes; size_t num_nodes; const char * const *bus_clocks; + const struct rpm_clk_resource *bus_clk_desc; const char * const *intf_clocks; size_t num_intf_clocks; bool keep_alive; @@ -125,5 +139,6 @@ int qnoc_remove(struct platform_device *pdev); =20 bool qcom_icc_rpm_smd_available(void); int qcom_icc_rpm_smd_send(int ctx, int rsc_type, int id, u32 val); +int qcom_icc_rpm_set_bus_rate(const struct rpm_clk_resource *clk, u32 acti= ve_rate, u32 sleep_rate); =20 #endif diff --git a/drivers/interconnect/qcom/smd-rpm.c b/drivers/interconnect/qco= m/smd-rpm.c index b0183262ba66..6c51e346b326 100644 --- a/drivers/interconnect/qcom/smd-rpm.c +++ b/drivers/interconnect/qcom/smd-rpm.c @@ -16,6 +16,7 @@ #include "icc-rpm.h" =20 #define RPM_KEY_BW 0x00007762 +#define QCOM_RPM_SMD_KEY_RATE 0x007a484b =20 static struct qcom_smd_rpm *icc_smd_rpm; =20 @@ -44,6 +45,38 @@ int qcom_icc_rpm_smd_send(int ctx, int rsc_type, int id,= u32 val) } EXPORT_SYMBOL_GPL(qcom_icc_rpm_smd_send); =20 +int qcom_icc_rpm_set_bus_rate(const struct rpm_clk_resource *clk, u32 acti= ve_rate, u32 sleep_rate) +{ + struct clk_smd_rpm_req req =3D { + .key =3D cpu_to_le32(QCOM_RPM_SMD_KEY_RATE), + .nbytes =3D cpu_to_le32(sizeof(u32)), + }; + int ret; + + /* Branch clocks are only on/off */ + if (clk->branch) { + active_rate =3D !!active_rate; + sleep_rate =3D !!sleep_rate; + } + + req.value =3D cpu_to_le32(active_rate); + ret =3D qcom_rpm_smd_write(icc_smd_rpm, + QCOM_SMD_RPM_ACTIVE_STATE, + clk->resource_type, + clk->clock_id, + &req, sizeof(req)); + if (ret) + return ret; + + req.value =3D cpu_to_le32(sleep_rate); + return qcom_rpm_smd_write(icc_smd_rpm, + QCOM_SMD_RPM_SLEEP_STATE, + clk->resource_type, + clk->clock_id, + &req, sizeof(req)); +} +EXPORT_SYMBOL_GPL(qcom_icc_rpm_set_bus_rate); + static int qcom_icc_rpm_smd_remove(struct platform_device *pdev) { icc_smd_rpm =3D NULL; @@ -60,6 +93,10 @@ static int qcom_icc_rpm_smd_probe(struct platform_device= *pdev) return -ENODEV; } =20 + /* We need the clock driver to kick things off first to avoid ugly races = */ + if (!qcom_smd_rpm_scaling_available()) + return -EPROBE_DEFER; + return 0; } =20 --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 0A156C7EE37 for ; Fri, 9 Jun 2023 20:20:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232505AbjFIUUZ (ORCPT ); Fri, 9 Jun 2023 16:20:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232087AbjFIUTr (ORCPT ); Fri, 9 Jun 2023 16:19:47 -0400 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48E293AB9 for ; Fri, 9 Jun 2023 13:19:28 -0700 (PDT) Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-4f660e57123so672727e87.3 for ; Fri, 09 Jun 2023 13:19:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341966; x=1688933966; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=snY4D3sGE1e7ie+yqodjXNQjLORoB4Le2XvDi4Nyvxs=; b=J/RvT53uKn81vykyxRc/xqktVn+5kbRkxfAwPc3YFPQllMKtM8FwnD9rhWA+pKWMLc K6vNow2B1biKhSir8swIoykglJ/4/pRA1vuxpLIQpJXpCESq8MVIc8q9QM7AYit+k1Gl IM4sm9QPRSlqYKpeLTvJJH2jkdUnjTIzmPiLU0OcoPTmEYbRFBUwkT2zZvZ6GlBiJ5fP UuckAZoBRTsulr/bGdr9jRvBlkv1XVWmTZRVeDGKelUEyrRu9FUosiwxYx61706J3u5F cgIqBVdfMBvFmTUhZ0gIhVtTSRJ1vndn7uLUputE+KlwGFXwbgullw9VOOIRb6xhbgA+ ecGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341966; x=1688933966; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=snY4D3sGE1e7ie+yqodjXNQjLORoB4Le2XvDi4Nyvxs=; b=WImUBIxwm/viBmOp/WzLNUr+3uv6ztSH1hugD7tML4vFoKcSrNsLGGL7vW1OYl9813 b3bTAsShrk5tBGCRpyRGWdTZPoG4lgH57jrfW5wfN/MOaVNfz9Noz4iDIsZts0ZMysw3 1qsiFERlvbtnIcAXgVQ7jQXcICRrhrH+Yo4IrZjhyBYKTrNxPliwhD7/tB4ia3a1QVB8 WBu1OJzx+LqknCKaUlb7ELaa9kmwWFOgQBbe/FQB4TLVRBrLq1TIqp97TIRvV0QeVQyq Q6hDHKc0aNqP6WU2CCIiuEMfIOMbNPAgZLcluK4TSImqjh12dGRui2CS+bm9yEn/TWu6 /FYQ== X-Gm-Message-State: AC+VfDzrF1q3px0b1BceTw8Z8uj4cbxSzcNEUd5VsGXtCd29jNi7T3HI Vls+oe6jPppiAIU6hgy3GkuUqw== X-Google-Smtp-Source: ACHHUZ4YG2m0AHWBroKJD4DK0DBjSY287zay8B88MMNwM9MQKxSfGkbCLkA2SNWs7kqpkmSPaOdZKQ== X-Received: by 2002:ac2:5b11:0:b0:4f1:dcd2:ab6d with SMTP id v17-20020ac25b11000000b004f1dcd2ab6dmr1817826lfn.28.1686341966681; Fri, 09 Jun 2023 13:19:26 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:26 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:14 +0200 Subject: [PATCH v2 09/22] interconnect: qcom: Add missing headers in icc-rpm.h MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-9-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=801; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=FNDzStoIOSOrT5/ip8w/4v5ja9884ytJ2coU8jem68w=; b=hBGidsDhfmmwmmVYnFNuJvcKCzPCRU3vIZ+rg2ySGtT8vqPooBiRp4rXSKIDR5MsBlDFKRoOT 3W0QtIiT5uqCzs5cZoVFyYyO3g8IGtbS0lToJRRsP+3vr9CHHAWfed3 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently the header does not provide all the required dependencies. Fix it. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index aec192321411..057a1a8b3cb9 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -6,6 +6,8 @@ #ifndef __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H #define __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H =20 +#include +#include #include =20 #include --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 8C619C7EE45 for ; Fri, 9 Jun 2023 20:20:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232498AbjFIUUV (ORCPT ); Fri, 9 Jun 2023 16:20:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232164AbjFIUTr (ORCPT ); Fri, 9 Jun 2023 16:19:47 -0400 Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FA993C12 for ; Fri, 9 Jun 2023 13:19:30 -0700 (PDT) Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-4f644dffd71so2823609e87.1 for ; Fri, 09 Jun 2023 13:19:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341968; x=1688933968; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=h+fKLnlHalDuAg33z9Jtbv/mJQQ+EEa4+LdoMppCsko=; b=FZox072qCZ8+Vgc5KjdNja5smMo2cEH6xpKztsqEF5trGJxhoiMToftA5/7BPibrKO JTaQi6LTL1AsuMGw/O9hnee01Jx8XaWqqo4FtEpW8eLgshpJYZEXRdrkWAMfkAThxvYx H8X4OqimxE3JoUrHoX+ShTWoZ2u3sAXinLHAwt/dhI/5yxI4Oosk2wGtVBenJJumPyLb GODpo09XSsf7lkq8lZgdgmze2DPvAXslkNYJI6hgBdY+IQ429ooZwwtv4lkjRxX369J4 FaEYidvm8RYaCZu4qT2t1qCjzMgvwJ6Vr9vdYjFSVLK8dNSZW0d2Jve+BMTTIVtwIao4 6TPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341968; x=1688933968; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=h+fKLnlHalDuAg33z9Jtbv/mJQQ+EEa4+LdoMppCsko=; b=PYN8Hgh8XdDuAngqd0z1JOUFJ2NF6wGAlXH4lTvT73Wv2wtsQTNaMZXWPHtXdJ2JGX zrgHt0H4ReVO69AZ3GBu5kj1TZASZy/seAAT6aFc3gEpnW9j8Gt3UMhPVpna9bdNWpGT rjRz50e68Jl91PHIpDRGzmiDNMyUKJMGHtS2dzcl06nEfxzPxupeLgUzn1pVVBg8XjDK kcGb+YzaKANTZ8ByGl61yPmHwso2witDsaZovs7Lyg6sQ2+XUX25u5aSfvStKin4lMly mewqEHqqsP+YRa1aGRfjVTH7ZER4uQDG3BwNi8u9JwH7ACeL66KLUn92kvwP/zXfx0bO yimw== X-Gm-Message-State: AC+VfDwrr08IbTJIzOHVXI0Ldp2cVs03JxiCsW9m3QSU4X7jk6Mo60Hd EyfM4yyals/U6I4pDEODwVO8XA== X-Google-Smtp-Source: ACHHUZ7Jg71QhNkh0TVgjGSlBoPjUiegm74pkiBf41tE2jcyGDtYqSkXKZOBSwvQTP+MTWyLDs987g== X-Received: by 2002:ac2:4d9b:0:b0:4f3:a61d:19d2 with SMTP id g27-20020ac24d9b000000b004f3a61d19d2mr1591779lfe.36.1686341967962; Fri, 09 Jun 2023 13:19:27 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:27 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:15 +0200 Subject: [PATCH v2 10/22] interconnect: qcom: Define RPM bus clocks MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-10-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=3759; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=x0HK0TeLMEP7kpXmLD7jervQe77EX+FiCHoc2go6cXk=; b=eIMSoSow1QKNvTDcfCtM27veub/s1S90w0vRNDyG2OsSNUnMncdygzEMKGfOL3FbhA/e6gUYg 9YgZZCGB7ovC7Hr9kLoo05AjRhFRPuCCDlJApxei75dxRUOvjDKYQjX X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add the definitions for RPM bus clocks that will be used by many different platforms. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/Makefile | 2 +- drivers/interconnect/qcom/icc-rpm-clocks.c | 66 ++++++++++++++++++++++++++= ++++ drivers/interconnect/qcom/icc-rpm.h | 13 ++++++ 3 files changed, 80 insertions(+), 1 deletion(-) diff --git a/drivers/interconnect/qcom/Makefile b/drivers/interconnect/qcom= /Makefile index ab988926433c..80d9d2da95d1 100644 --- a/drivers/interconnect/qcom/Makefile +++ b/drivers/interconnect/qcom/Makefile @@ -29,7 +29,7 @@ qnoc-sm8250-objs :=3D sm8250.o qnoc-sm8350-objs :=3D sm8350.o qnoc-sm8450-objs :=3D sm8450.o qnoc-sm8550-objs :=3D sm8550.o -icc-smd-rpm-objs :=3D smd-rpm.o icc-rpm.o +icc-smd-rpm-objs :=3D smd-rpm.o icc-rpm.o icc-rpm-clocks.o =20 obj-$(CONFIG_INTERCONNECT_QCOM_BCM_VOTER) +=3D icc-bcm-voter.o obj-$(CONFIG_INTERCONNECT_QCOM_MSM8916) +=3D qnoc-msm8916.o diff --git a/drivers/interconnect/qcom/icc-rpm-clocks.c b/drivers/interconn= ect/qcom/icc-rpm-clocks.c new file mode 100644 index 000000000000..a195bf32aff4 --- /dev/null +++ b/drivers/interconnect/qcom/icc-rpm-clocks.c @@ -0,0 +1,66 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2023 Linaro Ltd + */ + +#include + +#include "icc-rpm.h" + +const struct rpm_clk_resource aggre1_clk =3D { + .resource_type =3D QCOM_SMD_RPM_AGGR_CLK, + .clock_id =3D 1, +}; + +const struct rpm_clk_resource aggre2_clk =3D { + .resource_type =3D QCOM_SMD_RPM_AGGR_CLK, + .clock_id =3D 2, +}; + +const struct rpm_clk_resource bimc_clk =3D { + .resource_type =3D QCOM_SMD_RPM_MEM_CLK, + .clock_id =3D 0, +}; + +const struct rpm_clk_resource bus_0_clk =3D { + .resource_type =3D QCOM_SMD_RPM_BUS_CLK, + .clock_id =3D 0, +}; + +const struct rpm_clk_resource bus_1_clk =3D { + .resource_type =3D QCOM_SMD_RPM_BUS_CLK, + .clock_id =3D 1, +}; + +const struct rpm_clk_resource bus_2_clk =3D { + .resource_type =3D QCOM_SMD_RPM_BUS_CLK, + .clock_id =3D 2, +}; + +const struct rpm_clk_resource mmaxi_0_clk =3D { + .resource_type =3D QCOM_SMD_RPM_MMAXI_CLK, + .clock_id =3D 0, +}; + +const struct rpm_clk_resource mmaxi_1_clk =3D { + .resource_type =3D QCOM_SMD_RPM_MMAXI_CLK, + .clock_id =3D 1, +}; + +const struct rpm_clk_resource qup_clk =3D { + .resource_type =3D QCOM_SMD_RPM_QUP_CLK, + .clock_id =3D 0, +}; + +/* Branch clocks */ +const struct rpm_clk_resource aggre1_branch_clk =3D { + .resource_type =3D QCOM_SMD_RPM_AGGR_CLK, + .clock_id =3D 1, + .branch =3D true, +}; + +const struct rpm_clk_resource aggre2_branch_clk =3D { + .resource_type =3D QCOM_SMD_RPM_AGGR_CLK, + .clock_id =3D 2, + .branch =3D true, +}; diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index 057a1a8b3cb9..99e34f684c85 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -136,6 +136,19 @@ enum qos_mode { NOC_QOS_MODE_BYPASS, }; =20 +extern const struct rpm_clk_resource aggre1_clk; +extern const struct rpm_clk_resource aggre2_clk; +extern const struct rpm_clk_resource bimc_clk; +extern const struct rpm_clk_resource bus_0_clk; +extern const struct rpm_clk_resource bus_1_clk; +extern const struct rpm_clk_resource bus_2_clk; +extern const struct rpm_clk_resource mmaxi_0_clk; +extern const struct rpm_clk_resource mmaxi_1_clk; +extern const struct rpm_clk_resource qup_clk; + +extern const struct rpm_clk_resource aggre1_branch_clk; +extern const struct rpm_clk_resource aggre2_branch_clk; + int qnoc_probe(struct platform_device *pdev); int qnoc_remove(struct platform_device *pdev); =20 --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 6D0AAC7EE45 for ; Fri, 9 Jun 2023 20:20:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232321AbjFIUUM (ORCPT ); Fri, 9 Jun 2023 16:20:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232211AbjFIUTs (ORCPT ); Fri, 9 Jun 2023 16:19:48 -0400 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0412A3C1E for ; Fri, 9 Jun 2023 13:19:30 -0700 (PDT) Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2b1ba50e50bso24175441fa.1 for ; Fri, 09 Jun 2023 13:19:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341969; x=1688933969; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=M/J5ZhP262QYGYmarLd4yzENGlRt7ikJiCOlHTeoidM=; b=ne9sxJh4WRlTO6IrZRVrQCOT6AqS5fidAFKk6ofL9ONi8f5K1Ytun+KGssoGIpHWIp tt1Eq/so81xZBLBmU3/sRsYxasS+J7dyNR+inK8vR8kawjEWRiXlgLQGPFGoryIgE+la 5+NpSqt3SIm5n26fqsCrfe5ylD1IrxexTreffeo475Q5igC5AfUwEw/81fiRVSIiLzF+ AfbxPJY0vbJZBWql/0EtOAz0hwBOFz1Y3e1zHt4oJ/1DQTQNxl6b85FQ9sv81BzjM2FS yWxyKhd4nN36aieiLUuFFn2fuMlmXPYjAdD3/7AZ1sTE+Ylqs9kd3p45ABZCoC8H96me 6mTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341969; x=1688933969; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M/J5ZhP262QYGYmarLd4yzENGlRt7ikJiCOlHTeoidM=; b=BEtnY9AsDqyU9czrfaTGQkaG8Jz/67jdOAtR97jGmvZCdtNif+klx5eLDGL991+l0q 0sUSu5EEdgttWlGGAOaYXtu38EfBT0CkNN5AltMA0PMoxNcjWdR+T7SYAQ9tmTJdhUZe lPJlK6toffRq8Y3+KV/YndOwxw8gsJaKzSD8HfjdW1Uf1AeuNuly6wVsnV+lD79T+g0C Cqv0oxb2rfylyFIJTlXus3+2/107n09UtCAtEnw2hzx8vhD8d5V/txaNxux928iVg/A7 XHhZaCh1bVPEivVa5QQF8QYz9XSTgjc+ob53zlZWy23Zz6npWwF4ScfPow3EKBlQGhXf bvkg== X-Gm-Message-State: AC+VfDxn55v/gDjtDOuNOjUF2D0pm5o58JWTgZvjM366NtctvHdsxRpy XzV3szrcghxaIJcZGQU5o2/MMg== X-Google-Smtp-Source: ACHHUZ4xqAK8AuledRjnOigCBShad1if3VHAIZpwD2WAqQQSmIFxU/DlP9VVhT+KWDseAfEuDp1OnA== X-Received: by 2002:a19:6706:0:b0:4f3:aa29:b663 with SMTP id b6-20020a196706000000b004f3aa29b663mr1474307lfc.35.1686341969154; Fri, 09 Jun 2023 13:19:29 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:28 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:16 +0200 Subject: [PATCH v2 11/22] interconnect: qcom: sdm660: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-11-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=1986; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=Krc2Kcr5fnOQoU3m0Y+nr01slcqtM3Q1E0UfX4Ye6Q4=; b=sOxKuMZDi2Sv0ZJT+rBA5GRTGFjZDU/L2gedaTsYn1y0hrQsXEdNhtuG7lfrBWqHsgVCQ2cX8 2+dKfhyzUXqDotzTIycNzhOC8Y1Krk8I1xRlDwjJZJ15UdXvFUy/yRz X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/sdm660.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom= /sdm660.c index 003fc7d110a7..5743ed680e8e 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -1511,6 +1511,7 @@ static const struct qcom_icc_desc sdm660_a2noc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D sdm660_a2noc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_a2noc_nodes), + .bus_clk_desc =3D &aggre2_clk, .intf_clocks =3D a2noc_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(a2noc_intf_clocks), .regmap_cfg =3D &sdm660_a2noc_regmap_config, @@ -1539,6 +1540,7 @@ static const struct qcom_icc_desc sdm660_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D sdm660_bimc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &sdm660_bimc_regmap_config, }; =20 @@ -1593,6 +1595,7 @@ static const struct qcom_icc_desc sdm660_cnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D sdm660_cnoc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_cnoc_nodes), + .bus_clk_desc =3D &bus_2_clk, .regmap_cfg =3D &sdm660_cnoc_regmap_config, }; =20 @@ -1655,6 +1658,7 @@ static const struct qcom_icc_desc sdm660_mnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D sdm660_mnoc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_mnoc_nodes), + .bus_clk_desc =3D &mmaxi_0_clk, .intf_clocks =3D mm_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(mm_intf_clocks), .regmap_cfg =3D &sdm660_mnoc_regmap_config, @@ -1692,6 +1696,7 @@ static const struct qcom_icc_desc sdm660_snoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D sdm660_snoc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_snoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &sdm660_snoc_regmap_config, }; =20 --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 3118AC7EE2E for ; Fri, 9 Jun 2023 20:20:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232515AbjFIUU3 (ORCPT ); Fri, 9 Jun 2023 16:20:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32924 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232265AbjFIUTt (ORCPT ); Fri, 9 Jun 2023 16:19:49 -0400 Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 53D413C26 for ; Fri, 9 Jun 2023 13:19:32 -0700 (PDT) Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-4f629ccb8ebso2747882e87.1 for ; Fri, 09 Jun 2023 13:19:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341970; x=1688933970; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=sfWaXpFcH3gkTKoNeoEghs9YVVozZ9w4ELuAa+IL8Vs=; b=zFkpS0BV/SsoVqAGeQaz2khOLEKklC1JPIrd7NM9sHjp6gi1oD0jhfSe8fX03BrSsi uvoV7pl5yYUbOolSFQ4HW/qBaGDsCyIBcEdnq7Koeh2N6ZmL+b3EYPanhaxhTNtnP59g uvY1ZDFYXTmb7z0CmT8Zco61nV57I/jqmrYrPWZlFmisDfKUE1MZV2dq+pTcCEBfSr4Y zM5HNzUIW0jglpDg+fgXtsP20G6jtcK4AQURngfGyzM8cYemhRgPfgrGt0V7N0QSbQH6 5phmz65GvZ6Z7QuRAjk31Evq4YA6nMcMeckJtpd7VWUW6ProfqSf2WIMro7iu6zUsot7 Wegg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341970; x=1688933970; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sfWaXpFcH3gkTKoNeoEghs9YVVozZ9w4ELuAa+IL8Vs=; b=GvzfvngAyyRx8k9Aq4ltQ0LlFo/Y3KI6PdiWdyoPAJOFfW/jR6fiEnHrD/tVi5/hMR FCEirZygSnjBaZ+FFnL7tpi49tBMNc02Khrrd2DL/ZJCzxQ0d+SFAG8N6XYrJRtBAEdw N5ia+qcsv3cVkgv05D9E1zuvTYl1RvoBgs+6/VpRmDfk6BOhI1sMa/uTI6qRBtmTXBeq 99gFJXWqHchixe+BOCvJbhWCml+zQebz2NfABCVzWhNZkPf9qw2Uw2des/N7VYqnbjHY FiOwsj1GgSr5mZtuTNa9rPIPg1TmFz/2l+tZVaSZqBHVJXu//Blh6mRdxFQ/WRPraKPX u+gw== X-Gm-Message-State: AC+VfDx3BrsZxQDlVnd0HKKqJ3wZ22MfHaSUx6YW9Ps2OgeSdjyOsT6E c5eU+erc27p4h3tQUVfMASGPIw== X-Google-Smtp-Source: ACHHUZ6VSSXouAQHg5UXPIPqLWpC0hyNoUhSDAVwGnZG/9m//9N7IDVD+px6fLT7Mro8MmkDLjD/6A== X-Received: by 2002:a19:6916:0:b0:4f4:ce78:2f17 with SMTP id e22-20020a196916000000b004f4ce782f17mr1345047lfc.13.1686341970641; Fri, 09 Jun 2023 13:19:30 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:30 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:17 +0200 Subject: [PATCH v2 12/22] interconnect: qcom: msm8996: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-12-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=2380; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=jls2pE5wAdO3X2AaNe/A0wroCOxxq+TCympGtPIPMpo=; b=rP6XOr3LusL4T9xskwSr5L5u2YXiqqVkAJNCrF4caKjk4JsSXIJCxQLkNRFH5ulk6adTPEOpa 23bSe5LZ5NNBEhUejxrWXuDdhioXVbWES876eZzNvGGbVOTGXWA293u X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/msm8996.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/interconnect/qcom/msm8996.c b/drivers/interconnect/qco= m/msm8996.c index 1f7e88a37acd..a596f4035d2e 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -1840,6 +1840,7 @@ static const struct qcom_icc_desc msm8996_a1noc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D a1noc_nodes, .num_nodes =3D ARRAY_SIZE(a1noc_nodes), + .bus_clk_desc =3D &aggre1_branch_clk, .regmap_cfg =3D &msm8996_a1noc_regmap_config }; =20 @@ -1861,6 +1862,7 @@ static const struct qcom_icc_desc msm8996_a2noc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D a2noc_nodes, .num_nodes =3D ARRAY_SIZE(a2noc_nodes), + .bus_clk_desc =3D &aggre2_branch_clk, .intf_clocks =3D a2noc_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(a2noc_intf_clocks), .regmap_cfg =3D &msm8996_a2noc_regmap_config @@ -1889,6 +1891,7 @@ static const struct qcom_icc_desc msm8996_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D bimc_nodes, .num_nodes =3D ARRAY_SIZE(bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &msm8996_bimc_regmap_config }; =20 @@ -1947,6 +1950,7 @@ static const struct qcom_icc_desc msm8996_cnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D cnoc_nodes, .num_nodes =3D ARRAY_SIZE(cnoc_nodes), + .bus_clk_desc =3D &bus_2_clk, .regmap_cfg =3D &msm8996_cnoc_regmap_config }; =20 @@ -2000,6 +2004,7 @@ static const struct qcom_icc_desc msm8996_mnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D mnoc_nodes, .num_nodes =3D ARRAY_SIZE(mnoc_nodes), + .bus_clk_desc =3D &mmaxi_0_clk, .intf_clocks =3D mm_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(mm_intf_clocks), .regmap_cfg =3D &msm8996_mnoc_regmap_config @@ -2038,6 +2043,7 @@ static const struct qcom_icc_desc msm8996_pnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D pnoc_nodes, .num_nodes =3D ARRAY_SIZE(pnoc_nodes), + .bus_clk_desc =3D &bus_0_clk, .regmap_cfg =3D &msm8996_pnoc_regmap_config }; =20 @@ -2082,6 +2088,7 @@ static const struct qcom_icc_desc msm8996_snoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D snoc_nodes, .num_nodes =3D ARRAY_SIZE(snoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &msm8996_snoc_regmap_config }; =20 --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 CF443C7EE2E for ; Fri, 9 Jun 2023 20:20:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230327AbjFIUUc (ORCPT ); Fri, 9 Jun 2023 16:20:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33020 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232324AbjFIUTu (ORCPT ); Fri, 9 Jun 2023 16:19:50 -0400 Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D15EA3C3D for ; Fri, 9 Jun 2023 13:19:33 -0700 (PDT) Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-4f62d93f38aso2809331e87.0 for ; Fri, 09 Jun 2023 13:19:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341972; x=1688933972; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oxwAlvsxTG2NJKirdi7L920nJWliszLcfh8qb5HaEiU=; b=Pu1eMhlvtx2syAfk6O/Kew64LxKcAeWFOSBhLgK+EkjXBWO9dDhA2hUvZR94D4GyVc zNyAXWqtcjDID4K8OmwgtVsL1WSrZKwB0ZS0+rFkt/cHJL+HdUgFMJUDbFYhqNOu8aUC jwPX5/3tDo9n2xndATcljDJYnzQwtUNY5kVJdGVjH6sh1L9C33ymuNtp1so7mxmATK2q 7hcOWJ5i0j+6E1JKAVqUtUIh1o3fcV9bKHkVqI0911138jIF5ZP9pm87T+kJY9wcskfH GiQFzGGwAZ4rGNbp4AXWHM+ToE5VMYdHVoGLSREPvBzF/ey1f9Mzzwso8SeN7CEuxjTT Xtkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341972; x=1688933972; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oxwAlvsxTG2NJKirdi7L920nJWliszLcfh8qb5HaEiU=; b=CSNkp/4QA0PbVh+caP+jjp4auC0drjAjDqJ6IUuI8Ndg+tqf/LVXdhvEz8Be4xOCyE 6/KI7IHhmsScR8adgPPNYS9X/X2EVoGMsH9cx4BOjt43YMfkPWl6uiymcqnQvuQFvb+R +fsVSLP2Qw5/fbiIfozRIOTiReg93/czTrkYOyjfciU8yWCa+sLywQ6f4KIjxWc3dsdk rtMMcaZka3tFsokqxpPTDzz8T3C3OwInlWrH3gO+arzrsUjq2hnvv1kq6b7u2RrZhikX qAvyKdWc5WRPOU4r7UavOgsaDBUai0EJQQa6fGY7R0ZhddFaVQNF5XznNf2bMYxiB8sn dNJg== X-Gm-Message-State: AC+VfDwLv7vT0MfRJdy+IwjVNlBBFh0I6A46qmO/nwrGpDxED2wiO5Nt 9nSqWv0XYhBLyMvkTWCkJDnQgw== X-Google-Smtp-Source: ACHHUZ4/Mlbad/Bz5Ye4ghUR+Ks8t1P3RipWOIYwo+g0JIb9jCoqD7/4hsUVpAYSxmcGvVndfscrew== X-Received: by 2002:ac2:5bca:0:b0:4ec:8853:136 with SMTP id u10-20020ac25bca000000b004ec88530136mr1760276lfn.12.1686341971890; Fri, 09 Jun 2023 13:19:31 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:31 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:18 +0200 Subject: [PATCH v2 13/22] interconnect: qcom: qcs404: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-13-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=1291; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=NibH4RmX92w9jFbYbYmeVzyLtbX9fV3dfXE9S9JnGAI=; b=TCpechMBmNATG7KGeUW31PLFuqm3NZxW7uiHDhtr0yC1lY68iIT1yDQ3b2mP4m5p+HjRj8PFP 4THtWoa3TEfBvWcVHk9/g8MjWvcFHHyCbJQFsbMvcjEKwPK6x9asXqQ X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/qcs404.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/interconnect/qcom/qcs404.c b/drivers/interconnect/qcom= /qcs404.c index 938283ddd0e3..9deb4d81104e 100644 --- a/drivers/interconnect/qcom/qcs404.c +++ b/drivers/interconnect/qcom/qcs404.c @@ -984,6 +984,7 @@ static struct qcom_icc_node * const qcs404_bimc_nodes[]= =3D { }; =20 static const struct qcom_icc_desc qcs404_bimc =3D { + .bus_clk_desc =3D &bimc_clk, .nodes =3D qcs404_bimc_nodes, .num_nodes =3D ARRAY_SIZE(qcs404_bimc_nodes), }; @@ -1038,6 +1039,7 @@ static struct qcom_icc_node * const qcs404_pcnoc_node= s[] =3D { }; =20 static const struct qcom_icc_desc qcs404_pcnoc =3D { + .bus_clk_desc =3D &bus_0_clk, .nodes =3D qcs404_pcnoc_nodes, .num_nodes =3D ARRAY_SIZE(qcs404_pcnoc_nodes), }; @@ -1066,6 +1068,7 @@ static struct qcom_icc_node * const qcs404_snoc_nodes= [] =3D { }; =20 static const struct qcom_icc_desc qcs404_snoc =3D { + .bus_clk_desc =3D &bus_1_clk, .nodes =3D qcs404_snoc_nodes, .num_nodes =3D ARRAY_SIZE(qcs404_snoc_nodes), }; --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 CB2CDC7EE37 for ; Fri, 9 Jun 2023 20:20:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231359AbjFIUUi (ORCPT ); Fri, 9 Jun 2023 16:20:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232387AbjFIUTw (ORCPT ); Fri, 9 Jun 2023 16:19:52 -0400 Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 10740420B for ; Fri, 9 Jun 2023 13:19:34 -0700 (PDT) Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-4f6170b1486so2804438e87.0 for ; Fri, 09 Jun 2023 13:19:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341973; x=1688933973; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Y5onO20dzjk2EC2OX/d1LUxW5LUluhqz+S0Vy1JWrck=; b=H76Q71eHL9VfsyY6tyyl2WcXpobMLvRXfPbj3Zx57XSqsk6vKFs6gOg22jq4rhoGDr BlQlm7xKinFVRU1q42HzpT0Of45Pdai1C7hS0Ygm0T7ZeCAjW4nKiOrWEsT/OO0loRVL 16ZgihyhggMsmdNowFWIB79SdLz1q/zceLgJ3kaOCtPtXuzgGOvQST9qYtW90snjdmun dZn5ZoWops4XtJ4ZjYVVe2WcwGqc6Q7Qv/6APwO5E2AHV5aU0pFni8Ihw11Nat4kGc8P AG78GuwNlfHzJCSNXiAfDYBYz7BF7iyGti/5SkB+Wg4S5e0WExHuQrHal1ZerR6KbfP1 9ALA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341973; x=1688933973; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y5onO20dzjk2EC2OX/d1LUxW5LUluhqz+S0Vy1JWrck=; b=MY6XAVyuvWUn/iRE8ol5Ec8weJYWA5+JA43PvDfedUlZBYiGakj/5uIiHXWSwmmOCj WzkYUQKGo5D507f7ac231NYfSa+3MRhR6dPUA3HHJSDnufUHwuEJUg7/wVhLDoTIm5Zh mbkZIMik5/wRKP4r1gDOcXDRY6KmOffOWbWUMyu1EkRScu5uofxWLEoTRDEH7SGBkazF WHLmF6Ewo77JX11HvyssY0lW0vRHW/8aw3Qz5J4kBzNB5fMo1/hiF/oC0FJCQKKqAtaU KABqKQQRFCQqGXEQTZ/j3p2jOhwaoaZ7k24SjnO1zChx/Fm6kflA8z5boA87egsJ/Sbk FHoA== X-Gm-Message-State: AC+VfDyYt1oJKmGxpsEEzyqUm3q3lrhs2RszlEaB6IMQ+3BWfxFp/pxJ fJpDxAjwq6Jee14vENtKADYlhQ== X-Google-Smtp-Source: ACHHUZ56wa3+cBZ4wkIRTyXpqlWO1adyJZToYnkp01tP0BKTKal08vLhqwMvgkKPK8PGEXzZr8SmPQ== X-Received: by 2002:a19:380e:0:b0:4f3:78dd:8e0b with SMTP id f14-20020a19380e000000b004f378dd8e0bmr905551lfa.32.1686341973210; Fri, 09 Jun 2023 13:19:33 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:32 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:19 +0200 Subject: [PATCH v2 14/22] interconnect: qcom: msm8939: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-14-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=1682; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=rte30PLdG0LgSDSUW6PXEcOPxUSZ9J+rm7lwZDwGmAo=; b=iOXzLo14/aH/k+LlvLy+aXX//+5t+jP4JBli0nQ1Jb39FIZGKiHElsxmprFPe75ZG/pEfsuTA EWhLX0HXulSCDD1TsM2Byo6pCBD0oRVZYgVMZ7tINgcoKjlbXyt3dBX X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio Reviewed-by: Stephan Gerhold --- drivers/interconnect/qcom/msm8939.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/interconnect/qcom/msm8939.c b/drivers/interconnect/qco= m/msm8939.c index 639566dce45a..94b11b590a8e 100644 --- a/drivers/interconnect/qcom/msm8939.c +++ b/drivers/interconnect/qcom/msm8939.c @@ -1284,6 +1284,7 @@ static const struct qcom_icc_desc msm8939_snoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D msm8939_snoc_nodes, .num_nodes =3D ARRAY_SIZE(msm8939_snoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &msm8939_snoc_regmap_config, .qos_offset =3D 0x7000, }; @@ -1304,6 +1305,7 @@ static const struct qcom_icc_desc msm8939_snoc_mm =3D= { .type =3D QCOM_ICC_NOC, .nodes =3D msm8939_snoc_mm_nodes, .num_nodes =3D ARRAY_SIZE(msm8939_snoc_mm_nodes), + .bus_clk_desc =3D &bus_2_clk, .regmap_cfg =3D &msm8939_snoc_regmap_config, .qos_offset =3D 0x7000, }; @@ -1332,6 +1334,7 @@ static const struct qcom_icc_desc msm8939_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D msm8939_bimc_nodes, .num_nodes =3D ARRAY_SIZE(msm8939_bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &msm8939_bimc_regmap_config, .qos_offset =3D 0x8000, }; @@ -1403,6 +1406,7 @@ static const struct qcom_icc_desc msm8939_pcnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D msm8939_pcnoc_nodes, .num_nodes =3D ARRAY_SIZE(msm8939_pcnoc_nodes), + .bus_clk_desc =3D &bus_0_clk, .regmap_cfg =3D &msm8939_pcnoc_regmap_config, .qos_offset =3D 0x7000, }; --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 5DCE9C7EE25 for ; Fri, 9 Jun 2023 20:20:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232557AbjFIUUl (ORCPT ); Fri, 9 Jun 2023 16:20:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232403AbjFIUTw (ORCPT ); Fri, 9 Jun 2023 16:19:52 -0400 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 580394216 for ; Fri, 9 Jun 2023 13:19:36 -0700 (PDT) Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-4f6370ddd27so2750318e87.0 for ; Fri, 09 Jun 2023 13:19:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341974; x=1688933974; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=yL7LimSkUpmanSTy0wtlUZtM4pffD5CjvvFdcF8Ze7o=; b=iipCaKbJH2wOrgHLIVyPR8llaR08XQVE2crxmS9sQstw0eCj1njBdvrN1dYEyY1iTB Fd+1UjvXBcMqZu8/zCujhue/IGZ05ax403Z+fj0NrpZ10BZL9O9y3auAOUfdhbwgM3Tn WA86EO6a8KwOE5nNV6FJBfq/VBQsMKyggC6xxzCBkdvCUoQSwEHj7Fw7WKip3sqn/zJ9 LmgkFX8t9RH8a9aE9CFKBu3ShIWfotW0NvnSYgg6IlzsntJsnr+/VF+ZzFR2eBocG9+T 6ghtJu8zMlxhGv9/eZ1ZPQeYuWNXQvB8SHWBpN+WR15XNAD9q+AH4Nq1Cr2/cx45y9rt UbSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341974; x=1688933974; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yL7LimSkUpmanSTy0wtlUZtM4pffD5CjvvFdcF8Ze7o=; b=UtjqeqDWeCQ0jM/3ColcIO0omqBoooru+Y15VeAZrZKepfPyT1It+rfvN0lyIFsROn iS6b4hvkxlRUZ36rjNfh2qzTPVTtFol1XcwkxSLQAftVMSgltIXVL7xS6mX2I/5AtGC4 iG8fFDjUP5tq+Oj8qKMN+PGDV2dsiLQvDES15askSe9dYbrmDPcB6xw7sykhIOP3CXIy 40Ji1J9L7+eWTXYXHEptpwmzk57HCzs/5mOZd1gY8vsMPXWDK6ZWiTt7kh/1wQt+38lI /uTjlCC4KZsWjRKqTFaQWOYxSvK1YBrUXK4tYR6lLsrn6SdxA7ckY3ep97a0qytCquLg RuwA== X-Gm-Message-State: AC+VfDzHLPHCDWMZskoyMT2RCQRP0LVKWb+1M79TwIXRQg61xQcrBtHo egqha3zhzimuzunMziaTD9aNpg== X-Google-Smtp-Source: ACHHUZ5NrY8HHg7Qc0dNMwxz5LCD9h5M63yhb9lPsfyXahSOzWiIVCEx/CetVavtaygEmKP6vTt26A== X-Received: by 2002:a19:e019:0:b0:4f3:ac64:84d9 with SMTP id x25-20020a19e019000000b004f3ac6484d9mr1754478lfg.20.1686341974540; Fri, 09 Jun 2023 13:19:34 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:34 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:20 +0200 Subject: [PATCH v2 15/22] interconnect: qcom: msm8916: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-15-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=1386; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=xhlOJEBugQss2pTP3O6oyCRi/KrlETAc0nKSQL7JH4I=; b=qbtAUIVOZARp02bUCslV8/25C9+BkepF6LM/2e0NztL8bWhPr26/hT7Ovl7Hh9j5aA7VVbfN6 sYuvR1AOLo5BuxK25YFdrQlkj5YFcoG8+Ae1ne1niJuH76PzakeXYWp X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio Reviewed-by: Stephan Gerhold --- drivers/interconnect/qcom/msm8916.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/interconnect/qcom/msm8916.c b/drivers/interconnect/qco= m/msm8916.c index 196b05879896..be2a190a8b52 100644 --- a/drivers/interconnect/qcom/msm8916.c +++ b/drivers/interconnect/qcom/msm8916.c @@ -1231,6 +1231,7 @@ static const struct qcom_icc_desc msm8916_snoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D msm8916_snoc_nodes, .num_nodes =3D ARRAY_SIZE(msm8916_snoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &msm8916_snoc_regmap_config, .qos_offset =3D 0x7000, }; @@ -1259,6 +1260,7 @@ static const struct qcom_icc_desc msm8916_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D msm8916_bimc_nodes, .num_nodes =3D ARRAY_SIZE(msm8916_bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &msm8916_bimc_regmap_config, .qos_offset =3D 0x8000, }; @@ -1328,6 +1330,7 @@ static const struct qcom_icc_desc msm8916_pcnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D msm8916_pcnoc_nodes, .num_nodes =3D ARRAY_SIZE(msm8916_pcnoc_nodes), + .bus_clk_desc =3D &bus_0_clk, .regmap_cfg =3D &msm8916_pcnoc_regmap_config, .qos_offset =3D 0x7000, }; --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 801ECC7EE25 for ; Fri, 9 Jun 2023 20:20:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232611AbjFIUUt (ORCPT ); Fri, 9 Jun 2023 16:20:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32928 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231966AbjFIUT6 (ORCPT ); Fri, 9 Jun 2023 16:19:58 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCDA4422E for ; Fri, 9 Jun 2023 13:19:38 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2b1afe57bdfso25026601fa.0 for ; Fri, 09 Jun 2023 13:19:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341976; x=1688933976; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=o0XnmH13ivRPPHGJLER9uxu6PJxvQI4F3jOrAVZw55g=; b=rpiwSdjfQ9BdDP/DX1r4nfr6hYl7BNN/o18V710tW1zfKxDnABH+ogb2L+I7ZrMMmC 0oSGKB4qUpQWAXjkc2Hzf62TnRcQiBFgK8w/sjNssbPJsfaTkyFBilAHWZuW6o0bC1pl TAs/myDrtJUMhsGyH0rCdYx8DyTWggg+COUpJ4ghVyuKKEDsXUIi/DSZxY0GracGfWTV cr3bue8ofQ2wo8EfY5rRfIgjP6Y+DvUuTR52ZilctXM534WshJj9H7F1a6seqTkwbCbt gYXgbWnQoiyNwRqbQtLgjn71IbmYGWEhc2HsOl+WT9UmX+w5hjWelYZV0NcQvojxHNov 8+3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341976; x=1688933976; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o0XnmH13ivRPPHGJLER9uxu6PJxvQI4F3jOrAVZw55g=; b=ge/O4m86gqtTnYXQvQNk2VzxiGQdKtZD9cX59dNfD+Ant+v75nIbEoab5dxOiqpVrD bABd7yPZzf4MBQCew8Xa32VxX/2Q4l71/rDlIQOc8/LolvSL+qlF3YEfhSMoQXjGKmDg 8dkUR1zzRYrFHjuCSF5KOGkO6Hl91Blpud5NtCboDC83DD4UhzPJqStXq0M9X7BupWZ4 C6KsFiRVsq1/9DnUaucBLyqk+rK3IAs/w2JarjqY9YAADPxkyNGbw0eexhh82jwRwv+r jqv2sakkhTem24qaSZay411vlUUCT6wfHI9EyYXL8tkts4Ln1iwyNclD4XS+XEr7lFqC exmw== X-Gm-Message-State: AC+VfDwOiDLpWrxYjNRzrSKDUuSnPyxfRV91aviwYw1YgbrsAxFAT64j nUtNVD4kgcolT2buT+l4kerr8g== X-Google-Smtp-Source: ACHHUZ7szUoaW+1ILi6JXfR9OAr5Hn1gM4PY3x+rNJBlwZIVQWGxDIqCG6MMMNjfWfB5gaSn/KiADQ== X-Received: by 2002:a19:6550:0:b0:4f4:b218:e85f with SMTP id c16-20020a196550000000b004f4b218e85fmr1252389lfj.31.1686341975882; Fri, 09 Jun 2023 13:19:35 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:35 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:21 +0200 Subject: [PATCH v2 16/22] interconnect: qcom: qcm2290: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-16-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=2388; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=tSBMAPt7cmsb0YEEInMBYypPFAnegUdevAoSi5GlaYA=; b=eij1jtJTLGM5s11Ad7Uh848QYLshxEG0qmBuSFdZUmvK1tri9NY7+/4nrvNJzksPHxbzOQpQ+ mjrGiBo/IIDBQEmpS2S777zDWxzZMhglGgXNSSwm9N4eswXh82tCq4d X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/qcm2290.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/interconnect/qcom/qcm2290.c b/drivers/interconnect/qco= m/qcm2290.c index cb636e67a5a4..2c7a76fab83c 100644 --- a/drivers/interconnect/qcom/qcm2290.c +++ b/drivers/interconnect/qcom/qcm2290.c @@ -1196,6 +1196,7 @@ static const struct qcom_icc_desc qcm2290_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D qcm2290_bimc_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &qcm2290_bimc_regmap_config, /* M_REG_BASE() in vendor msm_bus_bimc_adhoc driver */ .qos_offset =3D 0x8000, @@ -1251,6 +1252,7 @@ static const struct qcom_icc_desc qcm2290_cnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D qcm2290_cnoc_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_cnoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &qcm2290_cnoc_regmap_config, }; =20 @@ -1292,6 +1294,7 @@ static const struct qcom_icc_desc qcm2290_snoc =3D { .type =3D QCOM_ICC_QNOC, .nodes =3D qcm2290_snoc_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_snoc_nodes), + .bus_clk_desc =3D &bus_2_clk, .regmap_cfg =3D &qcm2290_snoc_regmap_config, /* Vendor DT node fab-sys_noc property 'qcom,base-offset' */ .qos_offset =3D 0x15000, @@ -1306,6 +1309,7 @@ static const struct qcom_icc_desc qcm2290_qup_virt = =3D { .type =3D QCOM_ICC_QNOC, .nodes =3D qcm2290_qup_virt_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_qup_virt_nodes), + .bus_clk_desc =3D &qup_clk, }; =20 static struct qcom_icc_node * const qcm2290_mmnrt_virt_nodes[] =3D { @@ -1319,6 +1323,7 @@ static const struct qcom_icc_desc qcm2290_mmnrt_virt = =3D { .type =3D QCOM_ICC_QNOC, .nodes =3D qcm2290_mmnrt_virt_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_mmnrt_virt_nodes), + .bus_clk_desc =3D &mmaxi_0_clk, .regmap_cfg =3D &qcm2290_snoc_regmap_config, .qos_offset =3D 0x15000, }; @@ -1333,6 +1338,7 @@ static const struct qcom_icc_desc qcm2290_mmrt_virt = =3D { .type =3D QCOM_ICC_QNOC, .nodes =3D qcm2290_mmrt_virt_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_mmrt_virt_nodes), + .bus_clk_desc =3D &mmaxi_1_clk, .regmap_cfg =3D &qcm2290_snoc_regmap_config, .qos_offset =3D 0x15000, }; --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 1D782C7EE37 for ; Fri, 9 Jun 2023 20:20:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232637AbjFIUUv (ORCPT ); Fri, 9 Jun 2023 16:20:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232103AbjFIUT6 (ORCPT ); Fri, 9 Jun 2023 16:19:58 -0400 Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FFEB423B for ; Fri, 9 Jun 2023 13:19:39 -0700 (PDT) Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-4f642a24568so2743974e87.2 for ; Fri, 09 Jun 2023 13:19:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341977; x=1688933977; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=cb9xdecodEODemYoEb87K9ta+9ODW7Umb800Ol1DryA=; b=qZRNYb4Bo+/7cX6qEu86m/QHxZHvVR/0NZm30urPlNSm24dYvyXnS3Dm0k5ss+CtH2 ZYRbC9OxtnjwATPKbmYakjcQt3BD94YxgXvJ8iM9vtPBuTtoxsBS9Y3xTVFds9U5DNFp qJD0gvH3mz9Gb9/A8ToPZDyY+qYBLPza4uWyvHLUkE2ZvaEmuZEIbtv6XFWsnYaJuED/ gkrirlE3RtWQJblrsb38EngqHelDl4U+6fFAIZwJ5Dpzi3GzzYqr44LTEIAM2wLbQ2YL 6Ba2QpHUXo9NcFbaSI2XgX3cdbJyxXkLV6p+E2ajHMjXwHGgY9RaCWIN+P3mtdDT1kto Wr2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341977; x=1688933977; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cb9xdecodEODemYoEb87K9ta+9ODW7Umb800Ol1DryA=; b=fkURAowc6q6x/vk2pfas9bSnCvEwX5raOpgUViubURYel0+5mfXJVpTJDqhfR9Uexy Pt/GGyQ10wl894FSYw4HdzYzMlMzz3TLSserSi4bYFk4I7IzwBpfg/J7sM0+Rbp/VQEC 0vOsIdgWMGb7gP519uIYxE2DZcyYPctC/c0rKPzhwbURayu7VvagOSaLBxWk68oeWx/8 kbKgaQ1lCsM+o+DmCcJfuRlZaThSZ49Dg0XAihzq6f8Emz7okY5umqr9cKtgH3xSytsv wxtWKgGUyYZEn9qcLRxaAxbRCMlcBeLBF37GbBBHjjlhs3rYoEWoePw5E2bzGfivD90J EIaw== X-Gm-Message-State: AC+VfDyUQdAB16YUDrxAbbsqMm8EaBIhNMuNyOtV7rrEJKMasVfW6WsG HTF57wJZWMI/2b/u3+Kp6fAJZA== X-Google-Smtp-Source: ACHHUZ4YbNI5DZk/qm+mBfW2Hdo2GPMEcmv2dEjacvj4xekfSBsXfb/fZdpAWD1xsrLzuuVQz3v/sA== X-Received: by 2002:a19:9101:0:b0:4f6:1863:6b47 with SMTP id t1-20020a199101000000b004f618636b47mr1507408lfd.42.1686341977119; Fri, 09 Jun 2023 13:19:37 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:36 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:22 +0200 Subject: [PATCH v2 17/22] interconnect: qcom: icc-rpm: Control bus rpmcc from icc MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-17-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=10137; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=fOhhClfVLnFquoGaJCo3CMfLNuorMvSsi2R+II9EBuU=; b=fHRtogQIJJdopGqOJNns6sC5uWJPr8lNn6DAAokpNgextWTESGxxMmRkIyfX2mWOG95pqvQiQ VBKrChq5Wl5BG9z+nBbwilCEsDivc38bXt/0UHKwgHVXMFOttIdVce1 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The sole purpose of bus clocks that were previously registered with rpmcc was to convey the aggregated bandwidth to RPM. There's no good reason to keep them outside the interconnect framework, as it only adds to the plentiful complexity. Add the required code to handle these clocks from within SMD RPM ICC. RPM-owned bus clocks are no longer considered a thing, but sadly we have to allow for the existence of HLOS-owned bus clocks, as some (mostly older) SoCs (ab)use these for bus scaling (e.g. MSM8998 and &mmcc AHB_CLK_SRC). This in turn is trivially solved with a single *clk, which is filled and used iff qp.bus_clk_desc is absent and we have a "bus" clock-names entry in the DT node. This change should(tm) be fully compatible with all sorts of old Device Trees as far as the interconnect functionality goes (modulo abusing bus clock handles, but that's a mistake in and of itself). Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 116 +++++++++++++++++++-------------= ---- drivers/interconnect/qcom/icc-rpm.h | 13 ++-- drivers/interconnect/qcom/msm8996.c | 1 - drivers/interconnect/qcom/sdm660.c | 1 - 4 files changed, 66 insertions(+), 65 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index b8ecf9538ab9..6d40815c5401 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -49,7 +49,7 @@ #define NOC_QOS_MODE_FIXED_VAL 0x0 #define NOC_QOS_MODE_BYPASS_VAL 0x2 =20 -#define ICC_BUS_CLK_MIN_RATE 19200000ULL +#define ICC_BUS_CLK_MIN_RATE 19200ULL /* kHz */ =20 static int qcom_icc_set_qnoc_qos(struct icc_node *src) { @@ -338,11 +338,10 @@ static int qcom_icc_set(struct icc_node *src, struct = icc_node *dst) struct qcom_icc_node *src_qn =3D NULL, *dst_qn =3D NULL; struct icc_provider *provider; u64 sum_bw; - u64 rate; + u64 active_rate, sleep_rate; u64 agg_avg[QCOM_ICC_NUM_BUCKETS], agg_peak[QCOM_ICC_NUM_BUCKETS]; u64 max_agg_avg; - int ret, i; - int bucket; + int ret; =20 src_qn =3D src->data; if (dst) @@ -364,49 +363,50 @@ static int qcom_icc_set(struct icc_node *src, struct = icc_node *dst) return ret; } =20 - for (i =3D 0; i < qp->num_bus_clks; i++) { - /* - * Use WAKE bucket for active clock, otherwise, use SLEEP bucket - * for other clocks. If a platform doesn't set interconnect - * path tags, by default use sleep bucket for all clocks. - * - * Note, AMC bucket is not supported yet. - */ - if (!strcmp(qp->bus_clks[i].id, "bus_a")) - bucket =3D QCOM_ICC_BUCKET_WAKE; - else - bucket =3D QCOM_ICC_BUCKET_SLEEP; - - rate =3D icc_units_to_bps(max(agg_avg[bucket], agg_peak[bucket])); - do_div(rate, src_qn->buswidth); - rate =3D min_t(u64, rate, LONG_MAX); - - /* - * Downstream checks whether the requested rate is zero, but it makes li= ttle sense - * to vote for a value that's below the lower threshold, so let's not do= so. - */ - if (bucket =3D=3D QCOM_ICC_BUCKET_WAKE && qp->keep_alive) - rate =3D max(ICC_BUS_CLK_MIN_RATE, rate); - - if (qp->bus_clk_rate[i] =3D=3D rate) - continue; - - ret =3D clk_set_rate(qp->bus_clks[i].clk, rate); - if (ret) { - pr_err("%s clk_set_rate error: %d\n", - qp->bus_clks[i].id, ret); + /* Some providers don't have a bus clock to scale */ + if (!qp->bus_clk_desc && !qp->bus_clk) + return 0; + + /* Intentionally keep the rates in kHz as that's what RPM accepts */ + active_rate =3D max(agg_avg[QCOM_SMD_RPM_ACTIVE_STATE], + agg_peak[QCOM_SMD_RPM_ACTIVE_STATE]); + do_div(active_rate, src_qn->buswidth); + + sleep_rate =3D max(agg_avg[QCOM_SMD_RPM_SLEEP_STATE], + agg_peak[QCOM_SMD_RPM_SLEEP_STATE]); + do_div(sleep_rate, src_qn->buswidth); + + /* + * Downstream checks whether the requested rate is zero, but it makes lit= tle sense + * to vote for a value that's below the lower threshold, so let's not do = so. + */ + if (qp->keep_alive) + active_rate =3D max(ICC_BUS_CLK_MIN_RATE, active_rate); + + /* Some providers have a non-RPM-owned bus clock - convert kHz->Hz for th= e CCF */ + if (qp->bus_clk) + return clk_set_rate(qp->bus_clk, 1000ULL * max(active_rate, sleep_rate)); + + /* RPM only accepts <=3DINT_MAX rates */ + active_rate =3D min_t(u32, active_rate, INT_MAX); + sleep_rate =3D min_t(u32, sleep_rate, INT_MAX); + + if ((active_rate !=3D qp->bus_clk_rate[QCOM_SMD_RPM_ACTIVE_STATE]) || + (sleep_rate !=3D qp->bus_clk_rate[QCOM_SMD_RPM_SLEEP_STATE])) { + ret =3D qcom_icc_rpm_set_bus_rate(qp->bus_clk_desc, + active_rate, + sleep_rate); + if (ret) return ret; - } - qp->bus_clk_rate[i] =3D rate; } =20 + /* Cache the rate after we've successfully commited it to RPM */ + qp->bus_clk_rate[QCOM_SMD_RPM_ACTIVE_STATE] =3D active_rate; + qp->bus_clk_rate[QCOM_SMD_RPM_SLEEP_STATE] =3D sleep_rate; + return 0; } =20 -static const char * const bus_clocks[] =3D { - "bus", "bus_a", -}; - int qnoc_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; @@ -448,6 +448,18 @@ int qnoc_probe(struct platform_device *pdev) if (!qp->intf_clks) return -ENOMEM; =20 + if (desc->bus_clk_desc) { + qp->bus_clk_desc =3D devm_kzalloc(dev, sizeof(*qp->bus_clk_desc), + GFP_KERNEL); + if (!qp->bus_clk_desc) + return -ENOMEM; + + qp->bus_clk_desc =3D desc->bus_clk_desc; + } else if (!IS_ERR(devm_clk_get(dev, "bus"))) { + /* Some older SoCs may have a single non-RPM-owned bus clock. */ + qp->bus_clk =3D devm_clk_get(dev, "bus"); + } + data =3D devm_kzalloc(dev, struct_size(data, nodes, num_nodes), GFP_KERNEL); if (!data) @@ -457,10 +469,6 @@ int qnoc_probe(struct platform_device *pdev) for (i =3D 0; i < cd_num; i++) qp->intf_clks[i].id =3D cds[i]; =20 - qp->num_bus_clks =3D desc->no_clk_scaling ? 0 : NUM_BUS_CLKS; - for (i =3D 0; i < qp->num_bus_clks; i++) - qp->bus_clks[i].id =3D bus_clocks[i]; - qp->keep_alive =3D desc->keep_alive; qp->type =3D desc->type; qp->qos_offset =3D desc->qos_offset; @@ -490,13 +498,11 @@ int qnoc_probe(struct platform_device *pdev) } =20 regmap_done: - ret =3D devm_clk_bulk_get(dev, qp->num_bus_clks, qp->bus_clks); - if (ret) - return ret; - - ret =3D clk_bulk_prepare_enable(qp->num_bus_clks, qp->bus_clks); - if (ret) - return ret; + if (qp->bus_clk) { + ret =3D clk_prepare_enable(qp->bus_clk); + if (ret) + return ret; + } =20 ret =3D devm_clk_bulk_get(dev, qp->num_intf_clks, qp->intf_clks); if (ret) @@ -566,7 +572,8 @@ int qnoc_probe(struct platform_device *pdev) icc_provider_deregister(provider); err_remove_nodes: icc_nodes_remove(provider); - clk_bulk_disable_unprepare(qp->num_bus_clks, qp->bus_clks); + if (qp->bus_clk) + clk_disable_unprepare(qp->bus_clk); =20 return ret; } @@ -578,7 +585,8 @@ int qnoc_remove(struct platform_device *pdev) =20 icc_provider_deregister(&qp->provider); icc_nodes_remove(&qp->provider); - clk_bulk_disable_unprepare(qp->num_bus_clks, qp->bus_clks); + if (qp->bus_clk) + clk_disable_unprepare(qp->bus_clk); =20 return 0; } diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index 99e34f684c85..11e7d503e4d0 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -36,32 +36,29 @@ struct rpm_clk_resource { bool branch; }; =20 -#define NUM_BUS_CLKS 2 - /** * struct qcom_icc_provider - Qualcomm specific interconnect provider * @provider: generic interconnect provider - * @num_bus_clks: the total number of bus_clks clk_bulk_data entries (0 or= 2) * @num_intf_clks: the total number of intf_clks clk_bulk_data entries * @type: the ICC provider type * @regmap: regmap for QoS registers read/write access * @bus_clk_rate: bus clock rate in Hz - * @bus_clks: the clk_bulk_data table of bus clocks + * @bus_clk_desc: a pointer to a rpm_clk_resource description of bus clocks * @intf_clks: a clk_bulk_data array of interface clocks + * @bus_clk: a pointer to a HLOS-owned bus clock * @qos_offset: offset to QoS registers * @keep_alive: whether to always keep a minimum vote on the bus clocks * @is_on: whether the bus is powered on */ struct qcom_icc_provider { struct icc_provider provider; - int num_bus_clks; int num_intf_clks; enum qcom_icc_type type; struct regmap *regmap; int qos_offset; - u64 bus_clk_rate[NUM_BUS_CLKS]; - struct clk_bulk_data bus_clks[NUM_BUS_CLKS]; + u32 bus_clk_rate[QCOM_SMD_RPM_STATE_NUM]; const struct rpm_clk_resource *bus_clk_desc; + struct clk *bus_clk; struct clk_bulk_data *intf_clks; bool keep_alive; bool is_on; @@ -118,12 +115,10 @@ struct qcom_icc_node { struct qcom_icc_desc { struct qcom_icc_node * const *nodes; size_t num_nodes; - const char * const *bus_clocks; const struct rpm_clk_resource *bus_clk_desc; const char * const *intf_clocks; size_t num_intf_clocks; bool keep_alive; - bool no_clk_scaling; enum qcom_icc_type type; const struct regmap_config *regmap_cfg; int qos_offset; diff --git a/drivers/interconnect/qcom/msm8996.c b/drivers/interconnect/qco= m/msm8996.c index a596f4035d2e..8081b3cb1025 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -1818,7 +1818,6 @@ static const struct qcom_icc_desc msm8996_a0noc =3D { .num_nodes =3D ARRAY_SIZE(a0noc_nodes), .intf_clocks =3D a0noc_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(a0noc_intf_clocks), - .no_clk_scaling =3D true, .regmap_cfg =3D &msm8996_a0noc_regmap_config }; =20 diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom= /sdm660.c index 5743ed680e8e..211fa1fa569c 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -1618,7 +1618,6 @@ static const struct qcom_icc_desc sdm660_gnoc =3D { .nodes =3D sdm660_gnoc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_gnoc_nodes), .regmap_cfg =3D &sdm660_gnoc_regmap_config, - .no_clk_scaling =3D true, }; =20 static struct qcom_icc_node * const sdm660_mnoc_nodes[] =3D { --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 50426C7EE37 for ; Fri, 9 Jun 2023 20:20:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232658AbjFIUUz (ORCPT ); Fri, 9 Jun 2023 16:20:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231990AbjFIUUE (ORCPT ); Fri, 9 Jun 2023 16:20:04 -0400 Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69D63448E for ; Fri, 9 Jun 2023 13:19:40 -0700 (PDT) Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-4f62d93f38aso2809453e87.0 for ; Fri, 09 Jun 2023 13:19:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341978; x=1688933978; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=V0P43FwyR0o/2PWnT5Mlya33wlLUHMbI8BwlA6DLTT0=; b=urFGFFFOc+iA/KgcUWZ567Q1o66WUi+J3qAqA5JBpyyxyLG8oz0g//ft8S75xGnqus EJxrk8dBPV07iJjTXMAYG4eydsGdNhQ4y4jQ5gjV9YTeqqcEY/Mq48yADSb8ICnkHc9w KQu6D2hGlA2nuFML42Q4wzGlNovvrUXkuXg/IYQoHv6jX67g05w7BQTUwUBxMsDQsBkx YvEpS5z3Jyr1Cip/FG/gRlHGHa7rfml/x3hPNRF3fBYTE/eiof3hbd62oq6R2+6GGqwc 8OZNv0dyBCL19K/3nhPEUQ2g6oH6rHwyc4dT3zjxO6cpcJJK9MRpEOGwXZ10Zlmb83/I KaPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341978; x=1688933978; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V0P43FwyR0o/2PWnT5Mlya33wlLUHMbI8BwlA6DLTT0=; b=TY1gxhbCqrUa2O6He5finzMujgQP8p6jnS169UyJCdwzW1NS8muZryzqibKBcXAvlG Kgl/+7lN+aRJE+VLfITGv9EmVgsmGFNTL3QrJR6e0WhU8r7LtTMqXq9JVf1cEVJvbjRD 6I+sPaZtF1GoW6aY2lGQIhrzVMx6Zgn19RNYqSq3ljlUJKSl3c1HLw8Bjrb8CR3UkKKP wA+Nvei+CzzI8pqh9qIeGGCHLe5ps5lEUU4dzAP6Lq0BEBm2eFtNG2Jym5CS54+f1Rh1 5so63SVdoHsmZ90o3azG3r8+Y25hBKvqYapjBrgSs2OOKxpVMxlBwbrKN6+77CsYrhLq Yasg== X-Gm-Message-State: AC+VfDxIOHAH9Z3rZXfolYsaSAV+tLFH5Ss9gadqnngXZPoOXOkyCeux vWT5X6Kq+k4EIhxQ9gD8PCs0pw== X-Google-Smtp-Source: ACHHUZ5DrUU35tPKQuuKtHlSMVVyTF1ys+rPEaXEQRPHlqSQwLOggFSrigG6PLmfXmRqIxexX0J9VA== X-Received: by 2002:ac2:505b:0:b0:4f6:19cc:36e0 with SMTP id a27-20020ac2505b000000b004f619cc36e0mr1635230lfm.39.1686341978524; Fri, 09 Jun 2023 13:19:38 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:38 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:23 +0200 Subject: [PATCH v2 18/22] clk: qcom: smd-rpm: Separate out interconnect bus clocks MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-18-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=26677; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=PYV9NPiLaxXrK8A3mWbRdzkavjHebPcaZ0bfC9RHuZA=; b=oZan9LkY1hPZFqFkrAVnPS4KQ8Bd/d60qUNJdGo3NZIj2siY/1ZKWV23le3y/VpNCI4DZ5Cdv 3tOcLUih2zIDIZ/Ep6e/9G2kUfR2JL1B8M6DXjAx6lnlsPhGll64YTc X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The interconnect bus clocks are now handled within the ICC framework. They still however need to get a kickstart *before* we call clk_smd_rpm_enable_scaling(), or RPM will assume that they should all be running at 0 kHz and the system will inevitably die. Separate them out to ensure such a kickstart can still take place. As a happy accident, the file got smaller: Total: Before=3D41951, After=3D41555, chg -0.94% Signed-off-by: Konrad Dybcio --- drivers/clk/qcom/clk-smd-rpm.c | 278 +++++++++++++++++--------------------= ---- 1 file changed, 115 insertions(+), 163 deletions(-) diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index 482fe30ee6f0..f8f5977408e0 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -168,6 +168,14 @@ struct clk_smd_rpm { struct rpm_smd_clk_desc { struct clk_smd_rpm **clks; size_t num_clks; + + /* + * Interconnect clocks are managed by the icc framework, this driver + * only kickstarts them so that they don't get gated between + * clk_smd_rpm_enable_scaling() and interconnect driver initialization. + */ + struct clk_smd_rpm **icc_clks; + size_t num_icc_clks; bool scaling_before_handover; }; =20 @@ -507,13 +515,69 @@ DEFINE_CLK_SMD_RPM_XO_BUFFER(div_clk1, 11, 19200000); DEFINE_CLK_SMD_RPM_XO_BUFFER(div_clk2, 12, 19200000); DEFINE_CLK_SMD_RPM_XO_BUFFER(div_clk3, 13, 19200000); =20 +static struct clk_smd_rpm *bimc_pcnoc_icc_clks[] =3D { + &clk_smd_rpm_bimc_clk, + &clk_smd_rpm_bus_0_pcnoc_clk, +}; + +static struct clk_smd_rpm *bimc_pcnoc_snoc_icc_clks[] =3D { + &clk_smd_rpm_bimc_clk, + &clk_smd_rpm_bus_0_pcnoc_clk, + &clk_smd_rpm_bus_1_snoc_clk, +}; + +static struct clk_smd_rpm *bimc_pcnoc_snoc_smmnoc_icc_clks[] =3D { + &clk_smd_rpm_bimc_clk, + &clk_smd_rpm_bus_0_pcnoc_clk, + &clk_smd_rpm_bus_1_snoc_clk, + &clk_smd_rpm_bus_2_sysmmnoc_clk, +}; + +static struct clk_smd_rpm *bimc_pcnoc_snoc_cnoc_ocmem_icc_clks[] =3D { + &clk_smd_rpm_bimc_clk, + &clk_smd_rpm_bus_0_pcnoc_clk, + &clk_smd_rpm_bus_1_snoc_clk, + &clk_smd_rpm_bus_2_cnoc_clk, + &clk_smd_rpm_ocmemgx_clk, +}; + +static struct clk_smd_rpm *msm8996_icc_clks[] =3D { + &clk_smd_rpm_bimc_clk, + &clk_smd_rpm_branch_aggre1_noc_clk, + &clk_smd_rpm_branch_aggre2_noc_clk, + &clk_smd_rpm_bus_0_pcnoc_clk, + &clk_smd_rpm_bus_1_snoc_clk, + &clk_smd_rpm_bus_2_cnoc_clk, + &clk_smd_rpm_mmssnoc_axi_rpm_clk, +}; + +static struct clk_smd_rpm *msm8998_icc_clks[] =3D { + &clk_smd_rpm_aggre1_noc_clk, + &clk_smd_rpm_aggre2_noc_clk, + &clk_smd_rpm_bimc_clk, + &clk_smd_rpm_bus_1_snoc_clk, + &clk_smd_rpm_bus_2_cnoc_clk, + &clk_smd_rpm_mmssnoc_axi_rpm_clk, +}; + +static struct clk_smd_rpm *sdm660_icc_clks[] =3D { + &clk_smd_rpm_aggre2_noc_clk, + &clk_smd_rpm_bimc_clk, + &clk_smd_rpm_bus_1_snoc_clk, + &clk_smd_rpm_bus_2_cnoc_clk, + &clk_smd_rpm_mmssnoc_axi_rpm_clk, +}; + +static struct clk_smd_rpm *sm_qnoc_icc_clks[] =3D { + &clk_smd_rpm_bimc_clk, + &clk_smd_rpm_bus_1_cnoc_clk, + &clk_smd_rpm_mmnrt_clk, + &clk_smd_rpm_mmrt_clk, + &clk_smd_rpm_qup_clk, + &clk_smd_rpm_bus_2_snoc_clk, +}; + static struct clk_smd_rpm *msm8909_clks[] =3D { - [RPM_SMD_PCNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PCNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_QPIC_CLK] =3D &clk_smd_rpm_qpic_clk, [RPM_SMD_QPIC_CLK_A] =3D &clk_smd_rpm_qpic_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, @@ -539,15 +603,11 @@ static struct clk_smd_rpm *msm8909_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8909 =3D { .clks =3D msm8909_clks, .num_clks =3D ARRAY_SIZE(msm8909_clks), + .icc_clks =3D bimc_pcnoc_snoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_icc_clks), }; =20 static struct clk_smd_rpm *msm8916_clks[] =3D { - [RPM_SMD_PCNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PCNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_qdss_a_clk, [RPM_SMD_BB_CLK1] =3D &clk_smd_rpm_bb_clk1, @@ -571,21 +631,15 @@ static struct clk_smd_rpm *msm8916_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8916 =3D { .clks =3D msm8916_clks, .num_clks =3D ARRAY_SIZE(msm8916_clks), + .icc_clks =3D bimc_pcnoc_snoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_icc_clks), }; =20 static struct clk_smd_rpm *msm8917_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_PNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_BIMC_GPU_CLK] =3D &clk_smd_rpm_bimc_gpu_clk, [RPM_SMD_BIMC_GPU_A_CLK] =3D &clk_smd_rpm_bimc_gpu_a_clk, - [RPM_SMD_SYSMMNOC_CLK] =3D &clk_smd_rpm_bus_2_sysmmnoc_clk, - [RPM_SMD_SYSMMNOC_A_CLK] =3D &clk_smd_rpm_bus_2_sysmmnoc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_qdss_a_clk, [RPM_SMD_BB_CLK1] =3D &clk_smd_rpm_bb_clk1, @@ -605,19 +659,13 @@ static struct clk_smd_rpm *msm8917_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8917 =3D { .clks =3D msm8917_clks, .num_clks =3D ARRAY_SIZE(msm8917_clks), + .icc_clks =3D bimc_pcnoc_snoc_smmnoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_smmnoc_icc_clks), }; =20 static struct clk_smd_rpm *msm8936_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_PCNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PCNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, - [RPM_SMD_SYSMMNOC_CLK] =3D &clk_smd_rpm_bus_2_sysmmnoc_clk, - [RPM_SMD_SYSMMNOC_A_CLK] =3D &clk_smd_rpm_bus_2_sysmmnoc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_qdss_a_clk, [RPM_SMD_BB_CLK1] =3D &clk_smd_rpm_bb_clk1, @@ -641,25 +689,17 @@ static struct clk_smd_rpm *msm8936_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8936 =3D { .clks =3D msm8936_clks, .num_clks =3D ARRAY_SIZE(msm8936_clks), + .icc_clks =3D bimc_pcnoc_snoc_smmnoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_smmnoc_icc_clks), }; =20 static struct clk_smd_rpm *msm8974_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_PNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_2_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_2_cnoc_a_clk, [RPM_SMD_MMSSNOC_AHB_CLK] =3D &clk_smd_rpm_bus_3_mmssnoc_ahb_clk, [RPM_SMD_MMSSNOC_AHB_A_CLK] =3D &clk_smd_rpm_bus_3_mmssnoc_ahb_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, [RPM_SMD_GFX3D_CLK_SRC] =3D &clk_smd_rpm_gfx3d_clk_src, [RPM_SMD_GFX3D_A_CLK_SRC] =3D &clk_smd_rpm_gfx3d_a_clk_src, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, - [RPM_SMD_OCMEMGX_CLK] =3D &clk_smd_rpm_ocmemgx_clk, - [RPM_SMD_OCMEMGX_A_CLK] =3D &clk_smd_rpm_ocmemgx_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_qdss_a_clk, [RPM_SMD_CXO_D0] =3D &clk_smd_rpm_cxo_d0, @@ -693,20 +733,14 @@ static struct clk_smd_rpm *msm8974_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8974 =3D { .clks =3D msm8974_clks, .num_clks =3D ARRAY_SIZE(msm8974_clks), + .icc_clks =3D bimc_pcnoc_snoc_cnoc_ocmem_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_cnoc_ocmem_icc_clks), .scaling_before_handover =3D true, }; =20 static struct clk_smd_rpm *msm8976_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_PCNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PCNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, - [RPM_SMD_SYSMMNOC_CLK] =3D &clk_smd_rpm_bus_2_sysmmnoc_clk, - [RPM_SMD_SYSMMNOC_A_CLK] =3D &clk_smd_rpm_bus_2_sysmmnoc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_qdss_a_clk, [RPM_SMD_BB_CLK1] =3D &clk_smd_rpm_bb_clk1, @@ -727,24 +761,15 @@ static struct clk_smd_rpm *msm8976_clks[] =3D { =20 static const struct rpm_smd_clk_desc rpm_clk_msm8976 =3D { .clks =3D msm8976_clks, - .num_clks =3D ARRAY_SIZE(msm8976_clks), + .icc_clks =3D bimc_pcnoc_snoc_smmnoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_smmnoc_icc_clks), }; =20 static struct clk_smd_rpm *msm8992_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_PNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_OCMEMGX_CLK] =3D &clk_smd_rpm_ocmemgx_clk, - [RPM_SMD_OCMEMGX_A_CLK] =3D &clk_smd_rpm_ocmemgx_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_2_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_2_cnoc_a_clk, [RPM_SMD_GFX3D_CLK_SRC] =3D &clk_smd_rpm_gfx3d_clk_src, [RPM_SMD_GFX3D_A_CLK_SRC] =3D &clk_smd_rpm_gfx3d_a_clk_src, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, [RPM_SMD_BB_CLK1] =3D &clk_smd_rpm_bb_clk1, [RPM_SMD_BB_CLK1_A] =3D &clk_smd_rpm_bb_clk1_a, [RPM_SMD_BB_CLK1_PIN] =3D &clk_smd_rpm_bb_clk1_pin, @@ -786,23 +811,15 @@ static struct clk_smd_rpm *msm8992_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8992 =3D { .clks =3D msm8992_clks, .num_clks =3D ARRAY_SIZE(msm8992_clks), + .icc_clks =3D bimc_pcnoc_snoc_cnoc_ocmem_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_cnoc_ocmem_icc_clks), }; =20 static struct clk_smd_rpm *msm8994_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_PNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_OCMEMGX_CLK] =3D &clk_smd_rpm_ocmemgx_clk, - [RPM_SMD_OCMEMGX_A_CLK] =3D &clk_smd_rpm_ocmemgx_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_2_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_2_cnoc_a_clk, [RPM_SMD_GFX3D_CLK_SRC] =3D &clk_smd_rpm_gfx3d_clk_src, [RPM_SMD_GFX3D_A_CLK_SRC] =3D &clk_smd_rpm_gfx3d_a_clk_src, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, [RPM_SMD_BB_CLK1] =3D &clk_smd_rpm_bb_clk1, [RPM_SMD_BB_CLK1_A] =3D &clk_smd_rpm_bb_clk1_a, [RPM_SMD_BB_CLK1_PIN] =3D &clk_smd_rpm_bb_clk1_pin, @@ -846,29 +863,17 @@ static struct clk_smd_rpm *msm8994_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8994 =3D { .clks =3D msm8994_clks, .num_clks =3D ARRAY_SIZE(msm8994_clks), + .icc_clks =3D bimc_pcnoc_snoc_cnoc_ocmem_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_cnoc_ocmem_icc_clks), }; =20 static struct clk_smd_rpm *msm8996_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_PCNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PCNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_2_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_2_cnoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, - [RPM_SMD_MMAXI_CLK] =3D &clk_smd_rpm_mmssnoc_axi_rpm_clk, - [RPM_SMD_MMAXI_A_CLK] =3D &clk_smd_rpm_mmssnoc_axi_rpm_a_clk, [RPM_SMD_IPA_CLK] =3D &clk_smd_rpm_ipa_clk, [RPM_SMD_IPA_A_CLK] =3D &clk_smd_rpm_ipa_a_clk, [RPM_SMD_CE1_CLK] =3D &clk_smd_rpm_ce1_clk, [RPM_SMD_CE1_A_CLK] =3D &clk_smd_rpm_ce1_a_clk, - [RPM_SMD_AGGR1_NOC_CLK] =3D &clk_smd_rpm_branch_aggre1_noc_clk, - [RPM_SMD_AGGR1_NOC_A_CLK] =3D &clk_smd_rpm_branch_aggre1_noc_a_clk, - [RPM_SMD_AGGR2_NOC_CLK] =3D &clk_smd_rpm_branch_aggre2_noc_clk, - [RPM_SMD_AGGR2_NOC_A_CLK] =3D &clk_smd_rpm_branch_aggre2_noc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_qdss_a_clk, [RPM_SMD_BB_CLK1] =3D &clk_smd_rpm_bb_clk1, @@ -900,6 +905,8 @@ static struct clk_smd_rpm *msm8996_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8996 =3D { .clks =3D msm8996_clks, .num_clks =3D ARRAY_SIZE(msm8996_clks), + .icc_clks =3D msm8996_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(msm8996_icc_clks), }; =20 static struct clk_smd_rpm *qcs404_clks[] =3D { @@ -928,19 +935,15 @@ static struct clk_smd_rpm *qcs404_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_qcs404 =3D { .clks =3D qcs404_clks, .num_clks =3D ARRAY_SIZE(qcs404_clks), + .icc_clks =3D bimc_pcnoc_snoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_icc_clks), }; =20 static struct clk_smd_rpm *msm8998_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_PCNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, [RPM_SMD_PCNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_2_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_2_cnoc_a_clk, [RPM_SMD_CE1_CLK] =3D &clk_smd_rpm_ce1_clk, [RPM_SMD_CE1_A_CLK] =3D &clk_smd_rpm_ce1_a_clk, [RPM_SMD_DIV_CLK1] =3D &clk_smd_rpm_div_clk1, @@ -963,12 +966,6 @@ static struct clk_smd_rpm *msm8998_clks[] =3D { [RPM_SMD_LN_BB_CLK2_A_PIN] =3D &clk_smd_rpm_ln_bb_clk2_a_pin, [RPM_SMD_LN_BB_CLK3_PIN] =3D &clk_smd_rpm_ln_bb_clk3_pin, [RPM_SMD_LN_BB_CLK3_A_PIN] =3D &clk_smd_rpm_ln_bb_clk3_a_pin, - [RPM_SMD_MMAXI_CLK] =3D &clk_smd_rpm_mmssnoc_axi_rpm_clk, - [RPM_SMD_MMAXI_A_CLK] =3D &clk_smd_rpm_mmssnoc_axi_rpm_a_clk, - [RPM_SMD_AGGR1_NOC_CLK] =3D &clk_smd_rpm_aggre1_noc_clk, - [RPM_SMD_AGGR1_NOC_A_CLK] =3D &clk_smd_rpm_aggre1_noc_a_clk, - [RPM_SMD_AGGR2_NOC_CLK] =3D &clk_smd_rpm_aggre2_noc_clk, - [RPM_SMD_AGGR2_NOC_A_CLK] =3D &clk_smd_rpm_aggre2_noc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_qdss_a_clk, [RPM_SMD_RF_CLK1] =3D &clk_smd_rpm_rf_clk1, @@ -988,27 +985,19 @@ static struct clk_smd_rpm *msm8998_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8998 =3D { .clks =3D msm8998_clks, .num_clks =3D ARRAY_SIZE(msm8998_clks), + .icc_clks =3D msm8998_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(msm8998_icc_clks), }; =20 static struct clk_smd_rpm *sdm660_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_2_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_2_cnoc_a_clk, [RPM_SMD_CNOC_PERIPH_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, [RPM_SMD_CNOC_PERIPH_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, - [RPM_SMD_MMSSNOC_AXI_CLK] =3D &clk_smd_rpm_mmssnoc_axi_rpm_clk, - [RPM_SMD_MMSSNOC_AXI_CLK_A] =3D &clk_smd_rpm_mmssnoc_axi_rpm_a_clk, [RPM_SMD_IPA_CLK] =3D &clk_smd_rpm_ipa_clk, [RPM_SMD_IPA_A_CLK] =3D &clk_smd_rpm_ipa_a_clk, [RPM_SMD_CE1_CLK] =3D &clk_smd_rpm_ce1_clk, [RPM_SMD_CE1_A_CLK] =3D &clk_smd_rpm_ce1_a_clk, - [RPM_SMD_AGGR2_NOC_CLK] =3D &clk_smd_rpm_aggre2_noc_clk, - [RPM_SMD_AGGR2_NOC_A_CLK] =3D &clk_smd_rpm_aggre2_noc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_qdss_a_clk, [RPM_SMD_RF_CLK1] =3D &clk_smd_rpm_rf_clk1, @@ -1034,15 +1023,13 @@ static struct clk_smd_rpm *sdm660_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_sdm660 =3D { .clks =3D sdm660_clks, .num_clks =3D ARRAY_SIZE(sdm660_clks), + .icc_clks =3D sdm660_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(sdm660_icc_clks), }; =20 static struct clk_smd_rpm *mdm9607_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_PCNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PCNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_QPIC_CLK] =3D &clk_smd_rpm_qpic_clk, [RPM_SMD_QPIC_CLK_A] =3D &clk_smd_rpm_qpic_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, @@ -1056,21 +1043,15 @@ static struct clk_smd_rpm *mdm9607_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_mdm9607 =3D { .clks =3D mdm9607_clks, .num_clks =3D ARRAY_SIZE(mdm9607_clks), + .icc_clks =3D bimc_pcnoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_icc_clks), }; =20 static struct clk_smd_rpm *msm8953_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_PCNOC_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_clk, - [RPM_SMD_PCNOC_A_CLK] =3D &clk_smd_rpm_bus_0_pcnoc_a_clk, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_1_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_1_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_IPA_CLK] =3D &clk_smd_rpm_ipa_clk, [RPM_SMD_IPA_A_CLK] =3D &clk_smd_rpm_ipa_a_clk, - [RPM_SMD_SYSMMNOC_CLK] =3D &clk_smd_rpm_bus_2_sysmmnoc_clk, - [RPM_SMD_SYSMMNOC_A_CLK] =3D &clk_smd_rpm_bus_2_sysmmnoc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_qdss_a_clk, [RPM_SMD_BB_CLK1] =3D &clk_smd_rpm_bb_clk1, @@ -1092,23 +1073,19 @@ static struct clk_smd_rpm *msm8953_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_msm8953 =3D { .clks =3D msm8953_clks, .num_clks =3D ARRAY_SIZE(msm8953_clks), + .icc_clks =3D bimc_pcnoc_snoc_smmnoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(bimc_pcnoc_snoc_smmnoc_icc_clks), }; =20 static struct clk_smd_rpm *sm6125_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_2_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_2_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_branch_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_branch_qdss_a_clk, [RPM_SMD_RF_CLK1] =3D &clk_smd_rpm_rf_clk1, [RPM_SMD_RF_CLK1_A] =3D &clk_smd_rpm_rf_clk1_a, [RPM_SMD_RF_CLK2] =3D &clk_smd_rpm_rf_clk2, [RPM_SMD_RF_CLK2_A] =3D &clk_smd_rpm_rf_clk2_a, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_1_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_1_cnoc_a_clk, [RPM_SMD_IPA_CLK] =3D &clk_smd_rpm_ipa_clk, [RPM_SMD_IPA_A_CLK] =3D &clk_smd_rpm_ipa_a_clk, [RPM_SMD_CE1_CLK] =3D &clk_smd_rpm_ce1_clk, @@ -1119,12 +1096,6 @@ static struct clk_smd_rpm *sm6125_clks[] =3D { [RPM_SMD_LN_BB_CLK2_A] =3D &clk_smd_rpm_ln_bb_clk2_a, [RPM_SMD_LN_BB_CLK3] =3D &clk_smd_rpm_ln_bb_clk3, [RPM_SMD_LN_BB_CLK3_A] =3D &clk_smd_rpm_ln_bb_clk3_a, - [RPM_SMD_QUP_CLK] =3D &clk_smd_rpm_qup_clk, - [RPM_SMD_QUP_A_CLK] =3D &clk_smd_rpm_qup_a_clk, - [RPM_SMD_MMRT_CLK] =3D &clk_smd_rpm_mmrt_clk, - [RPM_SMD_MMRT_A_CLK] =3D &clk_smd_rpm_mmrt_a_clk, - [RPM_SMD_MMNRT_CLK] =3D &clk_smd_rpm_mmnrt_clk, - [RPM_SMD_MMNRT_A_CLK] =3D &clk_smd_rpm_mmnrt_a_clk, [RPM_SMD_SNOC_PERIPH_CLK] =3D &clk_smd_rpm_bus_0_snoc_periph_clk, [RPM_SMD_SNOC_PERIPH_A_CLK] =3D &clk_smd_rpm_bus_0_snoc_periph_a_clk, [RPM_SMD_SNOC_LPASS_CLK] =3D &clk_smd_rpm_bus_5_snoc_lpass_clk, @@ -1134,34 +1105,24 @@ static struct clk_smd_rpm *sm6125_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_sm6125 =3D { .clks =3D sm6125_clks, .num_clks =3D ARRAY_SIZE(sm6125_clks), + .icc_clks =3D sm_qnoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(sm_qnoc_icc_clks) }; =20 /* SM6115 */ static struct clk_smd_rpm *sm6115_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_2_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_2_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_branch_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_branch_qdss_a_clk, [RPM_SMD_RF_CLK1] =3D &clk_smd_rpm_rf_clk1, [RPM_SMD_RF_CLK1_A] =3D &clk_smd_rpm_rf_clk1_a, [RPM_SMD_RF_CLK2] =3D &clk_smd_rpm_rf_clk2, [RPM_SMD_RF_CLK2_A] =3D &clk_smd_rpm_rf_clk2_a, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_1_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_1_cnoc_a_clk, [RPM_SMD_IPA_CLK] =3D &clk_smd_rpm_ipa_clk, [RPM_SMD_IPA_A_CLK] =3D &clk_smd_rpm_ipa_a_clk, [RPM_SMD_CE1_CLK] =3D &clk_smd_rpm_ce1_clk, [RPM_SMD_CE1_A_CLK] =3D &clk_smd_rpm_ce1_a_clk, - [RPM_SMD_QUP_CLK] =3D &clk_smd_rpm_qup_clk, - [RPM_SMD_QUP_A_CLK] =3D &clk_smd_rpm_qup_a_clk, - [RPM_SMD_MMRT_CLK] =3D &clk_smd_rpm_mmrt_clk, - [RPM_SMD_MMRT_A_CLK] =3D &clk_smd_rpm_mmrt_a_clk, - [RPM_SMD_MMNRT_CLK] =3D &clk_smd_rpm_mmnrt_clk, - [RPM_SMD_MMNRT_A_CLK] =3D &clk_smd_rpm_mmnrt_a_clk, [RPM_SMD_SNOC_PERIPH_CLK] =3D &clk_smd_rpm_bus_0_snoc_periph_clk, [RPM_SMD_SNOC_PERIPH_A_CLK] =3D &clk_smd_rpm_bus_0_snoc_periph_a_clk, [RPM_SMD_SNOC_LPASS_CLK] =3D &clk_smd_rpm_bus_5_snoc_lpass_clk, @@ -1175,27 +1136,17 @@ static struct clk_smd_rpm *sm6115_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_sm6115 =3D { .clks =3D sm6115_clks, .num_clks =3D ARRAY_SIZE(sm6115_clks), + .icc_clks =3D sm_qnoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(sm_qnoc_icc_clks) }; =20 static struct clk_smd_rpm *sm6375_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_2_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_2_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_branch_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_branch_qdss_a_clk, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_1_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_1_cnoc_a_clk, [RPM_SMD_IPA_CLK] =3D &clk_smd_rpm_ipa_clk, [RPM_SMD_IPA_A_CLK] =3D &clk_smd_rpm_ipa_a_clk, - [RPM_SMD_QUP_CLK] =3D &clk_smd_rpm_qup_clk, - [RPM_SMD_QUP_A_CLK] =3D &clk_smd_rpm_qup_a_clk, - [RPM_SMD_MMRT_CLK] =3D &clk_smd_rpm_mmrt_clk, - [RPM_SMD_MMRT_A_CLK] =3D &clk_smd_rpm_mmrt_a_clk, - [RPM_SMD_MMNRT_CLK] =3D &clk_smd_rpm_mmnrt_clk, - [RPM_SMD_MMNRT_A_CLK] =3D &clk_smd_rpm_mmnrt_a_clk, [RPM_SMD_SNOC_PERIPH_CLK] =3D &clk_smd_rpm_bus_0_snoc_periph_clk, [RPM_SMD_SNOC_PERIPH_A_CLK] =3D &clk_smd_rpm_bus_0_snoc_periph_a_clk, [RPM_SMD_SNOC_LPASS_CLK] =3D &clk_smd_rpm_bus_5_snoc_lpass_clk, @@ -1212,31 +1163,21 @@ static struct clk_smd_rpm *sm6375_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_sm6375 =3D { .clks =3D sm6375_clks, .num_clks =3D ARRAY_SIZE(sm6375_clks), + .icc_clks =3D sm_qnoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(sm_qnoc_icc_clks) }; =20 static struct clk_smd_rpm *qcm2290_clks[] =3D { [RPM_SMD_XO_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] =3D &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_SNOC_CLK] =3D &clk_smd_rpm_bus_2_snoc_clk, - [RPM_SMD_SNOC_A_CLK] =3D &clk_smd_rpm_bus_2_snoc_a_clk, - [RPM_SMD_BIMC_CLK] =3D &clk_smd_rpm_bimc_clk, - [RPM_SMD_BIMC_A_CLK] =3D &clk_smd_rpm_bimc_a_clk, [RPM_SMD_QDSS_CLK] =3D &clk_smd_rpm_branch_qdss_clk, [RPM_SMD_QDSS_A_CLK] =3D &clk_smd_rpm_branch_qdss_a_clk, [RPM_SMD_LN_BB_CLK2] =3D &clk_smd_rpm_ln_bb_clk2, [RPM_SMD_LN_BB_CLK2_A] =3D &clk_smd_rpm_ln_bb_clk2_a, [RPM_SMD_RF_CLK3] =3D &clk_smd_rpm_38m4_rf_clk3, [RPM_SMD_RF_CLK3_A] =3D &clk_smd_rpm_38m4_rf_clk3_a, - [RPM_SMD_CNOC_CLK] =3D &clk_smd_rpm_bus_1_cnoc_clk, - [RPM_SMD_CNOC_A_CLK] =3D &clk_smd_rpm_bus_1_cnoc_a_clk, [RPM_SMD_IPA_CLK] =3D &clk_smd_rpm_ipa_clk, [RPM_SMD_IPA_A_CLK] =3D &clk_smd_rpm_ipa_a_clk, - [RPM_SMD_QUP_CLK] =3D &clk_smd_rpm_qup_clk, - [RPM_SMD_QUP_A_CLK] =3D &clk_smd_rpm_qup_a_clk, - [RPM_SMD_MMRT_CLK] =3D &clk_smd_rpm_mmrt_clk, - [RPM_SMD_MMRT_A_CLK] =3D &clk_smd_rpm_mmrt_a_clk, - [RPM_SMD_MMNRT_CLK] =3D &clk_smd_rpm_mmnrt_clk, - [RPM_SMD_MMNRT_A_CLK] =3D &clk_smd_rpm_mmnrt_a_clk, [RPM_SMD_SNOC_PERIPH_CLK] =3D &clk_smd_rpm_bus_0_snoc_periph_clk, [RPM_SMD_SNOC_PERIPH_A_CLK] =3D &clk_smd_rpm_bus_0_snoc_periph_a_clk, [RPM_SMD_SNOC_LPASS_CLK] =3D &clk_smd_rpm_bus_5_snoc_lpass_clk, @@ -1258,6 +1199,8 @@ static struct clk_smd_rpm *qcm2290_clks[] =3D { static const struct rpm_smd_clk_desc rpm_clk_qcm2290 =3D { .clks =3D qcm2290_clks, .num_clks =3D ARRAY_SIZE(qcm2290_clks), + .icc_clks =3D sm_qnoc_icc_clks, + .num_icc_clks =3D ARRAY_SIZE(sm_qnoc_icc_clks) }; =20 static const struct of_device_id rpm_smd_clk_match_table[] =3D { @@ -1333,6 +1276,15 @@ static int rpm_smd_clk_probe(struct platform_device = *pdev) goto err; } =20 + for (i =3D 0; i < desc->num_icc_clks; i++) { + if (!desc->icc_clks[i]) + continue; + + ret =3D clk_smd_rpm_handoff(desc->icc_clks[i]); + if (ret) + goto err; + } + if (!desc->scaling_before_handover) { ret =3D clk_smd_rpm_enable_scaling(); if (ret) --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 8A666C7EE45 for ; Fri, 9 Jun 2023 20:21:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232709AbjFIUVG (ORCPT ); Fri, 9 Jun 2023 16:21:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232349AbjFIUUK (ORCPT ); Fri, 9 Jun 2023 16:20:10 -0400 Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ABC9F449B for ; Fri, 9 Jun 2023 13:19:42 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4f62b512fe2so2863982e87.1 for ; Fri, 09 Jun 2023 13:19:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341980; x=1688933980; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=eNVTZz3WTBfWKZBHPF3Oslb4sUjJScI7Q5ztGX7opzk=; b=L2R9riUeeO/Yss39VGvHVtUuYPrVl2y1BihEDs0SsJfw/tEYoHaQTn1rl2+LnoND3y SDE3NGyjfYOX/Cnk8gUrtW+G1M7w/EvG5o11ACgBocL2/vLBe1+cTpjYrkLifvzLtlbO xd9GUOhqG6OrX9jLBvxMUE34RHEu/voTCpvxIwigC7K5kBBScoIu/qs7SfFE9FB3RYQw i0TSrl7oDOd6/MjLabqcMX2ZBJr0KjyD9PaWU9bR1lI16zldDPJAWByAZvFTyBd790I3 4IFCuXjEs7rV7iolQ5oTS8Dq51iI6m73D7KHoP/0WKrDUItqHfGALx9VDe6u8jNny053 UWcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341980; x=1688933980; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eNVTZz3WTBfWKZBHPF3Oslb4sUjJScI7Q5ztGX7opzk=; b=YyS5BU4eovAVYVXwE6TaDWp9+9e4I5+98wIAbseCa3WzWIVFb+wkmDgUcUreT596aq AGCvKbjTrEdVo9QHHrgrLT0hKI+DJfx7xnKmWcBiiOAXI+erpTo+cYQ3LslWxUB1FPFs sepkMSrOU2eYLyX+Fn+sJ4ZBXirOam4iwCraXuII0LC0E2leD4UxJProQYR8k+6E0W3c 57rY9TgjMm/XQ5m+/vzDQE+1ratROV+0ygWnTfpJBvF6z/Hbr2VGvGSIoKCn77L21mBe +RJO8svIHKEbyVzUaOqFppEQ1n0fB9Izm1lcdMfZrk+hEENQzkdCskth5SrMY34RLM9t hzFw== X-Gm-Message-State: AC+VfDy7S25YjPduUI/OarOOLUyp2BZgcU1aeDKntv4NjVvn7BqbwV+l PWrSVuONKuLfHLzkoQdCCZteJg== X-Google-Smtp-Source: ACHHUZ72ygXiCj6CN43npAR5Gx7loouXtypJhZyjy/y+oxmGwjpHbFng9HQr5yU5f4db1gNB+4NjEg== X-Received: by 2002:a19:690d:0:b0:4f6:b34:a02d with SMTP id e13-20020a19690d000000b004f60b34a02dmr1441549lfc.54.1686341980601; Fri, 09 Jun 2023 13:19:40 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:40 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:24 +0200 Subject: [PATCH v2 19/22] interconnect: qcom: icc-rpm: Fix bucket number MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-19-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=2765; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=68iL3R2729auKAyf2+h3a84NzNeWWMBj11PjnFNq6B4=; b=Za+Lukgzr/6HNrFC3q9wOKV2sPdI2aYKVDy3vv5Cv5pDz+TH/Tw72Fl9KwIADc+IM4l8HnmWH Q9f5zDjOIxyC0h+zQicDTwpZTIfhNSK2WpUPORV770o0OXewdkGt1t2 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SMD RPM only provides two buckets, one each for the active-only and active-sleep RPM contexts. Use the correct constant to allocate and operate on them. Fixes: dcbce7b0a79c ("interconnect: qcom: icc-rpm: Support multiple buckets= ") Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index 6d40815c5401..3ac47b818afe 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -249,7 +249,7 @@ static void qcom_icc_pre_bw_aggregate(struct icc_node *= node) size_t i; =20 qn =3D node->data; - for (i =3D 0; i < QCOM_ICC_NUM_BUCKETS; i++) { + for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) { qn->sum_avg[i] =3D 0; qn->max_peak[i] =3D 0; } @@ -275,7 +275,7 @@ static int qcom_icc_bw_aggregate(struct icc_node *node,= u32 tag, u32 avg_bw, if (!tag) tag =3D QCOM_ICC_TAG_ALWAYS; =20 - for (i =3D 0; i < QCOM_ICC_NUM_BUCKETS; i++) { + for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) { if (tag & BIT(i)) { qn->sum_avg[i] +=3D avg_bw; qn->max_peak[i] =3D max_t(u32, qn->max_peak[i], peak_bw); @@ -300,11 +300,11 @@ static void qcom_icc_bus_aggregate(struct icc_provide= r *provider, { struct icc_node *node; struct qcom_icc_node *qn; - u64 sum_avg[QCOM_ICC_NUM_BUCKETS]; + u64 sum_avg[QCOM_SMD_RPM_STATE_NUM]; int i; =20 /* Initialise aggregate values */ - for (i =3D 0; i < QCOM_ICC_NUM_BUCKETS; i++) { + for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) { agg_avg[i] =3D 0; agg_peak[i] =3D 0; } @@ -317,7 +317,7 @@ static void qcom_icc_bus_aggregate(struct icc_provider = *provider, */ list_for_each_entry(node, &provider->nodes, node_list) { qn =3D node->data; - for (i =3D 0; i < QCOM_ICC_NUM_BUCKETS; i++) { + for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) { if (qn->channels) sum_avg[i] =3D div_u64(qn->sum_avg[i], qn->channels); else @@ -328,7 +328,7 @@ static void qcom_icc_bus_aggregate(struct icc_provider = *provider, } =20 /* Find maximum values across all buckets */ - for (i =3D 0; i < QCOM_ICC_NUM_BUCKETS; i++) + for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) *max_agg_avg =3D max_t(u64, *max_agg_avg, agg_avg[i]); } =20 @@ -339,7 +339,7 @@ static int qcom_icc_set(struct icc_node *src, struct ic= c_node *dst) struct icc_provider *provider; u64 sum_bw; u64 active_rate, sleep_rate; - u64 agg_avg[QCOM_ICC_NUM_BUCKETS], agg_peak[QCOM_ICC_NUM_BUCKETS]; + u64 agg_avg[QCOM_SMD_RPM_STATE_NUM], agg_peak[QCOM_SMD_RPM_STATE_NUM]; u64 max_agg_avg; int ret; =20 --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 11106C7EE25 for ; Fri, 9 Jun 2023 20:21:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232662AbjFIUVa (ORCPT ); Fri, 9 Jun 2023 16:21:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232632AbjFIUUv (ORCPT ); Fri, 9 Jun 2023 16:20:51 -0400 Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com [IPv6:2a00:1450:4864:20::134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F69D3C21 for ; Fri, 9 Jun 2023 13:19:59 -0700 (PDT) Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-4f4e71a09a7so2793099e87.1 for ; Fri, 09 Jun 2023 13:19:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341981; x=1688933981; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=vmYWhMRGgLXZoI1ABShhg+YyRzFiX4C+vqZEWikGuSU=; b=aoS2FRuLLi4i32p8vtgOLOsua+64TQXYYD8mAzeCG2GGmNZomy/OSwC+zym4aEkYFA o3uaKUXKoP+Nynvi0mfjKQL3YXlwyM3Y8Co/9HWAm3wla+udP4p7wAtYhJouINjLPxd7 MtBaiPi1aO11XWrRBI1VTHvR0bd0WLqm4RFzqmMSQIrDMe1GpG5xX/HX2aT5xBE67y7v 53gJlA/4lJ6aWQUxW129yLCMSh8GHMGWa5YZ9YpTvmUDu5N8PlbBAVBdv7A6BcwzIwvV fAeZxFRxXejj4uffc4cjslLEqT19GLbhftNHS2TypkVhoRsZWjXEzHYSwqkgv+EyKlrY aQeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341981; x=1688933981; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vmYWhMRGgLXZoI1ABShhg+YyRzFiX4C+vqZEWikGuSU=; b=glWMGjhVtVIKzWRkQLGSVvRrSsOTl903RFPB+gQzYQcBOuyAYMVghRS0teJdv06leS yHZcVTWmzRxmzEALHMxKcNBhyhgOrXvwpBBEtrX+CNNOdgiU4ssoh4NKmKIK7pcPpbtF VkDKN6NUvx7u8ky3ZVXyFS9P/ugxWVjekId5sEKsaMCgfqxEzOWBrDlD4B548B72Vpvc AJQ+Z4WDrfNwcMDDty3hCvTavhyycd1gY8hDvGqXYpfIY9CEsP+0DtAmbWnv2t8d/+5K 1YIgJZS3oLCSMC4xPckZZS3fLuEeM5ZeeXcRh1GcJnrTcYICnt7JjgbKftyOLJBbogtu Ce3g== X-Gm-Message-State: AC+VfDwYbH8rnNjSF/zpDYsr93oq0xdjhDtoEArk/bIRTRznSjBiWum1 rnZ4UgI1L1XRwEPIj9b+SFwnSQ== X-Google-Smtp-Source: ACHHUZ7TVrcRyT2gstHciUOlDZ6FONnb58ZhGbc/ZrfQfBqfHEIMv2rxmVEfsuK4CnlUWyO12rPEuw== X-Received: by 2002:a19:650f:0:b0:4f2:147b:7ee with SMTP id z15-20020a19650f000000b004f2147b07eemr962074lfb.20.1686341981759; Fri, 09 Jun 2023 13:19:41 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:41 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:25 +0200 Subject: [PATCH v2 20/22] interconnect: qcom: icc-rpm: Set bandwidth on both contexts MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-20-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341953; l=3312; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=BnpOasAWNUlC0HYMHtz/YUrMasNWc4yTZHYlYhnZUIY=; b=Ex8CjHQLM6jrNxlbfeAWTJw/U3/ilAj8+qe6Y+cMW/CxYt369wOElnpni0xdTWv/oMkX0EALb JKfIX7LhWdlB0IEqdXM0yoRqLlpEvdtmVgK+PZLsykbSb6mxNHl0Nnc X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Up until now, for some reason we've only been setting bandwidth values on the active-only context. That pretty much meant that RPM could lift all votes when entering sleep mode. Or never sleep at all. That in turn could potentially break things like USB wakeup, as the connection between APSS and SNoC/PNoC would simply be dead. Set the values appropriately. Fixes: 30c8fa3ec61a ("interconnect: qcom: Add MSM8916 interconnect provider= driver") Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 54 +++++++++++++++++++--------------= ---- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index 3ac47b818afe..ac719013077e 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -205,34 +205,39 @@ static int qcom_icc_qos_set(struct icc_node *node) } } =20 -static int qcom_icc_rpm_set(struct qcom_icc_node *qn, u64 sum_bw) +static int qcom_icc_rpm_set(struct qcom_icc_node *qn, u64 *bw) { - int ret =3D 0; + int ret, rpm_ctx =3D 0; + u64 bw_bps; =20 if (qn->qos.ap_owned) return 0; =20 - if (qn->mas_rpm_id !=3D -1) { - ret =3D qcom_icc_rpm_smd_send(QCOM_SMD_RPM_ACTIVE_STATE, - RPM_BUS_MASTER_REQ, - qn->mas_rpm_id, - sum_bw); - if (ret) { - pr_err("qcom_icc_rpm_smd_send mas %d error %d\n", - qn->mas_rpm_id, ret); - return ret; + for (rpm_ctx =3D 0; rpm_ctx < QCOM_SMD_RPM_STATE_NUM; rpm_ctx++) { + bw_bps =3D icc_units_to_bps(bw[rpm_ctx]); + + if (qn->mas_rpm_id !=3D -1) { + ret =3D qcom_icc_rpm_smd_send(rpm_ctx, + RPM_BUS_MASTER_REQ, + qn->mas_rpm_id, + bw_bps); + if (ret) { + pr_err("qcom_icc_rpm_smd_send mas %d error %d\n", + qn->mas_rpm_id, ret); + return ret; + } } - } =20 - if (qn->slv_rpm_id !=3D -1) { - ret =3D qcom_icc_rpm_smd_send(QCOM_SMD_RPM_ACTIVE_STATE, - RPM_BUS_SLAVE_REQ, - qn->slv_rpm_id, - sum_bw); - if (ret) { - pr_err("qcom_icc_rpm_smd_send slv %d error %d\n", - qn->slv_rpm_id, ret); - return ret; + if (qn->slv_rpm_id !=3D -1) { + ret =3D qcom_icc_rpm_smd_send(rpm_ctx, + RPM_BUS_SLAVE_REQ, + qn->slv_rpm_id, + bw_bps); + if (ret) { + pr_err("qcom_icc_rpm_smd_send slv %d error %d\n", + qn->slv_rpm_id, ret); + return ret; + } } } =20 @@ -337,7 +342,6 @@ static int qcom_icc_set(struct icc_node *src, struct ic= c_node *dst) struct qcom_icc_provider *qp; struct qcom_icc_node *src_qn =3D NULL, *dst_qn =3D NULL; struct icc_provider *provider; - u64 sum_bw; u64 active_rate, sleep_rate; u64 agg_avg[QCOM_SMD_RPM_STATE_NUM], agg_peak[QCOM_SMD_RPM_STATE_NUM]; u64 max_agg_avg; @@ -351,14 +355,12 @@ static int qcom_icc_set(struct icc_node *src, struct = icc_node *dst) =20 qcom_icc_bus_aggregate(provider, agg_avg, agg_peak, &max_agg_avg); =20 - sum_bw =3D icc_units_to_bps(max_agg_avg); - - ret =3D qcom_icc_rpm_set(src_qn, sum_bw); + ret =3D qcom_icc_rpm_set(src_qn, agg_avg); if (ret) return ret; =20 if (dst_qn) { - ret =3D qcom_icc_rpm_set(dst_qn, sum_bw); + ret =3D qcom_icc_rpm_set(dst_qn, agg_avg); if (ret) return ret; } --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 537A2C8300C for ; Fri, 9 Jun 2023 20:21:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232727AbjFIUVn (ORCPT ); Fri, 9 Jun 2023 16:21:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32958 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232406AbjFIUVI (ORCPT ); Fri, 9 Jun 2023 16:21:08 -0400 Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A10C420F for ; Fri, 9 Jun 2023 13:20:13 -0700 (PDT) Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-4f6195d2b3fso2801928e87.1 for ; Fri, 09 Jun 2023 13:20:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341983; x=1688933983; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+CYnae38h+2Ha8DEsswsgC3tiiF77w45gY0ME9hPmK0=; b=UL8iugcjutChamWf42do/iCGYnj6h9Iv5uQA5YnjW/QDyKx8uImL9K+I90O7SQKEUa NFb/AlN9DpFyq1TVbLnXnt4U9uPPScCkXC/QhUFaKkfJ/50LdZWugB0GJWZ6As8nSW8W J6L5MEhAL/Y9zYeTuL0F29DUCocnezsXXppXS1IykNOTuig9Cq+pdEoZvmANK0yEFKNB XTHqJmeMr/0SdYfYv7xWsyt/QOAyjrMC0ZdB0QFr/6DgOR+gm+UCJRlYu/W8HoEyo273 LolbVXzdxgcK4WIK0DzZN4kbeaVWfcKqk9kepY4UL3K4+6ppn9vztHEBn0ScO5C2LpNT 297g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341983; x=1688933983; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+CYnae38h+2Ha8DEsswsgC3tiiF77w45gY0ME9hPmK0=; b=a5xg7WY6OuD+81Nd3fm0YJNQO4zv3vzh7rOSykylIk6F+wPv/xX/gvDCPSlQBZkUe8 KU9oYcj3mrsnAXqtqVag47G4ydMf+AFU/yiv5Oh86KKCPyt7bjZE2BaU9Atg9jnnBDRK uIwWejuprOd4CmRhxgB2uREk8nD/h6bsLISBmNRa6kTyyH0h0a1qgxJIH5PQ3TpOkQ9n x2Smdy9ZGWOp+kiUOp1jWZjOmpN8fa7FzoFAhKNwYLhC3X8jBe19fLQWd9nlD8ibgxwK Ct3oF2oVy4Jn8gpQR0bsedNleWTnUfWGadNyAdtKKtNPVtJNcytkr8Jatkm/l05Z27JR 05hQ== X-Gm-Message-State: AC+VfDzhJ+cxkm2MA3YRM5wavU10XcIasd7akzF8GjOumO9rvgcKP69K FaBVOCiPMId7FloVIgO/wLqNAg== X-Google-Smtp-Source: ACHHUZ62iioVreWg2FJGvAlwRg7smnlPA+zSUn7GxRnKaOB/iQ4+SY/mpPnUHkTIw6Oz7esc2wqpHA== X-Received: by 2002:a19:3819:0:b0:4f3:b8db:917f with SMTP id f25-20020a193819000000b004f3b8db917fmr1269864lfa.47.1686341982937; Fri, 09 Jun 2023 13:19:42 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:42 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:26 +0200 Subject: [PATCH v2 21/22] interconnect: qcom: icc-rpm: Set correct bandwidth through RPM bw req MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-21-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Stephan Gerhold X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341954; l=1189; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=rnjv1FkG2LZNQA5JLVwzFmZbhzL0mGsmc7rQYDLSsUc=; b=zhTwx3ylCzTTKzeHxgS5M8QzOryBV1e3M4jWd/NtdOoMhFRhPiBs/kBDomlORHIjXnYRAJFFm izzIkf1c7YQDMGQmqCim4qaVSh+CQR1xb1JWlT3M4nsw90QbrU4lMrb X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, we're setting the aggregated-on-provider bandwidth on each node, individually. That is of course incorrect and results in far too high votes. Use the correct values to ensure we're not wasting power. Fixes: 30c8fa3ec61a ("interconnect: qcom: Add MSM8916 interconnect provider= driver") Reported-by: Stephan Gerhold Signed-off-by: Konrad Dybcio Reviewed-by: Stephan Gerhold --- drivers/interconnect/qcom/icc-rpm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index ac719013077e..1508233632f6 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -355,12 +355,12 @@ static int qcom_icc_set(struct icc_node *src, struct = icc_node *dst) =20 qcom_icc_bus_aggregate(provider, agg_avg, agg_peak, &max_agg_avg); =20 - ret =3D qcom_icc_rpm_set(src_qn, agg_avg); + ret =3D qcom_icc_rpm_set(src_qn, src_qn->sum_avg); if (ret) return ret; =20 if (dst_qn) { - ret =3D qcom_icc_rpm_set(dst_qn, agg_avg); + ret =3D qcom_icc_rpm_set(dst_qn, dst_qn->sum_avg); if (ret) return ret; } --=20 2.41.0 From nobody Sun Feb 8 17:22:40 2026 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 8B2B4C7EE2E for ; Fri, 9 Jun 2023 20:21:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232145AbjFIUVr (ORCPT ); Fri, 9 Jun 2023 16:21:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232531AbjFIUVM (ORCPT ); Fri, 9 Jun 2023 16:21:12 -0400 Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A73FB421A for ; Fri, 9 Jun 2023 13:20:16 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4f62b552751so2733483e87.3 for ; Fri, 09 Jun 2023 13:20:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686341984; x=1688933984; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=gseMZqiQentYyRaHcHEHjEO4uvoAd0TikjxuZU3oPHc=; b=lOsTID+U5Hfbj3U97uR6HDXz5WxN0aXxTydWG0SfmWCDY4hRs9MC3OOD05luTpoFwA Lx6mTr881vNwuhAfjuYKenvHFshoUXNmRWx0b43/oK/ffqzmIm4KXBza4hCZhqu5uN1Z T87/6a93Y40OqulKH8nCWcAJ0ruSsf/4GwXDus5oklG1hTYKX6AOTbrfte2EwVJKCZCy BANzpZuEpApNrgxMPZ3rD2cSlt4oZrI4RnejbiMRk/ybZbeiJ8syS61bTYtNADLOcnE0 lk6/dUFriCAYPerG1KuPHKQWD9yrmzrmndAKzIkKqUXuY46luIgPi+NDON6HLXPxc8lm myRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686341984; x=1688933984; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gseMZqiQentYyRaHcHEHjEO4uvoAd0TikjxuZU3oPHc=; b=W1vRhnSYQyOPT9JpIHIYTCyeQAuApsSEE28Xoa7ivxDO+H7nZb+J96/85d3pLNLJ7D KHwZ5sRksAlCx//cnflkBR9Xq5whxeWL7L5exQmAYF29C+aQBENJnND8Oc/lUdTxN5Lf VtjIxjiA2ivuGg/VkEnkK0UaaXDy5fUBFRcUwZMFUEqnE1OjbGhTP7+LO8kfHm58A7Ee pTO2m8UMhn3C8h/nHTn1U51VScAieb8rUeIq9CvFcpzvpfWUQSqs0L4S9RN7sSD58nZw enryootzok/bb/F3iak0i4Tvci6nkpIUVPK3OGigp7O02VqcPVN/ZgH9Qm3ALx+3Po+2 T7Sg== X-Gm-Message-State: AC+VfDyIlROPbVCe5eeMu9DW54v7YXyO1ZeZM0B8Xz3QdE8utKt0s6V3 +6ZBX6DuvA5DfynI06AsWj2R+2tOGnNGo3S1yXg= X-Google-Smtp-Source: ACHHUZ4tVmuUiVo+jQcB8cq/Jdhj6B3J+7IdTt4y3MXNwGWde9Oz0MqtxrBavvqqQTElst0GQDPVQw== X-Received: by 2002:a19:9115:0:b0:4f6:10e9:c507 with SMTP id t21-20020a199115000000b004f610e9c507mr1445654lfd.23.1686341984248; Fri, 09 Jun 2023 13:19:44 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id b18-20020ac25632000000b004f628eb7884sm641349lff.232.2023.06.09.13.19.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 13:19:43 -0700 (PDT) From: Konrad Dybcio Date: Fri, 09 Jun 2023 22:19:27 +0200 Subject: [PATCH v2 22/22] interconnect: qcom: icc-rpm: Fix bandwidth calculations MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v2-22-e5934b07d813@linaro.org> References: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v2-0-e5934b07d813@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Konrad Dybcio , Stephan Gerhold X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686341954; l=4975; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=T/6tws0nrW+rpOcnKnwLBuObiHFQRWQ5v+dHRcZBGwI=; b=vc+ZslG3iL81K4cl4YIvChfumOGREIWbFrTNU35OBSyYpVixdi0d53TBbCYxVphUGLTezSqTH cqNBeV7/oqvDiWxvPjVlEMUcVl+6ozJg4C3uc4ngJXEFgPfOm2QfhWt X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Up until now, we've been aggregating the bandwidth values and only dividing them by the bus width of the source node. This was completely wrong, as different nodes on a given path may (and usually do) have varying bus widths. That in turn, resulted in the calculated clock rates being completely bogus - usually they ended up being much higher, as NoC_A<->NoC_B links are very wide. Since we're not using the aggregate bandwidth value for anything other than clock rate calculations, remodel qcom_icc_bus_aggregate() to calculate the per-context clock rate for a given provider, taking into account the bus width of every individual node. Fixes: 30c8fa3ec61a ("interconnect: qcom: Add MSM8916 interconnect provider= driver") Reported-by: Stephan Gerhold Signed-off-by: Konrad Dybcio Reviewed-by: Stephan Gerhold --- drivers/interconnect/qcom/icc-rpm.c | 59 ++++++++++++---------------------= ---- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index 1508233632f6..d177a76abe2a 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -293,58 +293,44 @@ static int qcom_icc_bw_aggregate(struct icc_node *nod= e, u32 tag, u32 avg_bw, } =20 /** - * qcom_icc_bus_aggregate - aggregate bandwidth by traversing all nodes + * qcom_icc_bus_aggregate - calculate bus clock rates by traversing all no= des * @provider: generic interconnect provider - * @agg_avg: an array for aggregated average bandwidth of buckets - * @agg_peak: an array for aggregated peak bandwidth of buckets - * @max_agg_avg: pointer to max value of aggregated average bandwidth + * @agg_clk_rate: array containing the aggregated clock rates in kHz */ -static void qcom_icc_bus_aggregate(struct icc_provider *provider, - u64 *agg_avg, u64 *agg_peak, - u64 *max_agg_avg) +static void qcom_icc_bus_aggregate(struct icc_provider *provider, u64 *agg= _clk_rate) { - struct icc_node *node; + u64 agg_avg_rate, agg_rate; struct qcom_icc_node *qn; - u64 sum_avg[QCOM_SMD_RPM_STATE_NUM]; + struct icc_node *node; int i; =20 - /* Initialise aggregate values */ - for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) { - agg_avg[i] =3D 0; - agg_peak[i] =3D 0; - } - - *max_agg_avg =3D 0; - /* - * Iterate nodes on the interconnect and aggregate bandwidth - * requests for every bucket. + * Iterate nodes on the provider, aggregate bandwidth requests for + * every bucket and convert them into bus clock rates. */ list_for_each_entry(node, &provider->nodes, node_list) { qn =3D node->data; for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) { if (qn->channels) - sum_avg[i] =3D div_u64(qn->sum_avg[i], qn->channels); + agg_avg_rate =3D div_u64(qn->sum_avg[i], qn->channels); else - sum_avg[i] =3D qn->sum_avg[i]; - agg_avg[i] +=3D sum_avg[i]; - agg_peak[i] =3D max_t(u64, agg_peak[i], qn->max_peak[i]); + agg_avg_rate =3D qn->sum_avg[i]; + + agg_rate =3D max_t(u64, agg_avg_rate, qn->max_peak[i]); + do_div(agg_rate, qn->buswidth); + + agg_clk_rate[i] =3D max_t(u64, agg_clk_rate[i], agg_rate); } } - - /* Find maximum values across all buckets */ - for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) - *max_agg_avg =3D max_t(u64, *max_agg_avg, agg_avg[i]); } =20 static int qcom_icc_set(struct icc_node *src, struct icc_node *dst) { - struct qcom_icc_provider *qp; struct qcom_icc_node *src_qn =3D NULL, *dst_qn =3D NULL; + u64 agg_clk_rate[QCOM_SMD_RPM_STATE_NUM] =3D { 0 }; struct icc_provider *provider; + struct qcom_icc_provider *qp; u64 active_rate, sleep_rate; - u64 agg_avg[QCOM_SMD_RPM_STATE_NUM], agg_peak[QCOM_SMD_RPM_STATE_NUM]; - u64 max_agg_avg; int ret; =20 src_qn =3D src->data; @@ -353,7 +339,9 @@ static int qcom_icc_set(struct icc_node *src, struct ic= c_node *dst) provider =3D src->provider; qp =3D to_qcom_provider(provider); =20 - qcom_icc_bus_aggregate(provider, agg_avg, agg_peak, &max_agg_avg); + qcom_icc_bus_aggregate(provider, agg_clk_rate); + active_rate =3D agg_clk_rate[QCOM_SMD_RPM_ACTIVE_STATE]; + sleep_rate =3D agg_clk_rate[QCOM_SMD_RPM_SLEEP_STATE]; =20 ret =3D qcom_icc_rpm_set(src_qn, src_qn->sum_avg); if (ret) @@ -369,15 +357,6 @@ static int qcom_icc_set(struct icc_node *src, struct i= cc_node *dst) if (!qp->bus_clk_desc && !qp->bus_clk) return 0; =20 - /* Intentionally keep the rates in kHz as that's what RPM accepts */ - active_rate =3D max(agg_avg[QCOM_SMD_RPM_ACTIVE_STATE], - agg_peak[QCOM_SMD_RPM_ACTIVE_STATE]); - do_div(active_rate, src_qn->buswidth); - - sleep_rate =3D max(agg_avg[QCOM_SMD_RPM_SLEEP_STATE], - agg_peak[QCOM_SMD_RPM_SLEEP_STATE]); - do_div(sleep_rate, src_qn->buswidth); - /* * Downstream checks whether the requested rate is zero, but it makes lit= tle sense * to vote for a value that's below the lower threshold, so let's not do = so. --=20 2.41.0