From nobody Sun Feb 8 22:43:29 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 E6D5EC77B73 for ; Tue, 30 May 2023 10:20:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231130AbjE3KUQ (ORCPT ); Tue, 30 May 2023 06:20:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51796 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231404AbjE3KUI (ORCPT ); Tue, 30 May 2023 06:20:08 -0400 Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BD435EC for ; Tue, 30 May 2023 03:20:06 -0700 (PDT) Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-4f4c264f6c6so4838442e87.3 for ; Tue, 30 May 2023 03:20:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442005; x=1688034005; 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=77NLmH6v9od1ob++a2CgJj2yTxYlz4uZEBXOcINbeNo=; b=Cjbv3XEBkFdWGxRKo0MN/14XiXVsgf+CzADHLnjJwDf/UM9HKIs3ds1Y/fs1zt4+2X 5AaP+VpQNjMybkr8eTtyItX5KI5KvUAVO3gXYCAbf4sqEEtMXhMCl5Qg0LOCQGHKS7Dy 830vDqJ/SUgcU0VfIKk73DswdYl3D9+s2e2xVUue3SUMqQ5WDT+v+3ndrYK2ZqyRXg0X jdox2DbQrieOR2RfLuEu1ToxwPBIq/ty6N1+yYLVkWc+dKrQftd324QmVe98P0rwx0M0 7nGw5Aoo9bjufNJjEzrLjVsIszFRMZoNZtz1XRYypOLLLqYGYrgoDHpOgqobhFFSOXlK Pq3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442005; x=1688034005; 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=77NLmH6v9od1ob++a2CgJj2yTxYlz4uZEBXOcINbeNo=; b=PX1S3ixKyI62SGezwGHq+3p/VTSRmWCh+SV9A0BV0/Zposx3j7Bl1eXNqz3so2LtJb w5pOHKfk8jJXyHJSYY01DXUnSJp4yqx6kWzVnOwZRnij70moKylyegtg9ebiRlNlT1hr xOPOdQR/iP3YI7lBrLA/d8G7+9E9MzaZMwvVAg+SjXwTtt1moOTkWPc03u/gcgXBOdM/ bi1gW0+fUzdVs6THZHLP3Qm31yh44aPHkCenjI5d7zYIgeM6ycIbykdCyb7NmwhGaMnN P4i7xLWHWySLtLrowKFNkbI7WQVSvbBSxa80RP7/cyCdE/Z1hgs7Wv/EH2dgHPJZpKwA VcPg== X-Gm-Message-State: AC+VfDzvADvD5yMSP1m+WqzVTOnZaNVq4uzcnxrzQuoFgXoSFv9CkIYR DYRrQPei+hGemRXM+a9zwz8VWg== X-Google-Smtp-Source: ACHHUZ6/xo/OLZMXuevUu4Bt6wyyig1dVMyfyogbTcj0tGcewRL1b9WzTu3NPWilGXORO4klfTL1DA== X-Received: by 2002:a19:f502:0:b0:4f1:3ca4:926f with SMTP id j2-20020a19f502000000b004f13ca4926fmr542221lfb.21.1685442005001; Tue, 30 May 2023 03:20:05 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:04 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:00 +0200 Subject: [PATCH 01/20] 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-v1-1-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=832; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=4N6lbOSoAygpQXj0UMs5Vps30KIKUCiMTFGnd+cpG9Q=; b=Apzq1+DyQ99gBM5pYzms5dwSiiuvW/23Rvc3hwmN3t9CEO+k4c8sJkLtc6ORu+84mOo5C7tlb bHCmQn3jOssC4SBuA9g3chvH/9VTnnMjWigFcmCvoClH1/3zLpvILMf 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. While at it, use tabs instead of spaces for the existing entries. Signed-off-by: Konrad Dybcio --- include/linux/soc/qcom/smd-rpm.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-= rpm.h index 2990f425fdef..99499e4b080e 100644 --- a/include/linux/soc/qcom/smd-rpm.h +++ b/include/linux/soc/qcom/smd-rpm.h @@ -4,8 +4,9 @@ =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 /* * Constants used for addressing resources in the RPM. --=20 2.40.1 From nobody Sun Feb 8 22:43:29 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 24660C7EE2F for ; Tue, 30 May 2023 10:20:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231426AbjE3KUV (ORCPT ); Tue, 30 May 2023 06:20:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231202AbjE3KUK (ORCPT ); Tue, 30 May 2023 06:20:10 -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 07C95F3 for ; Tue, 30 May 2023 03:20:08 -0700 (PDT) Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-4f4f757d575so3098298e87.0 for ; Tue, 30 May 2023 03:20:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442006; x=1688034006; 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=VvXpNIbHmqtd4lG8jcv7ZzbkoIqN9kOw2a/0JaApzvg=; b=nm8S0ICs/LpwJ5/vDr0fd5IwjPwej8X5egeLTLnaOEyL+sObY7zIlZUwD0wCwzw5Ra YMLO7XxpAo6jltNKhmLabdHmu+OOPDT0T8R4rB00vqaSSp0uO1sWQUfJbZUJeIoSkJGc c3qVoYHkIxs+oQMJ7crPlm3Mdp723q8c4aXdBTaggGPRZHyjYrAxVGYhTVuCzaTsYbcH chhgfNV626FRO8m8PFCEAHbrHIV6yFhCFGwsbX6uqdeICuonE6RsGUWNS0I2IDqCDfRy e+HrJA+TxU1iaLyJ6/ojVjBVrNmdltUSckZqayHVhOnEThXlKDweEPhUQ/7rHlzKnJc6 ZXCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442006; x=1688034006; 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=VvXpNIbHmqtd4lG8jcv7ZzbkoIqN9kOw2a/0JaApzvg=; b=jZ8Jw4igROVMM11Iz76YN3cH29p4UUAuJreBV98uLJQEgK94P98q6AihAtXq/wARHu F2ipAzR6yw5/CyyiQtb/B3A6AfqDfpjmcjLGlrzpFo1ffNBubVF6IRHo/YPXWMyvbaam /mhgENxUbaSn9DLSAD/sUlAD/5fVUncnGIE0xXBFfIdk24eUaDwTxmKSMChWawpFNUIX /vQEomhj5eQISjmz0dr6ZqAhNSQPcO/7qzrVrV/C126dOsFzXLdqLC0w/R2DLL74aBC5 X1mdhiIEqqXrCfx1V02jeODYTie8Xh+Vb9NRYbjuI0+EVd27hAY0x2dB9CNA82aIrhGT sb0Q== X-Gm-Message-State: AC+VfDxF1tFSCvqwKkss911WzrVm57EGdehLx4XWa+8KxIwR4+XVaSG6 OeAYQn0KPwbNZuQkMdAPKRjKww== X-Google-Smtp-Source: ACHHUZ5+zKi+lgYEbZ1esDpzoBfTLPxmkNqynE9WjjmRdGWq94hAmEPOF3K7nDXeSyVqyzjcalxqFg== X-Received: by 2002:a05:6512:968:b0:4e8:487a:7c2e with SMTP id v8-20020a056512096800b004e8487a7c2emr501857lft.14.1685442006314; Tue, 30 May 2023 03:20:06 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:06 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:01 +0200 Subject: [PATCH 02/20] 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-v1-2-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=2376; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=ApK/VPfTmld07UKzNhGBat7UaI7zSF3PDIl2T4HqloY=; b=rSjHIbUA7ZHfYPhT2WvjHFRqSyeNfPKb8oZvSP/GEIX6r6PpXXzQLHMrQUZnUjUmiAQcskOnF GkrinvwTeNDD7nra0QIM6+AOf0Nu7SwerMpzW2LOHwnb0E4QHAWiNBa 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. Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- 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.40.1 From nobody Sun Feb 8 22:43:29 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 9032EC7EE29 for ; Tue, 30 May 2023 10:20:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229902AbjE3KUo (ORCPT ); Tue, 30 May 2023 06:20:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231359AbjE3KUU (ORCPT ); Tue, 30 May 2023 06:20:20 -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 C4C2CF0 for ; Tue, 30 May 2023 03:20:09 -0700 (PDT) Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-4f4f3ac389eso3272643e87.1 for ; Tue, 30 May 2023 03:20:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442008; x=1688034008; 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=TQdA0JC5EnJw6b4/CowUYq8tfMxhXnCwzG8pO7Pd+ew=; b=vsYVBrJPStxb9CH+u9gkEPcTWKxG/5oNdZ1/7is+m5LKmGlObhsH08h/ys1GaqAvwA M/nmLPc0W/ihCSuouDnCJ5eZ7HX3zZThqbtCTH8ASPUWGOSkHtigpb0wIdZv1mk4F31J R7l5FrDuFxY+4whMK+lRTkboJlSBlp8d4Pv7Qp2AMTsNyVB6nDmPzRWxMl5Gpte0teuU XBzo1u63ix3sEsJ9us/S12E/LkWaEg44IgBJyVW4GvBQoKpMZ8Iw0EMwaTpwS0gBQul5 gYLNcHSNSsFe3p8emqfk7o+zb4XIwzjFXakLzRyeVVw1sTzDW76M8uIRDBIr2MSWwkn6 TrNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442008; x=1688034008; 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=TQdA0JC5EnJw6b4/CowUYq8tfMxhXnCwzG8pO7Pd+ew=; b=fCwYDaZgB+M+63cgWWRUjgrorxKG0idwgn/+vaCxfElPOP6qBCiCWekMuhtgx2MEYi Ld5RPhAn6FydP3H8gdrZuIU47Y2Mb44r2X1JM5GAOepc75jf4V23X8ipoVl5hmIKzopx j5Z4qext9n+PfnE4lrqkf596tn6C0KWIY+PWk1vYMlOU5y69OznXTg4eH5ZKZIepXrdV 9WkQpuzfsaApUyaTeFZdVNLmRmbm0egXnNUfmnDV8i0fn8veIuKzR4u1y/eojLeKlV3v XQpU7HMSO6RFSqVwrRv+2fdxEHoyP/qvpPB2i/+/+KxndWaUv2itOjesQ7dHhJonU38c M1SQ== X-Gm-Message-State: AC+VfDwhAhYtU6jw41RSrfP1W07tA94xMc6lbfl/vDaTUP8jcKt7wfPD NohzH2lwcKBIIIgA+MjFeCNkCQ== X-Google-Smtp-Source: ACHHUZ6ogkVSQTBoCRKXEoJ+PYlWey9GZ0r1JaxRRcGZtTsMESaxqNol+J9WUJRi4xQr13IkMk84fA== X-Received: by 2002:ac2:5443:0:b0:4f4:cacb:4b4b with SMTP id d3-20020ac25443000000b004f4cacb4b4bmr513337lfn.18.1685442007844; Tue, 30 May 2023 03:20:07 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:07 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:02 +0200 Subject: [PATCH 03/20] 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-v1-3-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=26677; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=1s4s6hkrW5B4osLz3KedAVfbb5KJ4YfvuzI93qhExGI=; b=1bV0X9tjsqoPy7P/v9pLNeXJ8uv/WXgpgcPaCdcKBrGHgm8ccWQ071NMJlqT8yFaiYtlRAuS3 QQlKQzyCGcRANgFqf0z/em/xvzM631Ibe/3VBzzlD/oTi++CKsT2oTv 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 937cb1515968..b63f946e4520 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -167,6 +167,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 @@ -498,13 +506,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, @@ -530,15 +594,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, @@ -562,21 +622,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, @@ -596,19 +650,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, @@ -632,25 +680,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, @@ -684,20 +724,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, @@ -718,24 +752,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, @@ -777,23 +802,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, @@ -837,29 +854,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, @@ -891,6 +896,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 { @@ -919,19 +926,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, @@ -954,12 +957,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, @@ -979,27 +976,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, @@ -1025,15 +1014,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, @@ -1047,21 +1034,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, @@ -1083,23 +1064,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, @@ -1110,12 +1087,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, @@ -1125,34 +1096,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, @@ -1166,27 +1127,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, @@ -1203,31 +1154,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, @@ -1249,6 +1190,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 { @@ -1324,6 +1267,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.40.1 From nobody Sun Feb 8 22:43:29 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 960FCC7EE29 for ; Tue, 30 May 2023 10:20:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229996AbjE3KU3 (ORCPT ); Tue, 30 May 2023 06:20:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231184AbjE3KUL (ORCPT ); Tue, 30 May 2023 06:20:11 -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 93B67CD for ; Tue, 30 May 2023 03:20:09 -0700 (PDT) Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-4f3b9c88af8so4865788e87.2 for ; Tue, 30 May 2023 03:20:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442009; x=1688034009; 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=K2kIraAUGywb2+d2U4eiUZYtYMrjO65pXPVCKxcFzAQ=; b=FXLaLTk0DnaJqBKJCU01rRK0ZsoXEA9e8UpGSsALNLu8ghDb+E6k6aWSyNSyVC6lPa ilZz6vEWkOsaRlzIs9sC3ObchnfoWlO5XhSKc7ZGkKVZalmFGQkZWEmLghC4O/5l36xI FzrQATVKeWmyc60EN/bypsWM/feyiHYmvVDEB7FXmpg+LeDlqC5hnyvTEHPYqvYcx7B0 3gtj57XsHk+bb1gs0hniq3yVlPQK21vbSXtr2WmQGEtx3+AEQ5jV7LkzjXduyRJaKwu2 rdij/JhgaI3sB8nupnRZSkyceBSsbbCSqXfQry0BOShYN2wmi7xlDdhavkdqwEsm0Jyc LNmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442009; x=1688034009; 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=K2kIraAUGywb2+d2U4eiUZYtYMrjO65pXPVCKxcFzAQ=; b=lqPho8CRsPeblpt6L6biiGJEILNb5221qlgZ9Ci2Tb3EcJPUW8YDo6psSaklUU1HDl 4c0PTkHhZ7uMCwwWEZyhRr0DUhOo72jtKCx0UdpIb7aZpHLq2xfvhLAgShQfCfGn5W/f lbi/z4CNnf8msbMMUiZh0z9a0NgGbtO31Xc2jm9BA9vJG35lMiY2vAV4q1SQwVBhc2Fx rNnHcbnCCVPOxxsSRMNcSOYq5NxzYr1WvtwJP1EymmBp5Um1CgEpVhd83P2NIMUOaNrw jY6MBlr+ehycIcp8vG8e5iyIhoBYi05Fao9e5BgvKjA+C+jIVWi8HcZ4vL1pTG3j/m+C fQ2A== X-Gm-Message-State: AC+VfDxU6kz9GXYlWnvztKOLVfnETsGBnDgwLNc8PjtJaVpT7DS3szEr m7Rp3vy/ZOlnRYxMzpx5h+wsBg== X-Google-Smtp-Source: ACHHUZ6V9aiyPB1rEZrvr74Gq50/5rPQenYEg+WViShIap4NPP1ErYCPYs2dr4eVPFn7guUzBNEeSQ== X-Received: by 2002:ac2:5393:0:b0:4f2:5007:bd7f with SMTP id g19-20020ac25393000000b004f25007bd7fmr567797lfh.36.1685442009111; Tue, 30 May 2023 03:20:09 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:08 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:03 +0200 Subject: [PATCH 04/20] 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-v1-4-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=1931; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=vv9ovaVfudhM+q+5bDTICrg6LSXL32E3dDhuR4rNt6k=; b=/ynbR+DidbffM3nQVfBIlotgJXYyM7xDfgIAvWguD3MbX/y+Tz21Z3ModMTfX2ZnhmxTxTZmY rGXg7qPFu4TDYEbz++ruI7IA9iK9AGtL+ClI+4WyA6KXMk6XcLlm/Be 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 b63f946e4520..f8f5977408e0 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; @@ -393,6 +394,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; @@ -418,6 +425,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.40.1 From nobody Sun Feb 8 22:43:29 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 06FCBC7EE31 for ; Tue, 30 May 2023 10:20:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231527AbjE3KUf (ORCPT ); Tue, 30 May 2023 06:20:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231325AbjE3KUU (ORCPT ); Tue, 30 May 2023 06:20:20 -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 08A2490 for ; Tue, 30 May 2023 03:20:12 -0700 (PDT) Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-4f4b384c09fso4875185e87.3 for ; Tue, 30 May 2023 03:20:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442010; x=1688034010; 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=1aF5NzyLnKl7zoihaKOQABOmTLo7g2FiY8plhOqJWWE=; b=KL18hG5ZcSfHdXMU8nINo0ozNDShQjM5vzvdQuBSHtY8YnyCUBmK0JZYp92oSvzksz PJQqas3ZWqa4uYoee36tPlrt6K10lXQHtVKYF2cW3gyGaV6CugK3HNjqBlEcjSbgyvhN BYPG0i2uXOVmHQYzYj2RmSu1sonzGpZobIdCyRq+Jwd8GauYG6o2hoq0OYgs8uyr9hl9 U7VB8/H3ET0xjVi+EcWBz/ldjf7CGA/Su/bH6nPnABwYhBT9ZymCpfSm/xqOZnuKqmHU DASloBUVF60q3Tw0cOG29oGQt9JmVyRg1kl/hmZpMueKIBgjlFNf0UYTO1VtgUIZKcca apjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442010; x=1688034010; 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=1aF5NzyLnKl7zoihaKOQABOmTLo7g2FiY8plhOqJWWE=; b=MlfaStnmn2EG1jHpH/29IUjfEK31fFQpuhkBdjjj2Kk5l1BoAxhabRPhfBJlu8YF7j tFzIbpCYfbBFzc4io16/WGjYlyuzGJdJDxwajBp5OsIZYblS0jeuj+4gPZWSsQfFte3k HVf16BgbrsF2VTukG0jjhq47nEo2K80C8Gp943vUFnx4zqYof8b9P9vyzFxZesJaiANa jD9vxWISzoMw2Ry3adPqUf71FG1upXnoJkhKCNQ3XHZ1fyRufD0hSiATpsYWp6vL6dAC UG/JXimzxZAxzrPdTYG3ykE5HCoO1oKSuW8pBPctAFyuCvj2ciR//nw0KPx19vA3HRNP axXg== X-Gm-Message-State: AC+VfDwH3J55H5X7ru5nqm30owG7jKWj6rMDmmUnsrtVO13jVqnifwY9 en/GasiDcFZG0Bxxwm54NAkk9g== X-Google-Smtp-Source: ACHHUZ49jO4ej62nC5LYtMBcBGYeMuH4h/3xvYCghtPsS/zki7108GVeiL90tpIWHuwylPCqgq+a0A== X-Received: by 2002:a05:6512:243:b0:4f3:a485:919a with SMTP id b3-20020a056512024300b004f3a485919amr532930lfo.57.1685442010378; Tue, 30 May 2023 03:20:10 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:10 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:04 +0200 Subject: [PATCH 05/20] 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-v1-5-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=3600; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=k3FKq4hsanyAIvzotN0m6bauADNeL2Fo1rigqnJlDac=; b=hvFTnD/dH0Sj2ysZovpz3wr8bDb7GQWdzjJvH/HBaWZIqENeiuglNUMKjH8ib2RYdbqm3Aj/e ZPbjZA4ZiqTDbcPF408eXt58YEsIIk+Y0RIP/mR78KKzxnrjj8nlfwg 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. Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- 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.40.1 From nobody Sun Feb 8 22:43:29 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 321C9C77B73 for ; Tue, 30 May 2023 10:21:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230419AbjE3KUz (ORCPT ); Tue, 30 May 2023 06:20:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230195AbjE3KUX (ORCPT ); Tue, 30 May 2023 06:20:23 -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 44D9C100 for ; Tue, 30 May 2023 03:20:13 -0700 (PDT) Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-4f3b39cea1eso4605179e87.3 for ; Tue, 30 May 2023 03:20:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442011; x=1688034011; 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=TpJbF1vFcph0nkpsSBRbxFLj0ciOsLhfijS4NONr96M=; b=F5l6WabXtdWoe0wkyxQKwqOGBv9ndkFti9OPfNqK9InuWA0r697ZO9wwuVdblKgEoN yoTsBgjfDz9Dl7+DP5nkdpkPaCVeeo87Nw5xIqZDdL2v6yGlcX3yqrUTxnL4shB5gq7n kjbvHWAMoZgn4EBuVnR8cbLKtn1YtxFl1OMwO3kRgca4vh8sy73EEZA8njVDDQU0+7P1 IEX4eJ6rO7oThNOumAEwTvuVXOHVLYZPFf3SOKZxA1ek/heEt5ZrkysAIW1zwcr8smjf QcdNdXWrHwUYHSgtQw9hRaCZGn+GK+1Zd+ChhXUDUo+fdKv3ndbBK3Nw5bnwMyhw30aq Ksrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442011; x=1688034011; 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=TpJbF1vFcph0nkpsSBRbxFLj0ciOsLhfijS4NONr96M=; b=XA9SjBJ4YkMU+lloQUdiIh2UpDNVQHED0tNEKmGPKPNjx7LsV/dfPd0W397Y4qsT8T 5beZsnljksOY4NDbnJQPDJYDByFNJ5/Rp6wQZNsuEAMxL8AoUOeuplyOe2IX2escZZPU sgNxruzqSV30XbMp+whtZZn6hA9mpdoyPv/iNoQcpFIm+L4mQ6ASFkCjXKmtz11wu38F 4WrfN2wXIwkk2CjvEXNqzhuvQssJNVM/dAWfebMg1gXqw2MFm3QJEmgDTBj7i1YTIwNP 6+OMmGVIeJ9wzAz5or2XGDjMjS9bR0RRIOwWf6jrmgLifTjrZpHcRlG0+7xYnYoOACI7 Zwcg== X-Gm-Message-State: AC+VfDyVPfFkX7+t3LlnSEOagWK8jifMJj8rNcFUg9kGAHkgh6NhCi1q TYWn3+l5wyJBII5UTghTEqf8CwvS1u3GKN/vdwA= X-Google-Smtp-Source: ACHHUZ75nHtvUU8HKrZUZdI39jVhUanPQSM49ng0efyE81zqxBRzT8GGOIIvKEk+VDtnTxHVRpYhKQ== X-Received: by 2002:ac2:5d29:0:b0:4f4:dd5d:f3e0 with SMTP id i9-20020ac25d29000000b004f4dd5df3e0mr491433lfb.51.1685442011619; Tue, 30 May 2023 03:20:11 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:11 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:05 +0200 Subject: [PATCH 06/20] 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-v1-6-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=1945; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=dz+IMFIwrWQG2KEgD4qzubF0Nm4zxh38RgJ42e7JIhs=; b=WeZHcBs3lJx2hai55HcZVPIZ/sVXkhnpLL5ugWyYPdfyR9RaNJXJ7v+qa64a2m6jWCME4R2N9 kTXkNXyLEmWBBtxpBx7iwaPecG2/pJVC/rQYYPybQZTHDGbu9cbIN6/ 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.40.1 From nobody Sun Feb 8 22:43:29 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 D89EBC7EE23 for ; Tue, 30 May 2023 10:21:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231281AbjE3KVC (ORCPT ); Tue, 30 May 2023 06:21:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52248 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231455AbjE3KUZ (ORCPT ); Tue, 30 May 2023 06:20:25 -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 9883610D for ; Tue, 30 May 2023 03:20:14 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4f3bb61f860so4862238e87.3 for ; Tue, 30 May 2023 03:20:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442013; x=1688034013; 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=YXpPX+V016DK3obFf8nCV+Q/GF1NDka/0uxeVqd69BQ=; b=B+Cn0oFQ5SMP9WXDtsX9hwJH0SjF7/tGs4O/5AmDCrDkgb/DmnkQjKfnrQM+CGTW4H IdEDm44PWX/sdjIbCWbgR03POolJWG8g/hTt8E2BoVsijHe214t3o0ZuEy9HVcEkBh/y vSXvl1jW2d8/fsxwt1gCA8CcfoEyZTidDsGeTLz7/Mx6ncrJVfFAg0ZaFgnzD5nS0FV1 IqgN0/LSD4C+avZkspgC68d1JnOXcclCJUrRRvdJA6gDzNBFHfxqkVyuuW6GDoLDCFb9 b3wYPDMzHQhQNN+zOwYmBvGkLulVY68u/CJT3RjRIPKPfF+yE/v+9YSruDbHZehX3nn1 EOZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442013; x=1688034013; 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=YXpPX+V016DK3obFf8nCV+Q/GF1NDka/0uxeVqd69BQ=; b=Uk3fErQvAVcOHJArPG1PWKUSA+msO0AbdrOR864IGg90XO/0ROcBM10yaPT09wDl8k /DmXfgyF+kqMvGM3p6anXrqvAxI6MuRaDdzLyHk532qncnXfjTVEImrPT/7W89rbkr/t eihjIUpMQXnxWZnPaMcb6Qwou5qzmyVxQRobHOZXhlwnyplenRiBA6dRBGbXN2qLuYJb ncLGmtprsAudO/ghyXeiZ/jvawW4FXVNz22qNhawnksjX+caFOJhJMBXNmgwbMfWRyD3 RtxJxdFFyG2Leb7llGgGF6n5N4v4VJuwxSV2BDWYEwmj6j5gkcZtXbJWc70u5tJTJ6GT 1SUw== X-Gm-Message-State: AC+VfDxmBFZdgdWavfiDR0ADYC7qGF8YCVgdYX8Na9cOoqLaiIeJpy7P aL6T7f659cb+D01PVQWVZL8e2yrPW4TZ4EmIROg= X-Google-Smtp-Source: ACHHUZ6j7hxK81SGxXsj81wqT+xDXLwT1gYn/bvh0S55jZCA6yCMOgvFIKlLpwep2x6lUrkc8lDtUg== X-Received: by 2002:a05:6512:205:b0:4f4:b864:1da0 with SMTP id a5-20020a056512020500b004f4b8641da0mr564234lfo.15.1685442012992; Tue, 30 May 2023 03:20:12 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:12 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:06 +0200 Subject: [PATCH 07/20] 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-v1-7-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=5390; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=k9o2WvanUq3A1gpfgpXiIhI7lClCfoHSsc18fRAP/Qk=; b=yHL3hPi01D6q07uBGNPntSOLA+0oYKxzMsx8p7rN++4fHyPOD93hCQ1rE6O7un9HWmozHbvrP dhWtTt/fwP1ACCATWw8rVjNwoaGOAVKugUjddOzO6kFzcahsToE0rC1 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. Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- 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.40.1 From nobody Sun Feb 8 22:43:29 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 C2DDEC7EE29 for ; Tue, 30 May 2023 10:21:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231283AbjE3KU5 (ORCPT ); Tue, 30 May 2023 06:20:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231460AbjE3KU0 (ORCPT ); Tue, 30 May 2023 06:20:26 -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 D7803116 for ; Tue, 30 May 2023 03:20:15 -0700 (PDT) Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-4f3bb61f860so4862260e87.3 for ; Tue, 30 May 2023 03:20:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442014; x=1688034014; 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=W5pKv67SCvWkHc0QurzW12VoUa0PE3F8cR0whlnzmJ0=; b=wfbN4jm1v5Ht90KVkR0zLhZmQd6bTPrzSXRI+6OEs5E7AOT09GAY/epcFyNKYLurkn jEhhTbCKP702Ar+tGhWJ/BgT6v2Id1QJsC87+YgRPUqMAPM0BpBL/C4CAdSiNpvEGtiO 8+ea1386sNY9MKJJe2FHBSvo5bRd6rBJwhzfIARE4d58A54iyCgrhayd6IFHUONNS/hM cnS+IJ9P1+1TQeS4bcuGN5xTbJbRaUIA4C6j46RiEcIOmtnpxandGsm5k7UhlJbs7bYF xirLXUiwS0HMtdzYMBErGcZ4oa6t7FR/2y7jL144Dj8YLR9RSKbaI006AvdJxm49ALMT od7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442014; x=1688034014; 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=W5pKv67SCvWkHc0QurzW12VoUa0PE3F8cR0whlnzmJ0=; b=Qp9W/8ABWcZz3BEsoUbRsVO8yTZm98L3zO5K+HdLjZ3zoX+9p9S6T0LeeLwD8sYG8Q zsGZcnhLK04ubk8+NM04d8OE1aHhJzL4VDhHCto8coX2BOqvO2Fo67tmV6n21TtlStUB pVq9YwjFADL6xpoDGg7WFj1YwQQzawm1My4TIBctKqgk1/pUTM3viHK1oHPiAb+VXR9q IKJuGI5AyOv/ahMY0eQ/Qoy669eFU1reCAoKhV24djBjBczHvuphQYCkFjSi/Mb//VBv pbl+z449OnLjZCXZTZXczSmDwfOEgPOAM39hUbd6sxyqO/159FGKpb3XQrnEhYkGxKGI t3aA== X-Gm-Message-State: AC+VfDwplqeUc5VhSrgLoW2VUNrxfwhK5H9TPTzB7DK2wpC7jobGN8kr PbpKs0cGB1ZmwAZa6ixYb3Udtw== X-Google-Smtp-Source: ACHHUZ7pBDQm5wEIq4FCv5g9aoMY7CDigAjTvS2AEatr9+cx5siS2uKW9B2XKPW/qahwjPGDpWse+A== X-Received: by 2002:ac2:518f:0:b0:4f4:ecdf:115e with SMTP id u15-20020ac2518f000000b004f4ecdf115emr466722lfi.31.1685442014244; Tue, 30 May 2023 03:20:14 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:13 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:07 +0200 Subject: [PATCH 08/20] 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-v1-8-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=3840; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=lbirBFQbhuAVhAb0+63FVhDq39bzOe3C4uTqONUNCjk=; b=rst79zGQlnDddeNIjb0+n5GgA/RMNEm224Kx+DthzI+2wx5rd+xMKAxO7qVK8Bz9Rd3nJex7M hYe/L8ERvuDD7IQE+5gdB3oAxyh+b2ol3gLtbscGFwkIWT6v/66dsxn 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.40.1 From nobody Sun Feb 8 22:43:29 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 F0235C7EE31 for ; Tue, 30 May 2023 10:21:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231538AbjE3KVE (ORCPT ); Tue, 30 May 2023 06:21:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231468AbjE3KUb (ORCPT ); Tue, 30 May 2023 06:20:31 -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 20AAC126 for ; Tue, 30 May 2023 03:20:17 -0700 (PDT) Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-4f3b5881734so4789680e87.0 for ; Tue, 30 May 2023 03:20:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442015; x=1688034015; 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=gyt3egYQ4ZXwXortJqKnfq0jNA9L3ka+zbPWgIHRD7s=; b=LH67/zhwHHjr6N5quOb5F/GjMiXeHM+XmgCoA5fLikqGcZ6ZVD2Nr5rH5JVRPZefg8 2Kzbuz3z2jsrUzSroRSPEU31LtROiIJIt7fHCkO85wXUHlhT8faseCkyH61gsX4DRzxn 2a+Tj6b4AJAHrODAvDRbtc8EGYtLUpwvKDIVlB0aEZBnbs4eoJ1vL5eoy/j8hMc3Llgo Fbc4Vrg5r4M9tFlH4I8up9RSJ6leIak7A/ATGd1aQBC8/nHKulj7T3F0a/yGdeIGDcLN s7BPhA7ALJPbPs4SFvbfHPJQSHwGCVaMMSmIGcYGQVRcA/KYz0CXUDanKliA3vO/irgC J0jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442015; x=1688034015; 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=gyt3egYQ4ZXwXortJqKnfq0jNA9L3ka+zbPWgIHRD7s=; b=QGmUJYonsA1TvMTzEYDlS1g4OjjLTubZKvIJ2loz0PkFwPzeyzv2Y+IUNL8nyCcuQG lqxIH1jh1qSDGnCvYNkOhcBOVsNeKGaB728Bx+sy/kygA5qvtrKE1kFu36nRYWlZAfbh eIj3qQRwjm+r1vXLtx2Is1osg6QgX8hX8kYLnARvtpRWYbJtCAamzKzzLEEbAE03M67q 58u8pQZM1hsnibTWRa6Qze/MFPj3diNacmLx3djDXB1ij/3otY+qpX3NCCPKFF6WRxpL hmynhH4AUtzxx5lNsfaxj2pYeFxmC/XHBnoW6wDRiMNQAzCG8BubmdCuF6vbZZyWV/3O TsoQ== X-Gm-Message-State: AC+VfDyH0Qx3Il47ZwCFSPeOIOb9fwMO4A/o3+EGs++SSknfu41yPxZ7 9qWwOmSbAYxj0gLBcdxdXdCSDA== X-Google-Smtp-Source: ACHHUZ5o20dbYFk+vD9wZn++JjWHjzWIkzo6uhuwMxBu1uxae32FdX1IMksGvjvWYCi0U+vP2SeOZg== X-Received: by 2002:ac2:5dc1:0:b0:4f4:6189:1d0 with SMTP id x1-20020ac25dc1000000b004f4618901d0mr575192lfq.7.1685442015510; Tue, 30 May 2023 03:20:15 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:15 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:08 +0200 Subject: [PATCH 09/20] 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-v1-9-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=740; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=jTkx4EPVwXQN5FFZMT7EdA8vRYwWcRLDeFIEIuIiyzQ=; b=0/T2QmK3afylcI3Vrr1VjeycV0no3AjFREcQ8+Jjm103oHojwnH7NaZLHhWInbWiSc7tIUO7v AI6tRrVqk7gDgHmwPiO8rgO52Ife1mka9aSw4eN9pbVtDoMLomssIIp 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. Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- 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..09abdd0c891e 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.40.1 From nobody Sun Feb 8 22:43:29 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 CA9D2C7EE2F for ; Tue, 30 May 2023 10:21:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230343AbjE3KVM (ORCPT ); Tue, 30 May 2023 06:21:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231497AbjE3KUd (ORCPT ); Tue, 30 May 2023 06:20:33 -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 9CE58136 for ; Tue, 30 May 2023 03:20:18 -0700 (PDT) Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-4f5021faa16so2119912e87.2 for ; Tue, 30 May 2023 03:20:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442017; x=1688034017; 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=pAsONE171UzwSRGl6PgVe3dqdksBfyj5NkhGAc1S/Ww=; b=frjwm5PPxdjPiGGgAzrG8Q5lwh3+BhsiXLovKQDMq0uZpKXitrwro7by+xn/CDYrBw zszsFehxJaLGO25zKXK1SODyHv4w6oPWAC4nfjFFJpPgj3voUnR856kD73seoNdYGaGX e6VosZ5Cix+PmbkbixURnBrTBrhDTHIpGVWbLgKha4+TnfqewmdeWXWs+HyPdIvPTY0c 1WlLrMw1csWqKcGqhJep7Npx88HleuO9XtdxZ1kGoZA9bNfOG6bLPdEAoTzDpfPB02Vk aFQpmPsr0+V1QlqdMaucVr6dfAvQw8Owafu3OvN4WUBqmmW9mZOR8rHnZ83BkHup8wPv +lgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442017; x=1688034017; 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=pAsONE171UzwSRGl6PgVe3dqdksBfyj5NkhGAc1S/Ww=; b=SsdVBiETpqDtw8dTm+asd/Vao8bkTXSL+5F4vJ5QgSYJJhyrIFDnZaJmB4/rLrKW0c MMLMZRmE5fpsEq1iVYDTSQQ+1G1UDLqoXCMuouAWdAfhsJnVvuThFsThVps6HAew4Row zA+8wiLZgf8DTGUvKYDztJ0wId5tSFW1A0jkLrIPnUfvsNg0HvRfxCu0vDgYoYBF+bUN K40XkIbVmYtfBAJRbFAn00adoWu+OsLXLk0+i8A0FktF1yAcofwMndTRJl7OYcl39wSP 358+3Pu/oPHNcz9prLLTYUAMiA/s2O6qDiM/122ONbXQ01XY98ZJ7bdxSENSbbCQQ/NL 2dRw== X-Gm-Message-State: AC+VfDx/4nwCa+vPwDPh9oC9GWTkN/BUcP2ldFZn5J+7yHG9viaW+Ixq w40EqO23QmH+xSkGARoW9fY+ZQ== X-Google-Smtp-Source: ACHHUZ70f6Zg6og9613w5YSBYgODePBFDat5R6XPuwd4PZVcxJrzXZ8j54RPgNPYJihmJHvWIR5lxA== X-Received: by 2002:ac2:53a4:0:b0:4eb:c85:bdc2 with SMTP id j4-20020ac253a4000000b004eb0c85bdc2mr512659lfh.2.1685442016950; Tue, 30 May 2023 03:20:16 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:16 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:09 +0200 Subject: [PATCH 10/20] 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-v1-10-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=3698; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=fXrsqgc0ESuIHhXQ72pw1fVDYdStaeM5EbSnljGFx/s=; b=dQGfnVFW1/E2mzOi1RzGRMIIivQGDxwKRv7adDq14OX8J/0R+OpkYstNp69Wb/gXFkT7LhSNN 4OBlzi7j5CnDZESYR4owbIci7A29ThOIOdN0qLUXa7Zr46MIZpvoptI 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. Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- 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 09abdd0c891e..e3df066fd94e 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.40.1 From nobody Sun Feb 8 22:43:29 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 EBD80C7EE23 for ; Tue, 30 May 2023 10:21:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230138AbjE3KVP (ORCPT ); Tue, 30 May 2023 06:21:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52246 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231513AbjE3KUe (ORCPT ); Tue, 30 May 2023 06:20:34 -0400 Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1703318D for ; Tue, 30 May 2023 03:20:19 -0700 (PDT) Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-4f3ba703b67so4597181e87.1 for ; Tue, 30 May 2023 03:20:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442018; x=1688034018; 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=+B8gq4FhTGSZrB+kw6Qd/r8F/i9IYutgD+JnX420HFQ=; b=eL1UTD0UpVt90ToQw4QyFFC5lY/mzC9cNc/pOokWhSFw+7sYmrmeDGZXak7ccr6Wo9 6XC+xL6Z/04f7J8XSb6U63bTpC4GjiUPDtXx3Tnx0NNh0ZeTTjNl6oATNlvb7DYlWmMH NXW1d6jD6EJhvxt+7oi6BzQz/Tiq3yoCf/JdrHBFtCGSf0XJlfK0HhDsLJACFO62R1hR FFc9v0da7fhXHXnPSRF/sdHpzzF+wRpnYrzlYmOZMIRE8BrEoQgWw+foy86ZAvP5PlTL ieLYILf+EWB4nMBXogHxgRi95HbdqlszkmQkfiO87Smt4kZPYsFgHhRjgEOSHgK4UohT 3MRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442018; x=1688034018; 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=+B8gq4FhTGSZrB+kw6Qd/r8F/i9IYutgD+JnX420HFQ=; b=KDC4xg5HNjrUTJYTycS5yS3kxli79fz+KLzj8Acmb7M6vBHsm+SFIlHzRUOBhat8tr uzRtN7IguBhvwS0tcwV3SGALch7VcMItZnjeYJ3i18mO/sZ4Ot0p0zAQVPjRou2V4ovG L1HwOFn3gQXONfTV9sfY6A/qKExSf6/wG52bLv9sZ9eJPECDmSL0V8QVgTbj1NZAWQUi 3+NIkjx5UexLyBq9um8OfPN75SuLLQ45nh9gX7ROiCsxZ+Dx+RR/dxMknmR62nz1hcRl dHysOZ77k+/CIOfFCF+KMotJY87PnZqaZM/5gD4ofYJFJ2TWhk+At5q09Im0el/VXBzj qV2A== X-Gm-Message-State: AC+VfDxVOmVdFCEgszK2ID1B7ccA95IKb9F+5ZVJ2QoT2Aa10NIjfrbq l0uvjEsJ/vOlNnR7NPTzXomZ4g== X-Google-Smtp-Source: ACHHUZ5p6wqaKnA+jgzgFUP9x/NY5u2XoA0x5nT1uozvgd1eHbwh4GMtXB31WDcHH83gd03XEsKqLg== X-Received: by 2002:a19:ae09:0:b0:4f3:a820:dd98 with SMTP id f9-20020a19ae09000000b004f3a820dd98mr511394lfc.7.1685442018322; Tue, 30 May 2023 03:20:18 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:18 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:10 +0200 Subject: [PATCH 11/20] 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-v1-11-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=1925; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=l3PUrbf2IpVVC4OrI1ps60fu75U4WFEl/eEO2eEzYSo=; b=tgIYZox4aB/s0xN4595qERFWi7YVOY0SBoSCRi7Qh7LlAjb6hkXyMYfdynSCD1IJ43FelINFx 20L+j26Kje1CB6XP8U7/y+Ie+5zY7ZqBRQXiN18pP4413H1NL7rORBl 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 Reviewed-by: Dmitry Baryshkov --- 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.40.1 From nobody Sun Feb 8 22:43:29 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 1ACECC77B73 for ; Tue, 30 May 2023 10:21:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231524AbjE3KVp (ORCPT ); Tue, 30 May 2023 06:21:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231521AbjE3KUf (ORCPT ); Tue, 30 May 2023 06:20:35 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3201E18F for ; Tue, 30 May 2023 03:20:21 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-4f3edc05aa5so4646071e87.3 for ; Tue, 30 May 2023 03:20:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442019; x=1688034019; 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=H7DWmLCdGqEf/q+BMZEZlk7majE2RGgcVcA51zytv0E=; b=jnzwK7Y9luGgg7vOaaVdy4c3PCxiP6bYBsrRVl2fvvziExdnJ6kEZAPM8wj7EdH/Lq JkyHwVafSkeMm2L6vzGcj9BPvCqx3CWyzrslSQPp4wv2GWzIJVUbyyOFO5cD9O/Fju9y uUGfGPNhZKYypMDkZ+7FD16reAQtR7q3SWzv464Xa45HA3CCpySn743iZkUfmLq9So2d WIs6GsN5bgLsyFiGcQMN9CeY5PGd5q0VhCv0ClVllNa2/V3VN/yTigAUiJoe+B03hs8D NWzLxn+KpzSYYbrwohD6hV+MJU545KrhhAVAEmYR0jIuLFHptO/wunAJvSf4nSeB6qBQ hbeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442019; x=1688034019; 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=H7DWmLCdGqEf/q+BMZEZlk7majE2RGgcVcA51zytv0E=; b=gomTQhrLbMnGt9oarQFvXPqv7ijOGgOhkjgMaKXusILTcr66tle48Ilin62gjU3kL4 dEsClFvZq4/ywoSgNsW3UwOPCQPGGegsAh3UOru5SRhSadUZH7uE2IzoLliUDM3wvxPE vQwV7Ln9wErooV1aBnv6DR9Now/ZiKlii4WPiO6UiMdWIqBE/DVhGi+bGhgrp8yKQSTc YvTM/HxsOMpEcxPf8qRhakG7oXkdsZNv90rnH3dDKYwQTMSzzFoCxKdHQIg7Tuk+upMa PEMYWW2v0ZA/wh1rwmV6OHzxKcb39hyP2ZLCVOAx4TLihcwf47nRywYA09FWJF3CeUBo Mnjw== X-Gm-Message-State: AC+VfDx77lLVCGTOGnAPWFE5w8VTfDsFR6rmh1v9Txyv0l31+62EghCX WmqnWAZbMHo2iHmjmt2rUr3GyQ== X-Google-Smtp-Source: ACHHUZ5Q2oRW7zjh2J9Bk7Y8CRhlFRKmiHWvNNxhyh3VI2PaSYq306zJic61KK3Z7BTCHj5rft4JVA== X-Received: by 2002:a19:f014:0:b0:4f3:b0e1:feba with SMTP id p20-20020a19f014000000b004f3b0e1febamr478349lfc.16.1685442019523; Tue, 30 May 2023 03:20:19 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:19 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:11 +0200 Subject: [PATCH 12/20] 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-v1-12-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=2380; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=TaIfixyKBYRQeIS1br7snYRsSDaKvcJKwpT4t95RY0U=; b=Rp0EzNYLsPzprtxcz/msPWgT1ZpddZfE7cxNvahSENIVKvfmALP/647gy7kwrymjPUBCd2MKl IxspyATxmaiAM8z1kD/CEss/jjjEEkxKnAij68goIANCW1WNJsjNUTi 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.40.1 From nobody Sun Feb 8 22:43:29 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 C334AC77B73 for ; Tue, 30 May 2023 10:21:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229708AbjE3KVu (ORCPT ); Tue, 30 May 2023 06:21:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231523AbjE3KUf (ORCPT ); Tue, 30 May 2023 06:20:35 -0400 Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35DFB193 for ; Tue, 30 May 2023 03:20:21 -0700 (PDT) Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-4f3b9755961so4620581e87.0 for ; Tue, 30 May 2023 03:20:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442020; x=1688034020; 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=/oOyAKKv2aOi4dKdwVFK9Ufi2xXYxVx7Z2+Xnm7A04A=; b=QK2WdGImMQjZWoIlY2/1FYYpgv/kGn+DHmSGuw8I0SKFn3eAMP+7yHCdSbia+x5jag GgnBkWlvuuvXdqVPd3+uy0+LRNwRVM2l6UV80mHRKsB5PjG59fanRBYnBQSU2KKaed7B ICEponkcYeWglhOaH2VaFkhkDSfpFKWhlNBVQOL5l10bD9UvQ+aa7r0HnP8OjW6/wEXk nG85wGqBVUkqex0a16fKQzoPxBkmH4Dfy/RbqnG3S/dN95hPoyj3K+NmBf3r1FPkmq12 R22x+WjLfwkmYbgntk/5Q2bn6/yYuVNbcDbjiYrVrAEjEAoWFG0n/DC18NC0lb4RAMDR +bCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442020; x=1688034020; 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=/oOyAKKv2aOi4dKdwVFK9Ufi2xXYxVx7Z2+Xnm7A04A=; b=DCwLEqjtiR9emkXlzXI/w5Aa3whMg/Zd7xbJ3LsyMhSrT/kRR9pCPHFDSrhnq+FFIs 1ueaOZ9c3nB585bVKY/Lr40Ou9wk654zrNie/XN1jxh3jofsIbUZNoMhEcWDYQtPMSGJ RA5CrFOREdzb2QTGULIG+vh1tqbF5uflJjBsS1N7RSSqkU/BsoPBYFg2sX+5LO/jxuL8 6BKX5jCH3715scJa3e4a0xBHSmBizKUQb5aWe+U0+6rp0BG7xdHnWEmIIe0C8L410g9p Vu7e7F89O5LR6jhjRMt9W/LuKGYq8pcqmSGwpbwsckJqquQ8JcDaZE/O2NLEH9qV6oF2 GlXQ== X-Gm-Message-State: AC+VfDw8NJwsEiv+D99tdfYogNYCZvsIokRwv8T87f89vwz93ho7O/Rr +h0mRziVaNGPxBJo4OZPQpxkAQ== X-Google-Smtp-Source: ACHHUZ7JeQCHDQ4LE8kIc/nYDjeZGqQZOsixQd8CL5/ONOUeZy0cP5muPAfsM5kjKQawzjKV3qXKAA== X-Received: by 2002:ac2:5303:0:b0:4f3:93d4:2bc7 with SMTP id c3-20020ac25303000000b004f393d42bc7mr556595lfh.36.1685442020786; Tue, 30 May 2023 03:20:20 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:20 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:12 +0200 Subject: [PATCH 13/20] 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-v1-13-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=1230; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=T8n09Sxnfaf4a9P8gR8uI0Eqx4cTlCAqOBT58LgHFQo=; b=CHJefv1YEpkMoX2ECAe54VJMyXIa8aGNkGU89yAoN5AYy4D/HXF6I0WAi3xDdxRaZkC9C1GW2 oMhzv/PoNZKAD2Q0FkNrTPdxiZ5HpdHshk0h+KVB5ltezUfEGUutjMD 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 Reviewed-by: Dmitry Baryshkov --- 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.40.1 From nobody Sun Feb 8 22:43:29 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 2C580C7EE23 for ; Tue, 30 May 2023 10:22:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231422AbjE3KWG (ORCPT ); Tue, 30 May 2023 06:22:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231543AbjE3KVE (ORCPT ); Tue, 30 May 2023 06:21:04 -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 EE3C21BC for ; Tue, 30 May 2023 03:20:23 -0700 (PDT) Received: by mail-lf1-x12c.google.com with SMTP id 2adb3069b0e04-4f3bb395e69so4839206e87.2 for ; Tue, 30 May 2023 03:20:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442022; x=1688034022; 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=CR+0em3GpCANRHldk9JU4PWpumHfW3iAUBiSmQ2eF1I=; b=e9lC3oTsWajr/O02O+p/3/y4omPDftEKS8Tz+16IYuMy6pEklqi128Nuv8sJDOnOvj pYJwD39SyDjgrRHi7SlDD+vd+VuosWHDMds5m0rhbYrAPgHbLOmSJIOnWxrkpBRwx9V+ agWxWL/kNG79EtYGMQ4xh3SAd6vsvzhULDAlZxfea1lAg3ZBt6hsr/PnNhFOwHT4T+e/ R1mduj4fkUUSQQveVdiby/gJM4GNbglGj/U9QQhvRkAa1+xIpXi5dYVPmXTkZ6FZdSmr BGvW5NZpJou/LuqENKc3HK9EuHHmcBXWj6ff7ry7V5LT/T4LNCIELQBY9DheKMhSiwnY swyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442022; x=1688034022; 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=CR+0em3GpCANRHldk9JU4PWpumHfW3iAUBiSmQ2eF1I=; b=ITQQadf6uZW5zI24y/TL1xvsbSNW31iDD1edgFlCtscHmHINUNIzhiczZu95PysPkB ihlm+xYcYNeclnNaeqzQECjr8luWYrLc8GdFwCG4XGrVLvS4y3acZ1s2kHH5OrJIHMYt 0EC99OXRS3GLPR71Ce8PLf6OWt7f7ND8hD+6zeUE+Mfx1tWvfoWy5vFCHxDl1Fz28IR4 Aet2zSC8kixIRAUX65ldChTo+Xsz6e/ti6tglCJHmZ3wkQdG49UXUZGLq8cN9vggU3df qbxjBN2n1U8xWa0osAql2QxMYTlN58zCaRz64WdM2rMhwX0LRhUSvw6F7XTtOEynm0XX FpAw== X-Gm-Message-State: AC+VfDyE73E23DW+zrUnHKsnwG3Ml5pyvgKVk9ATjktWBAMATxMkrDTt Y6rydTNW3qZozAQIJ3yyJFcvJg== X-Google-Smtp-Source: ACHHUZ7hslOpJLuxk00r9E9dB0xL/7mn5/Fq1WmpBr/w7sfzLntQkFAYkVPPyB/1JSIEYrPoDSbbNw== X-Received: by 2002:ac2:44ac:0:b0:4f3:a44d:6982 with SMTP id c12-20020ac244ac000000b004f3a44d6982mr528945lfm.45.1685442022025; Tue, 30 May 2023 03:20:22 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:21 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:13 +0200 Subject: [PATCH 14/20] 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-v1-14-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=1621; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=BzBOG/hZueCjmgEDIlJxmzcotc3IrE0BhEB5lZiOOVU=; b=IUtiwOzEUrRLXx4rxJl4psLwCWnuyxeJBvMFhE7RZHP29Qf/A9LfTelYYFSJPdyXzvSXZRuCk XFgd2lxy9OyC22G4IfTNOtFNGrAU52KVz8EvietTGj0AIgVGuQCEcfc 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 Reviewed-by: Dmitry Baryshkov --- 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.40.1 From nobody Sun Feb 8 22:43:29 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 0B350C77B73 for ; Tue, 30 May 2023 10:22:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229752AbjE3KV6 (ORCPT ); Tue, 30 May 2023 06:21:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231422AbjE3KUi (ORCPT ); Tue, 30 May 2023 06:20:38 -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 B0A7FC9 for ; Tue, 30 May 2023 03:20:23 -0700 (PDT) Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-4f4b384c09fso4875467e87.3 for ; Tue, 30 May 2023 03:20:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442023; x=1688034023; 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=+qSFOcsV0DAXJFWKPUmOzUAy/JWGLyINLrQd4hvqeSM=; b=FpbpdslZAFcI2oaJi04YzwD3fpnArOhrFp+b98rHH3m23Xct7Fr1tmhnN2ecsoIT7K 9DW1o6ISIs1aKI4H/mA2GrNEUQ1mXRwYd/vbSYfmSyRIuV0HlSCVhOZDzFEE9ADfCrLb iw+Rp4WalZVVoDS58K94Y3oRaTxR/7FxaQjEv0LMu5gBRjwFxzlr2Kf0Xeh1/WfV1LiY 0XlrYzKUdIsUlXKpB1yY4d+r3Xu4zJH3mgiyhn4pAv2QaUB/GrlWR6aHU00nU1cZvt0P 36WJP1ACUNQwyiZvyBq06V/TUYuiHYaGXFKmHfPO8M9aplqmj3MLrId3VCDQtc2Ec13I lR0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442023; x=1688034023; 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=+qSFOcsV0DAXJFWKPUmOzUAy/JWGLyINLrQd4hvqeSM=; b=f8C8JTk6rhwNX0YJnCFb1fZGPnDfkI74Ylhu0YUS+yLjch+5aAy9DtXotzUG610pzD 82TSkfy38rfw7nxTwNN35Uyly/KfJte3g2uDilwWBbs9/BOIN8sGHmNsKf25RklnSG7B qJbMraQ1VjwiNzzkA/N7qOxeqdZVwMvCNRGfKca+4RQe1sIJHvVDXtBCJq6GR+AddVVo g+0O+BnhnCQRnJjRyOepqHuTKR/AtqmxZyj0XcS7i8tHmpZrwZJ2oI1090giLeIOWyaO cNRGLZxSa1ZSD+DA7QQP+KoR0s1D0ak2CVmhxA0I6JVcfyvh+nga2bjgEXQaUvXumHjO BwTw== X-Gm-Message-State: AC+VfDw+I7jFRL5QKnJy2RqbNrcVsPsqjp76StvtANtNoiS1hZq7rjo8 TDeS/ZhpAwPtGY2WHJR/p6joXg== X-Google-Smtp-Source: ACHHUZ6QQvouPXfYS8BugnmPnCGYIcty49vUckZ7sy4PVMOc33IY4PYaE+yeNeF/RCfguWkDJnKMPw== X-Received: by 2002:ac2:5605:0:b0:4f4:ce78:2f17 with SMTP id v5-20020ac25605000000b004f4ce782f17mr502768lfd.13.1685442023213; Tue, 30 May 2023 03:20:23 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:22 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:14 +0200 Subject: [PATCH 15/20] 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-v1-15-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=1325; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=PpYTHoQR3MZyHfK/p/ldjvDJLVIB+4TUtliZoMmCQCI=; b=RB0sQmu+yq6qlV9WxbTiZ2dx6GlzrzVs3Abp9B3pjGMXqhbKMK/+HqtDJw4rFrkyWcJdaNZW+ STMgFUUosIFAegR+d8oIgwxmrZaQq11w2NQ8Z9zdE1aFP5587g4EsJz 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 Reviewed-by: Dmitry Baryshkov --- 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.40.1 From nobody Sun Feb 8 22:43:29 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 C3BF7C7EE29 for ; Tue, 30 May 2023 10:22:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231192AbjE3KWP (ORCPT ); Tue, 30 May 2023 06:22:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230024AbjE3KVG (ORCPT ); Tue, 30 May 2023 06:21:06 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 53EB9E45 for ; Tue, 30 May 2023 03:20:26 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-4f50470d77cso1929872e87.0 for ; Tue, 30 May 2023 03:20:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442024; x=1688034024; 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=uPsObl2eYSl57hf5e5vm23MgLVAf+ptSP7UWMFS0yPo=; b=GCk1DfL2fR9t/b7umBJBdnOvjrJ/TffAQUWuIHBKjt/DjKcu112buWgxQ/LJqezHLg F46c/5aNA8YqUo2xe/0V8OWlIJwXxvgoOisTYJ+Uzbv/GCs1uY3h0GfJgP5LdyhhGyml Y+ZdhuaZZPZgnRrpEqT17+VWDqYxRSEphbkQHOnAT/dzR774ShybNVqr37UIkOIXeE4S +U9hlTTAcKgIwFvjOau/FV54KDT0ceqw5MDRnOKDiPoJ7kcM2dQq0JAlbzIk/g7+pTVI w2tlAjfp6aqPJKeuR+EqgYYiAJM2DqL435PKRDZ0Hy2FOCC4j3UTeuTXrVtMvSq5gXqI aSSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442024; x=1688034024; 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=uPsObl2eYSl57hf5e5vm23MgLVAf+ptSP7UWMFS0yPo=; b=T2p8LOaPNkFn1m9N7xfO8KSCGJiaea2A7JCXGVIt36PJpAoUAXoHGA+iNbQ+ycKhJi xC1sAmr0n54ICHdVwuRJvfU30pMwur4cfTdgGh/6zmPYvgVJkN3nHwRId3oQRy229acp eT/x2S6DhVIkb0EGGpjOEfwg7dxEHiUXTm/Rjnbm05rN5COg/9atvk6hoiGgRH7dKUST h3+0tSM411yYgU/tn7VKrofWS0y7uGa4gb3YjGmIDM5pXB0u5mTUz4SwO5yRFH2q99Zk 2RiWgvB7AQAqqOKWr6rZZYSvuAvn8T82xpjl99puwGX7DgQdBhBd2LcLbnr/0FcFbsSJ 8oOw== X-Gm-Message-State: AC+VfDyvH16ZgtU0szLj+zH/iqnGqVtGLdx4y0ioH1Wuomf02n+V1SoQ ZhrXDa8COuKq6Yldgfz2eYKPhA== X-Google-Smtp-Source: ACHHUZ5lx5CViTuxeCcbtsZno9zIJuTRjy6vwdA0lVXdpg+inNfAo6L2vz5c7z7veiFVr/3l4uuDzA== X-Received: by 2002:ac2:5ec8:0:b0:4f1:496a:de8e with SMTP id d8-20020ac25ec8000000b004f1496ade8emr545614lfq.27.1685442024386; Tue, 30 May 2023 03:20:24 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:24 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:15 +0200 Subject: [PATCH 16/20] 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-v1-16-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=2327; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=AUnOBPS3NkcXCeAuiWAp3wlQXXz7ZJbGDI1WK0MkbBw=; b=mLVX0sFuQDPC2wh7J2YOL5ld7fn2UowkaahJmgkTbqaWoLJxCQZDC0Fla4quzPPDLOJp4TM90 Y3vaMNbw5x6C1yknb9hhIeXRjjCD50gwSrF5PLDrDmqUwmqXl7BZQRK 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 Reviewed-by: Dmitry Baryshkov --- 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.40.1 From nobody Sun Feb 8 22:43:29 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 AC6D0C7EE23 for ; Tue, 30 May 2023 10:22:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231560AbjE3KWV (ORCPT ); Tue, 30 May 2023 06:22:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53022 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231565AbjE3KVI (ORCPT ); Tue, 30 May 2023 06:21:08 -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 28366E52 for ; Tue, 30 May 2023 03:20:28 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4f4f3ac389eso3272954e87.1 for ; Tue, 30 May 2023 03:20:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442026; x=1688034026; 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=CE9KmIznItqWnCSTnUqicH57PGCaUmqYc5HUve0PMes=; b=YLw+Xz+2KXouJOvh/BOcNzeY5BGzOvHkTk53JlVG3CMzRVKsfO1CjsJQGwp/juD7wa GDQ6W8m7ppaGBS+94cfGuGOCUHvszlcr+0Rycv901OY3XhZR9J9M7Pb/sfCKsQ2cKaM4 6mg87LtD2iTWi7qwVsBa9tJWuiuhtzEf+qq/WICQqNGacXJPuQXqzjwzA+4csHtSkyAf SQElYKuVmKGTB8U/mOjQs21OnCtEU1RjSQaUHeFC61CMXWVCqtfIOSHdT2MASfVoK7tB p54z7Wl5360EkhWaNhmYJQeZF9yekFHuJNUgT5ewenplHcBEDwM0GNTvmXLQgdFAPNBc jsLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442026; x=1688034026; 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=CE9KmIznItqWnCSTnUqicH57PGCaUmqYc5HUve0PMes=; b=Zv053wRBsyEgqqauCrAjHuNc9yJsdPPT3OVxclriQUrTpA6EC/TkPcSZwYwl1mMDhc Zq/0u/IDSPGY/WYBOQM1mCTKApCPtAdRhS4e1oxgz2e+juI6zB1UYDCUJcfjOb8dk3OO Haojgs7OKm2LmjsLk5eoHb22hpe5vrhTmY5t/ZuUR8vxThrEnI+Na0131/5Q50Yf8lfD mz16YNrmtvuUs6jyO56ouPAg+qoCQnv0ylHQsBQtc5pmIMlZwuDJg14FiBh10BAB2K0W 9yH/YUuqiK3zffSIBPJ6ndbYWOuoueS0j5ZfK+Nf0hov1zwRp5CPIJYfcv0tKFA1Taco ghpg== X-Gm-Message-State: AC+VfDxaTvXRGhgtVd4cp1Mx9IL4xJjD/+bGSYsrLuahmq/sNLEVWCbP 0hB42Iqc8hIYLmDXSpuUFgqrUg== X-Google-Smtp-Source: ACHHUZ7SyRULsDyA+6dznZlKkX8+dg6bD1dSczFk4Sb8SLAPiIbq14WerviK2BmBzgViZkNoPkre4A== X-Received: by 2002:ac2:5e9d:0:b0:4f4:aea9:2a2f with SMTP id b29-20020ac25e9d000000b004f4aea92a2fmr538180lfq.57.1685442026316; Tue, 30 May 2023 03:20:26 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:26 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:16 +0200 Subject: [PATCH 17/20] 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-v1-17-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=10121; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=aP8J4AdQjIOY3Lruog99oSFWs3dB/beHPwMsHaT8NM0=; b=BTicK7c8Y8zFMTWNrtDt1ThVN8wH/NLxl58tobKhIX3ziqJowswFL+toUM8ZIZZR71yAlIL1r EVeUhpglyf6D4uELpdM9VZLXYhvlpkDWw+JOSMRakLnMAH72qz+zz6w 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..d08eefd963f4 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) + 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 e3df066fd94e..2c8c0399378b 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.40.1 From nobody Sun Feb 8 22:43:29 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 3117CC7EE23 for ; Tue, 30 May 2023 10:22:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231584AbjE3KW1 (ORCPT ); Tue, 30 May 2023 06:22:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53264 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231362AbjE3KVY (ORCPT ); Tue, 30 May 2023 06:21:24 -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 98ECCE65 for ; Tue, 30 May 2023 03:20:29 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4f4c264f6c6so4838895e87.3 for ; Tue, 30 May 2023 03:20:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442027; x=1688034027; 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=QjqIG4URIoua+lHLQfg11PY6ELEnwMa1moxb2TKDOn4=; b=SVLmXkEIhAzbbxnFrfcvBdoNri6Czv4hbdGCXaZDze+EzoDfp+6K4+XB/XfVXr+qma KhC+3f+kxEBlaKe+jNVTakeGgWwfcmp2inWBE5P3+PaGV0bfkkmJTUQmbBV3eSWwSswy JR9CUR+ffpS/tQbdRHfSrhklBjz0d113vkMAkRNgJNmO934qD+lmCZ9nZbs+av0hXblP 6/oHzjSCY9gKZG75bHPDTFfL0iuJmznjszDMXxseMm7/xiU5WsRu394IZmeQAWRPtlmh uNhf5O+dorlMtBi9NWstMPzVPpnyk2tGmSK6OJLTjJNSeMfMREZI1OB9/12QdGvOb0OL gd5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442027; x=1688034027; 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=QjqIG4URIoua+lHLQfg11PY6ELEnwMa1moxb2TKDOn4=; b=NmwStWBZWAwUZ2cLsqSzfkSu8MrdiYJcIfxFAdFWgFibijRA6M+zOX2owDbJMigd1c PAU1/a/qOXFtMOg/naqyBf7r23Rx1XAKHHOUBZmOwS2Em32h8gs6AQQa1uDxxzALszph n8RDF/Hu20uOV1xKaiDXAZFRXMncayrUHJ+6P6ujUjvAe1STgJGbm/eNznnMgZ1qHusu Ejt3azDK0WZTG95HIwU9rwT7I8Y6qHBTga/JFM04tVgEq/ywE2+m+0pPqzKzTNTtSPmy mnhux09Cy4Z2Il7dv9H6AFJCLqsgZr5SSPRXO93AjERO3ylmstZP7tj0pf2jYwXsSl7O GqSg== X-Gm-Message-State: AC+VfDzirRgKMdzikdWFL1+hWIVy7Iffg1zucd/tPYFv5c6rdbesJYOz 94a5eBunuGtgW0z4vYLqmdg8YA== X-Google-Smtp-Source: ACHHUZ4bCxKBR3PP/s5vecNEA495ab/hysFtcFS2GVyawuGXqtCNofVR7K7Rtqb0s6PlZuBl4L9bfA== X-Received: by 2002:a05:6512:11c6:b0:4dd:9ddc:4463 with SMTP id h6-20020a05651211c600b004dd9ddc4463mr464627lfr.5.1685442027590; Tue, 30 May 2023 03:20:27 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:27 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:17 +0200 Subject: [PATCH 18/20] 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-v1-18-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=2704; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=WF7ldM/Iz77YHgJ7F9fOqcoIKTA2NJmusrp1SsEdUMk=; b=jpkYdzXFWDoKVAz6AYnYdeSgan0HtBADUGl0JQy3WSI4gTlBsf42eR6LIDlTuIhwdOUjc1Dib V0akIqRTNZFBmAj8ZwpWux0ulUXBCBoU3tCV0eSyHE+Y7H6ENAf+5YH 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= ") Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- 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 d08eefd963f4..db84bf56bde3 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.40.1 From nobody Sun Feb 8 22:43:29 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 87F32C77B73 for ; Tue, 30 May 2023 10:22:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231576AbjE3KWZ (ORCPT ); Tue, 30 May 2023 06:22:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52096 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231493AbjE3KVZ (ORCPT ); Tue, 30 May 2023 06:21: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 78523E60 for ; Tue, 30 May 2023 03:20:29 -0700 (PDT) Received: by mail-lf1-x12c.google.com with SMTP id 2adb3069b0e04-4f4b0a0b557so4604569e87.1 for ; Tue, 30 May 2023 03:20:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442028; x=1688034028; 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=y7GQk+ou9OB44xwbYDIlivurnEcqmt+au9N5o4Lk7iA=; b=VcnoElJuvFUywVcPUADHqAUoNvjn0qgiU8KZVzbNIDso6aCBfyTFWgRhdr4qi6vUIK Yl5uDOCiHxwXhuIEEfkEaDee9Y5xhBfjRp2UuGuMLviI4yUyCrxbpvL2oA4lXx4P+8Lc Xg03hfsVmt/yjf0vxBCJvOySntJUYBWHzFz4CyypgscJ1IM9iOTKHJGjFlaHR8MHbj1Z 4b06olGxGoO0IGt8ZkbHnd51UebWt7p9VgpoX3oM+0+zXEuXLgT5o61ed6EF59X0zW9r 8YWyVlyEXPB8WECtXob1Or5l+4238YVg2ZztHi0z+mqtfK+ovuhB6j16mNKga5nQR6h6 H9Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442028; x=1688034028; 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=y7GQk+ou9OB44xwbYDIlivurnEcqmt+au9N5o4Lk7iA=; b=boMb7Dz/mMdp/HndLARF0b9F1gYvHHuw73OZtEJIK4PYc943+IGFcmCXWoo3ZiEdCD F57mhKFk133pWRFW5wpHzhZYw2G3nb5svvKBts3cuh5OLPlbgtRer4xt5gh6bBXg3rlZ vKPjGzVLMg76ApK864C3WS7J9u3WEuf9dEiws1W4P7dZHIwmFbatoeclHGiwmLalyD3r MMpHyKZRGFfiTTDgUbqjuM0lJZVR2e99hyUh23au/Px/kmD97begPzBqbsJAqrl33q+w XXJ0SdLAf3bb4N6GK+GOuqGlIIlPCdSY+5Zp481VwcgcKwMTMFNG4532DffBKt3h6N0t 278w== X-Gm-Message-State: AC+VfDxic+brBj6gfpm5Zx4wePCilVqCsy/XUqfGm/uq2mGZdXT1G8FQ qKgD9UaV8Dj5Na7OsQo9SBLUWA== X-Google-Smtp-Source: ACHHUZ4p9v1ciDMKb1Rtm8msxSHfHFjB6pVqVWdYGha3UAPIv96pLAVd7LH9cf4ZBHSv52Gd5txVJQ== X-Received: by 2002:a19:c216:0:b0:4f0:1124:8b2a with SMTP id l22-20020a19c216000000b004f011248b2amr579157lfc.46.1685442028816; Tue, 30 May 2023 03:20:28 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:28 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:18 +0200 Subject: [PATCH 19/20] 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-v1-19-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=3312; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=qwy/rjk4gKlt7mY7+plyZcBiZlb68NtNwjzvIjVvGOU=; b=TSrtQgnLSkKbMLjsdHmWuil358LrQjiLY6mWR3H//Z/UJ07p68RNaRM0lPXg4jcFrEXb/r+cX DY94IAx3ZplBbeDRplEwqZVhac08z3sjaDGhy0NnLzHj+j54KpfmbyU 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 db84bf56bde3..59be704364bb 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.40.1 From nobody Sun Feb 8 22:43:29 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 4B3F2C7EE29 for ; Tue, 30 May 2023 10:22:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231462AbjE3KWe (ORCPT ); Tue, 30 May 2023 06:22:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231590AbjE3KVa (ORCPT ); Tue, 30 May 2023 06:21:30 -0400 Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7EF1DE73 for ; Tue, 30 May 2023 03:20:31 -0700 (PDT) Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-4f4db9987f8so5729073e87.1 for ; Tue, 30 May 2023 03:20:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685442030; x=1688034030; 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=icKa1TRoM7DxejwPmdVHGrJaHkiX0Km/DDITg5zb2s4=; b=YZi+UfbQYz7t48Wol2/Wyu6Qfj80RS0lW7omeRsHrtjNm5tFmQFrPhwLE1ikHHw4xd mFelSppQgYgOdjHtJLYtYvMZpeBEcmBCauPZP54E/QsD1IjGmCf+h5kxtVYpJBSq4alM ux2TteNF6Mgrzu63KZllpBB8Z0meZkZiLXHkvphipdg+a9Q/B+x1UWiGWO/vD6Tf2fej phiYblDBmiP09bUkIkRtZfxTSre51NHPL4BSMsiF5ECKHraNyeriGg77yPDbPl91Mak1 md5y65S6MDMHxwPt+Iw3804HyoApSmQhrkiPtkVunZ/JyXYNYZcZmnzkzzWPGHpkSMYg cdcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442030; x=1688034030; 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=icKa1TRoM7DxejwPmdVHGrJaHkiX0Km/DDITg5zb2s4=; b=W9WVYa4PJswM5mk/3FC7TOdrRzqGlaTXNZkYyaSa9ylnzkHbg85qvM+vVcDvITaet4 OEeqqYBxklaIrtB/mzdS/m0vtWgr+9nmQom8mbFkz/Do7K09KNsAwMhkXMp9MjVFcnXL vnD8fEbbUatommN886lmD/+UiaVYhYpl94S4VcnXmG71xjOKG3KAJm8vbrdYMeU4nNFL 3i1d9fF4flNeRd5PatK/y14sP3igKlA5Vu7MYZabaGwlKSjYFcWaX90uVmaU0PygGMyf Lwq3oXFPY3dECvHKjdkXJhkaloQJB4hrue5JLRzoThm3+TqXgMnM9OclWIr+kehbzMZL C24Q== X-Gm-Message-State: AC+VfDzzOgQMoX0XFebdKzN6YC5ixcBNpSyx6dCZqHuZQKemvMeH0EEC ri/X4npxCKacqMSO8Ne/AXUufQ== X-Google-Smtp-Source: ACHHUZ7jPScxjpLTKucDXjf+vYaR3gcwVgpOngsLOvc74dQRNDzywoqe0oXy9JGGDR+TUKM77Wj1ww== X-Received: by 2002:ac2:41c5:0:b0:4f3:b9c8:5da with SMTP id d5-20020ac241c5000000b004f3b9c805damr607469lfi.33.1685442029999; Tue, 30 May 2023 03:20:29 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id c25-20020ac24159000000b004cc8196a308sm290902lfi.98.2023.05.30.03.20.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 03:20:29 -0700 (PDT) From: Konrad Dybcio Date: Tue, 30 May 2023 12:20:19 +0200 Subject: [PATCH 20/20] interconnect: qcom: Divide clk rate by src node bus width MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v1-20-1bf8e6663c4e@linaro.org> References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@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=1685442001; l=2453; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=A2xuhtZVawiVfe99Wd1nS5W5Zg3I4zNjmwvGs3s+zi0=; b=hkQXVBfrqCLUDeLOKO2rhZ5dD/3o6xqfIHgI3EXCatqQweKw8yTc3FhFffUDySUhf/LCxUByx +Yb4EPlILCzAbDncb5Lgpb65iONQ74ZFI9cP48gahIkZsk8/cTTuqBk 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 Ever since the introduction of SMD RPM ICC, we've been dividing the clock rate by the wrong bus width. This has resulted in: - setting wrong (mostly too low) rates, affecting performance - most often /2 or /4 - things like DDR never hit their full potential - the rates were only correct if src bus width =3D=3D dst bus width for all src, dst pairs on a given bus - Qualcomm using the same wrong logic in their BSP driver in msm-5.x that ships in production devices today - me losing my sanity trying to find this Resolve it by using dst_qn, if it exists. Fixes: 5e4e6c4d3ae0 ("interconnect: qcom: Add QCS404 interconnect provider = driver") Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index 59be704364bb..58e2a8b1b7c3 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -340,7 +340,7 @@ static void qcom_icc_bus_aggregate(struct icc_provider = *provider, 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; + struct qcom_icc_node *src_qn =3D NULL, *dst_qn =3D NULL, *qn =3D NULL; struct icc_provider *provider; u64 active_rate, sleep_rate; u64 agg_avg[QCOM_SMD_RPM_STATE_NUM], agg_peak[QCOM_SMD_RPM_STATE_NUM]; @@ -353,6 +353,8 @@ 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 + qn =3D dst_qn ? dst_qn : src_qn; + qcom_icc_bus_aggregate(provider, agg_avg, agg_peak, &max_agg_avg); =20 ret =3D qcom_icc_rpm_set(src_qn, agg_avg); @@ -372,11 +374,11 @@ static int qcom_icc_set(struct icc_node *src, struct = icc_node *dst) /* 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); + do_div(active_rate, qn->buswidth); =20 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); + do_div(sleep_rate, qn->buswidth); =20 /* * Downstream checks whether the requested rate is zero, but it makes lit= tle sense --=20 2.40.1