From nobody Sun Feb 8 22:42:59 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 BF74CEB64DC for ; Wed, 14 Jun 2023 10:22:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243494AbjFNKWc (ORCPT ); Wed, 14 Jun 2023 06:22:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34952 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239540AbjFNKWX (ORCPT ); Wed, 14 Jun 2023 06:22:23 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 56D621BD2 for ; Wed, 14 Jun 2023 03:22:20 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2b344476313so6707031fa.3 for ; Wed, 14 Jun 2023 03:22:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738138; x=1689330138; 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=X4gn37z49ZtWSh9ik86q07lLH6vDKJpjqwf/xsIE+Io=; b=Ryc35p875lLcHPJrD9S6+7gFFAFOSUEhVhptXHrotGZat5oVYZq3TqLRtCn0EtHO0j MM7m1mILkkSmzHEctANxoyJY8DG1Ci3u/YG2UCWwjyM/YR5CxlSjBgSB4ECUI09/N6qr lkw4OvM7MxCJDkbzJRq5tpScfE63OX6gDMbpl5R/s8zkjAXExlAo41peCBLr9SvfJjc6 qZ7xPK1XSIX8ove6EZP49SfyPeQJSGUy40JPq3Abyw5qBWNNUSMFOBzlrXd5WAJ29Pk7 Oi5duosxB/72Lugc5GlPKhe23mcSF4yB8sa8i3Fo0nhrxmsReYrxDvj+kiikGsMeWZ+F usAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738138; x=1689330138; 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=X4gn37z49ZtWSh9ik86q07lLH6vDKJpjqwf/xsIE+Io=; b=PMKRKRp+WJF4qnwPqAJONiKmwjJtxNDA7X1ey762cAbM1OztviqttzCYvWynTWoNP7 4S3BQaSQMpNAbgmUr3qL4pax1FIwgDDXHTsN+RhtAFs1YcGZ72PuaJCF6AOcVpLAoVHD JBtHoidNqW5EdW4VS61D89GNZejcYAlkqAMFsT8MzrMEVZs1juYWyQP/uL70wATw/FTO Knw5LvHmvGD6aKJun3r+QXgurXPawf95IHyQ7PsmA/IauKAEG662QhOrZ3ULKl0c+e20 hpMVruRDhOdWIFFQXi4s66Cop4AJCTBhVrVW4FvCN0oQJCwiVrf2Rp6qqyHZa6LnTprr nUyw== X-Gm-Message-State: AC+VfDyPk93oCh8bwGROhtN57GnWbHsfIV11ZJvtZ/7BoHJlMCo8eLaY NKzJb7cncne+Ku/hnt5A8/9JeQ== X-Google-Smtp-Source: ACHHUZ5/F2x9lcbPjaBMfEWIFbcML+1ePQSsIKZaeqF5d14HESsSJncC5mociIWlcLc4Vr7/VzfhJA== X-Received: by 2002:a2e:9c5a:0:b0:2b1:ae75:2781 with SMTP id t26-20020a2e9c5a000000b002b1ae752781mr5752793ljj.27.1686738138600; Wed, 14 Jun 2023 03:22:18 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:18 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:12 +0200 Subject: [PATCH v5 01/22] dt-bindings: interconnect: Add Qcom RPM ICC bindings MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-1-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=918; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=1W+eH+8wPS6dtSY8tNN5L1cSWMudrCjAT7V4K+wZK5I=; b=K5yI5GOz9/EYW/rU6Z/1pBrZFVzgVtqSaGNUWpOM5WiIOB3NcVaIkmxJNWkg17CRf2QkUSwqh TaoSM2GY0AvCxibvZs27IydvgyV19IewSE52+rxW8KnGx/ZvDEyuI5k 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 SMD RPM interconnect driver requires different icc tags to the RPMh driver. Add bindings to reflect that. Signed-off-by: Konrad Dybcio Acked-by: Krzysztof Kozlowski --- include/dt-bindings/interconnect/qcom,rpm-icc.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/dt-bindings/interconnect/qcom,rpm-icc.h b/include/dt-b= indings/interconnect/qcom,rpm-icc.h new file mode 100644 index 000000000000..2cd56f91e5c5 --- /dev/null +++ b/include/dt-bindings/interconnect/qcom,rpm-icc.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ +/* + * Copyright (c) 2023, Linaro Limited + */ + +#ifndef __DT_BINDINGS_INTERCONNECT_QCOM_RPM_ICC_H +#define __DT_BINDINGS_INTERCONNECT_QCOM_RPM_ICC_H + +#define RPM_ACTIVE_TAG (1 << 0) +#define RPM_SLEEP_TAG (1 << 1) +#define RPM_ALWAYS_TAG (RPM_ACTIVE_TAG | RPM_SLEEP_TAG) + +#endif --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 B54B1C001DC for ; Wed, 14 Jun 2023 10:22:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243259AbjFNKW3 (ORCPT ); Wed, 14 Jun 2023 06:22:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34954 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239813AbjFNKWX (ORCPT ); Wed, 14 Jun 2023 06:22:23 -0400 Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7B1EC1BEC for ; Wed, 14 Jun 2023 03:22:21 -0700 (PDT) Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2b1b66a8fd5so6789321fa.0 for ; Wed, 14 Jun 2023 03:22:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738140; x=1689330140; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Ak6pJEE70i86/FySUfYrSS2au3HzGmo13oLp85+Of0E=; b=e5DN8MmVuOUVJKrecInLvzge7vnLUVfPnUv2qoy9gy7Y43omkyW0ZLgoqB3IVkmNYC 0oP8VZmI/777Qse3/LxtFRfHg5uOVydt+omq5lLpq4xbgLMgi6Xci9ZFr+rgmmwyxxPg rBnApm+qLJZzhwU6bsIg8WwUQLPGUKOgAY8LUsuCq/ENbN5tOvDP2W8VR/4oXoieW5L4 pAQkZ7lOmuaGjmz0ANCr8Z0g2fzO4cBdOAGyjdEwVw+xbJJEylLboXlieG4u9fmVWhoX qQD2WT6+doAMu5g/aasnnVy6GW4x0iyn3EW+vXeZGiavD0NB26uu4WrJtqfEWSgcr6Xt oUZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738140; x=1689330140; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ak6pJEE70i86/FySUfYrSS2au3HzGmo13oLp85+Of0E=; b=IbbB9IZbon4W0kdh2F/d+zSvgIn0ZM5QD3S2cKBVfLOCW+G5bYs1fgVWlfhvZCQi7T RvUypPK0MT3RhexHf9iRQEXUcixgI7gUiQ8lGPhYJU3cTVHPAR3+u4CRSyxeSCqnYArW seQgGx8oEqQU5BZpBqTJT69yffkmBiHSof6rBtf4TIyyp9AoPOegXbIfyKgPR4Esv94F 5la/2uzZr9ZxBO7sRml1dw1nbjK2+6eJhUvVFcA0+/lmDDmFcNkcokGjiBafV43TLl2a RVSF+l2i+V1GjXG9vCA7f5dVZjJrTZiVlLuSvpjUCK4vfT8fNkQdF+9Wsv/fcz8NDkmJ ZYKQ== X-Gm-Message-State: AC+VfDwomasKG/f6ckEZNTh9QwjiDBnYbg1tGOaWphYJe3Jl+bIhhHr/ U4sBUJEFd6/n7PwkgbblA2e3NQ== X-Google-Smtp-Source: ACHHUZ5lmTu/9NRhwNJEGFH7nnpYNEhBSsDSJp3FrLVJyvwX31wx8PrD+NWh0X7JxLrq3Ws3PoQhxw== X-Received: by 2002:a2e:910e:0:b0:2a8:bd1f:a377 with SMTP id m14-20020a2e910e000000b002a8bd1fa377mr6578613ljg.20.1686738139839; Wed, 14 Jun 2023 03:22:19 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:19 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:13 +0200 Subject: [PATCH v5 02/22] soc: qcom: smd-rpm: Add QCOM_SMD_RPM_STATE_NUM MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-2-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=664; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=XHE1WQYZzaLo+c3xD4ALM/GRb1VwY7GuxNqpdL0mBnk=; b=Z8yBghNNMxMn+9eINX7qwCSmxht2X+X3SgW1EzzINyO8TFr4knjBpbMfDx/1zQ+Dwdr4u7hVi ErEdbmhvwVhCmO/6uGnbLZ2tTSsN1Fsus1YUnk7PWNJP7twlVwuhft8 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a preprocessor define to indicate the number of RPM contexts/states. Signed-off-by: Konrad Dybcio --- include/linux/soc/qcom/smd-rpm.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-= rpm.h index 2990f425fdef..e468f94fa323 100644 --- a/include/linux/soc/qcom/smd-rpm.h +++ b/include/linux/soc/qcom/smd-rpm.h @@ -6,6 +6,7 @@ struct qcom_smd_rpm; =20 #define QCOM_SMD_RPM_ACTIVE_STATE 0 #define QCOM_SMD_RPM_SLEEP_STATE 1 +#define QCOM_SMD_RPM_STATE_NUM 2 =20 /* * Constants used for addressing resources in the RPM. --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 4A054EB64D9 for ; Wed, 14 Jun 2023 10:22:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239905AbjFNKWg (ORCPT ); Wed, 14 Jun 2023 06:22:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35038 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241544AbjFNKW0 (ORCPT ); Wed, 14 Jun 2023 06:22:26 -0400 Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com [IPv6:2a00:1450:4864:20::233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3AFF71FCE for ; Wed, 14 Jun 2023 03:22:23 -0700 (PDT) Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2b1bb2fc9c6so7183621fa.0 for ; Wed, 14 Jun 2023 03:22:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738141; x=1689330141; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=SD+82Kp64qdWpl/p0nHwxIb/l/7wz0DuQnwuSSdR/H4=; b=IaNpcdlSsewK5MnmMqhxBLis+uWSHq2jaQn6PRaOhh4wwVHHHyBXQrsU/T0OmVlvdw CpsUyEh+FofeZCR8SgyzgKCxOUpX3+1pIR+wonDJpi707JtmyzZm60SnIWEPMGsJpUWV gv3q+qhwTZxfgoUN30JKzDprJygEmcrab4uL2QeUJJyNRC8hgd46uUFs/D6FlR53beDQ PpDzxRs5B4iWWY5UbbK/AWM5CxzZ+KmSgCZ6hWv+KlNuevv3/RvcLx/fb3lBSGqKwfWK dwSLQQeNf9oUk3YGjNDasu5niXf32ggphb8x7iDTpouQtnFF2a0PnQ4pjgFXn65xAmIi uJmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738141; x=1689330141; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SD+82Kp64qdWpl/p0nHwxIb/l/7wz0DuQnwuSSdR/H4=; b=IrBYoFlIHByg23RTLmHfU7En5KeFjNglJhNr4VTgU82ZZ7d++KrHRMPzljGzvvpzp6 ylT86grhcyjV6PCi0U/tym208UQOpCCWcwx0w5ya3Dz3gHEDeIKZQp5T1nq7PbYTsBKE wQd5/gFHVOmJA6yus9PobY/pv/q59L2aYWRXn87tLMQyRA8WBgCj+DcL4wkL+piFcbKm St2PEnRGSVBPDOUajbMD02z/AXtWuJ1VyHK7j1M/73iRU+RLajzZbSFjNfY6Pj4HCyGt T98ivdknLYVMVV+3hlphiQqgubGCdibCWfcx3O5upMe7yKHzwNT92MXNT9DlGKXsTO36 G9/g== X-Gm-Message-State: AC+VfDzT8XQamhrBc+0GNyTJA4rr4QuwCT+Tm0S92e2dD/tAbFi3eQWn 6+MMNm/cySivAka3dVZP2Xes6Q== X-Google-Smtp-Source: ACHHUZ5dyzvRxN8MlMMT8sPEpV4zHOiKDdnfOOLs65PL6a/jT8ID8WF+NYlGczgyiEKx1TJKEX1AAw== X-Received: by 2002:a2e:960c:0:b0:2b1:d5d0:f164 with SMTP id v12-20020a2e960c000000b002b1d5d0f164mr5912020ljh.13.1686738141329; Wed, 14 Jun 2023 03:22:21 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:21 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:14 +0200 Subject: [PATCH v5 03/22] soc: qcom: smd-rpm: Use tabs for defines MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-3-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=691; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=7uAPa6YDjXHLJZjqpcpTS8PIWFtwDRP9qtCSKC7URyY=; b=luRAt8WeZ0LpKB5nfOzJZGKhoAG08DyQ+JzDX33AzKA+1YHx7Ykr/FOuajWrfa+FBpi0NLGu2 hmWHpWiwMVrC4x1+bJSsnVDkuACukxzR1hVSjFXvCzdI7fwXK9tBDlT X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use tabs for defines to make things spaced consistently. Signed-off-by: Konrad Dybcio --- include/linux/soc/qcom/smd-rpm.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-= rpm.h index e468f94fa323..99499e4b080e 100644 --- a/include/linux/soc/qcom/smd-rpm.h +++ b/include/linux/soc/qcom/smd-rpm.h @@ -4,8 +4,8 @@ =20 struct qcom_smd_rpm; =20 -#define QCOM_SMD_RPM_ACTIVE_STATE 0 -#define QCOM_SMD_RPM_SLEEP_STATE 1 +#define QCOM_SMD_RPM_ACTIVE_STATE 0 +#define QCOM_SMD_RPM_SLEEP_STATE 1 #define QCOM_SMD_RPM_STATE_NUM 2 =20 /* --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 34D1EC001DC for ; Wed, 14 Jun 2023 10:22:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243621AbjFNKWp (ORCPT ); Wed, 14 Jun 2023 06:22:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35084 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243149AbjFNKW1 (ORCPT ); Wed, 14 Jun 2023 06:22:27 -0400 Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com [IPv6:2a00:1450:4864:20::22b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 79F381BD2 for ; Wed, 14 Jun 2023 03:22:24 -0700 (PDT) Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2b341f83493so6913131fa.3 for ; Wed, 14 Jun 2023 03:22:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738142; x=1689330142; 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=43WXKM//3PGv9o6RwF8pM2BvmgRQSkW/hfnQEDsAZP4=; b=U8fQiWmr9bxoRWfffAbcaVo2R89LciNBj3wVxa3iiD+ujbrqjLzJQvCXle1rPA/da7 0vWRCDgCciZdydIA1Azy6jQZfIdUitToR19SExMljjXGw67M0gLBNjTyJaaqXV1N7Cqs oE9HBSCsdkhIsqZP4k9GztO+NepcSgZsDT4Fn56fKu9HJIhdisGSKS4zvTNQNJKGyLOZ PR8+rmo0AdiuDJVHxnW43+CbZuKT1jDnfp5QrpQ9XC4UONngDUJBhq2CnoJ+lNtlUw1q 2TQriGMyCx3aE7F96qEtH1RfbdzX88Uou6hM5k5s1LHrJF7ZkorfJDmrf8Ww1WSr1g0m 25oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738142; x=1689330142; 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=43WXKM//3PGv9o6RwF8pM2BvmgRQSkW/hfnQEDsAZP4=; b=Qi3iNXlgVGP9G+KP2pgQP65Wcv3QKkBAymg1f7w/4bUID/zRygq+KEtkChXUeNFLoD 3eJTIiuRH30DhZCZMnrNdE5D94XWBm6Vu/fImcfGC3B9WQPFe/kFEUQ3uPfI6F2mEA6J kww+vA0dvNveK0LJD1I3i+utrwNQmYSIpZqjLgKPEhD0LALrUewgurbzojIi+9NizgNB 05b+X2JpWxa2ifMYbf1WNFiLyIBRJY6jA+sMjHeZcu3WCT84eiPEBhu4W9QWQMhJ0HIf QytMKi/QHD1mjGEbqtkkr6suElkktegMvpT145ASHfPHsy+swwuXd32SILbKVvoX0N5w xJRw== X-Gm-Message-State: AC+VfDx9sOxoPqx/UdJCIxxj0sqWQvBBRBd4vx/Qc1SExUwC0ZgmcJsx mL4tLsqTQ+pPdDb6ozNY5mjIxg== X-Google-Smtp-Source: ACHHUZ52hNa9pY3ARsvP3IiMeTf5Vwef/LVUBObb3b+Dg6p1+N7pTNKu5uUe1p8MGRv20CtzQgU+vA== X-Received: by 2002:a2e:998f:0:b0:2af:19dd:ecda with SMTP id w15-20020a2e998f000000b002af19ddecdamr5822287lji.45.1686738142658; Wed, 14 Jun 2023 03:22:22 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:22 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:15 +0200 Subject: [PATCH v5 04/22] clk: qcom: smd-rpm: Move some RPM resources to the common header MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-4-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=2480; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=htdvXfCYU07v6+YNPv56ef+1cDlrbXu+3LbOKbiWsm8=; b=7DZPhtfi+3xUTEhhu1RVqIbrM6ksdtqrUcEvjTisfKACROd9aNUzbsvdFv9HoXuwsQUytfRrK puS7GeVEFAPBe0hnYe3QLCyOkk6NRJpVKDLSgpI4wzD57iqDzB75XsW X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In preparation for handling the bus clocks in the icc driver, carve out some defines and a struct definition to the common rpm header. Reviewed-by: Dmitry Baryshkov Acked-by: Stephen Boyd Signed-off-by: Konrad Dybcio --- drivers/clk/qcom/clk-smd-rpm.c | 13 ------------- include/linux/soc/qcom/smd-rpm.h | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index e4de74b68797..937cb1515968 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -18,13 +18,6 @@ =20 #include =20 -#define QCOM_RPM_KEY_SOFTWARE_ENABLE 0x6e657773 -#define QCOM_RPM_KEY_PIN_CTRL_CLK_BUFFER_ENABLE_KEY 0x62636370 -#define QCOM_RPM_SMD_KEY_RATE 0x007a484b -#define QCOM_RPM_SMD_KEY_ENABLE 0x62616e45 -#define QCOM_RPM_SMD_KEY_STATE 0x54415453 -#define QCOM_RPM_SCALING_ENABLE_ID 0x2 - #define __DEFINE_CLK_SMD_RPM_PREFIX(_prefix, _name, _active, \ type, r_id, key) \ static struct clk_smd_rpm clk_smd_rpm_##_prefix##_active; \ @@ -171,12 +164,6 @@ struct clk_smd_rpm { unsigned long rate; }; =20 -struct clk_smd_rpm_req { - __le32 key; - __le32 nbytes; - __le32 value; -}; - struct rpm_smd_clk_desc { struct clk_smd_rpm **clks; size_t num_clks; diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-= rpm.h index 99499e4b080e..8190878645f9 100644 --- a/include/linux/soc/qcom/smd-rpm.h +++ b/include/linux/soc/qcom/smd-rpm.h @@ -2,6 +2,8 @@ #ifndef __QCOM_SMD_RPM_H__ #define __QCOM_SMD_RPM_H__ =20 +#include + struct qcom_smd_rpm; =20 #define QCOM_SMD_RPM_ACTIVE_STATE 0 @@ -45,6 +47,19 @@ struct qcom_smd_rpm; #define QCOM_SMD_RPM_PKA_CLK 0x616b70 #define QCOM_SMD_RPM_MCFG_CLK 0x6766636d =20 +#define QCOM_RPM_KEY_SOFTWARE_ENABLE 0x6e657773 +#define QCOM_RPM_KEY_PIN_CTRL_CLK_BUFFER_ENABLE_KEY 0x62636370 +#define QCOM_RPM_SMD_KEY_RATE 0x007a484b +#define QCOM_RPM_SMD_KEY_ENABLE 0x62616e45 +#define QCOM_RPM_SMD_KEY_STATE 0x54415453 +#define QCOM_RPM_SCALING_ENABLE_ID 0x2 + +struct clk_smd_rpm_req { + __le32 key; + __le32 nbytes; + __le32 value; +}; + int qcom_rpm_smd_write(struct qcom_smd_rpm *rpm, int state, u32 resource_type, u32 resource_id, --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 C83F0EB64DA for ; Wed, 14 Jun 2023 10:22:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243279AbjFNKWm (ORCPT ); Wed, 14 Jun 2023 06:22:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35058 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243331AbjFNKW2 (ORCPT ); Wed, 14 Jun 2023 06:22:28 -0400 Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com [IPv6:2a00:1450:4864:20::22b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF9391BDB for ; Wed, 14 Jun 2023 03:22:25 -0700 (PDT) Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2b1a86cdec6so6971231fa.3 for ; Wed, 14 Jun 2023 03:22:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738144; x=1689330144; 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=lt52lJ7IAYpZyo39NdZRaisuqAyx1l+kNW12PnaKg2U=; b=IWFvEkxe8V8zKzjnnK6wW+jAr93l1PemF4j+i2UrmK+I7Gei6TtLUzJiNBz+pByN3b PXRzObiM4QboZuEu9XysQV8QYGX3rc/LoOSidqNxSiXwoFPvzlkkGh/w+J7Y8vbmQ2mx 7U+6Za+OsgBW4Qn4bWAYfqFJkMje8lhv7VwG+e0CsflXsQwwkQj4Zjdp/xARO4v5RvKD RiPbY3ndfUzy7w9FHiorAtwF8QYzlOBUqeBAEDq1L4bNJbYazMAyXitLOkC+NqqNvJ16 916VFJ41WWmTRDF3tHoIY192hN7Sq/IBI+/Yh2RElHUUehDNRv1zxpqv9bkeJUuJya62 XB9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738144; x=1689330144; 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=lt52lJ7IAYpZyo39NdZRaisuqAyx1l+kNW12PnaKg2U=; b=J1M8y+KG+G8XrUKlHbk7/tvWaBWIGJEiXS1QplEq3SreruL0xECdsTkqBViqoRmafk QPm0jQeH3LfYSCW958sAf1nOXvGL/RwJjvzC3YbUj7b2hvfDRAtwgTPcsjcNbBdWEXnX tD7ath+vtuWWZNhjnnrXdu0Dxcu0zepRcNuT+A8LUw6p4hZy86HSafqh1azAvHeIJYfZ ntttmva6A5WBKFgBwZKSMDZGOoRfDv7PqXZYIaMKfYB5+p9G91l2awvRXMImyIw4boXV 3UxzgncVfAdyjV0DwKy/n5L/IoP4MSL2mKVqZ3NH6OZhqMr7+e3gVgIud28FNze/uagq EwNw== X-Gm-Message-State: AC+VfDz2itIhMyGoETO4ADLc9xHELiX9Cu98gp1Budv5P3yTP0X5BOKc O706SCmel+5x0hdJVgfkB3qwFw== X-Google-Smtp-Source: ACHHUZ4VezIuskLSbrb+fOlN7xQco37hP8aam7VCpAwQfhQvHQWA9dX62n0x2dnYtGK6JWkATL+IJg== X-Received: by 2002:a2e:90da:0:b0:2b3:4ef9:34cd with SMTP id o26-20020a2e90da000000b002b34ef934cdmr109628ljg.8.1686738144056; Wed, 14 Jun 2023 03:22:24 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:23 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:16 +0200 Subject: [PATCH v5 05/22] soc: qcom: smd-rpm: Move icc_smd_rpm registration to clk-smd-rpm MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-5-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Stephan Gerhold X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=3949; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=jmhJvBjqUtAAd9ogN4BP2RfilLnjEO+h94MD5RIqO5E=; b=C7Zf8dxJHhKoxq3DzVEAJLS5fWwU2dRq5+c6kwnVzrY2vCnoAwUDNrji5EHAXmo3aZH0zHMot dnZhMt77TAfA3UsL+HYb8jcjPi080ROKfKnCaeGkQPwS6XIto02TFv/ 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 From: Stephan Gerhold icc_smd_rpm will do bus clock votes itself rather than taking the unnecessary detour through the clock subsystem. However, it can only do that after the clocks have been handed off and scaling has been enabled in the RPM in clk-smd-rpm. Move the icc_smd_rpm registration from smd-rpm.c to clk-smd-rpm.c to avoid any possible races. icc_smd_rpm gets the driver data from the smd-rpm device, so still register the platform device on the smd-rpm parent device. Signed-off-by: Stephan Gerhold [Konrad: remove unrelated cleanups] Acked-by: Stephen Boyd Signed-off-by: Konrad Dybcio --- drivers/clk/qcom/clk-smd-rpm.c | 21 +++++++++++++++++++++ drivers/soc/qcom/smd-rpm.c | 17 +---------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index 937cb1515968..6e7f0438e8b8 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -1289,12 +1289,20 @@ static struct clk_hw *qcom_smdrpm_clk_hw_get(struct= of_phandle_args *clkspec, return desc->clks[idx] ? &desc->clks[idx]->hw : ERR_PTR(-ENOENT); } =20 +static void rpm_smd_unregister_icc(void *data) +{ + struct platform_device *icc_pdev =3D data; + + platform_device_unregister(icc_pdev); +} + static int rpm_smd_clk_probe(struct platform_device *pdev) { int ret; size_t num_clks, i; struct clk_smd_rpm **rpm_smd_clks; const struct rpm_smd_clk_desc *desc; + struct platform_device *icc_pdev; =20 rpmcc_smd_rpm =3D dev_get_drvdata(pdev->dev.parent); if (!rpmcc_smd_rpm) { @@ -1344,6 +1352,19 @@ static int rpm_smd_clk_probe(struct platform_device = *pdev) if (ret) goto err; =20 + icc_pdev =3D platform_device_register_data(pdev->dev.parent, + "icc_smd_rpm", -1, NULL, 0); + if (IS_ERR(icc_pdev)) { + dev_err(&pdev->dev, "Failed to register icc_smd_rpm device: %pE\n", + icc_pdev); + /* No need to unregister clocks because of this */ + } else { + ret =3D devm_add_action_or_reset(&pdev->dev, rpm_smd_unregister_icc, + icc_pdev); + if (ret) + goto err; + } + return 0; err: dev_err(&pdev->dev, "Error registering SMD clock driver (%d)\n", ret); diff --git a/drivers/soc/qcom/smd-rpm.c b/drivers/soc/qcom/smd-rpm.c index 0c1aa809cc4e..577f1f25ab10 100644 --- a/drivers/soc/qcom/smd-rpm.c +++ b/drivers/soc/qcom/smd-rpm.c @@ -19,7 +19,6 @@ /** * struct qcom_smd_rpm - state of the rpm device driver * @rpm_channel: reference to the smd channel - * @icc: interconnect proxy device * @dev: rpm device * @ack: completion for acks * @lock: mutual exclusion around the send/complete pair @@ -27,7 +26,6 @@ */ struct qcom_smd_rpm { struct rpmsg_endpoint *rpm_channel; - struct platform_device *icc; struct device *dev; =20 struct completion ack; @@ -197,7 +195,6 @@ static int qcom_smd_rpm_callback(struct rpmsg_device *r= pdev, static int qcom_smd_rpm_probe(struct rpmsg_device *rpdev) { struct qcom_smd_rpm *rpm; - int ret; =20 rpm =3D devm_kzalloc(&rpdev->dev, sizeof(*rpm), GFP_KERNEL); if (!rpm) @@ -210,23 +207,11 @@ static int qcom_smd_rpm_probe(struct rpmsg_device *rp= dev) rpm->rpm_channel =3D rpdev->ept; dev_set_drvdata(&rpdev->dev, rpm); =20 - rpm->icc =3D platform_device_register_data(&rpdev->dev, "icc_smd_rpm", -1, - NULL, 0); - if (IS_ERR(rpm->icc)) - return PTR_ERR(rpm->icc); - - ret =3D of_platform_populate(rpdev->dev.of_node, NULL, NULL, &rpdev->dev); - if (ret) - platform_device_unregister(rpm->icc); - - return ret; + return of_platform_populate(rpdev->dev.of_node, NULL, NULL, &rpdev->dev); } =20 static void qcom_smd_rpm_remove(struct rpmsg_device *rpdev) { - struct qcom_smd_rpm *rpm =3D dev_get_drvdata(&rpdev->dev); - - platform_device_unregister(rpm->icc); of_platform_depopulate(&rpdev->dev); } =20 --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 A81F3EB64D9 for ; Wed, 14 Jun 2023 10:22:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243625AbjFNKWt (ORCPT ); Wed, 14 Jun 2023 06:22:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35298 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235339AbjFNKWi (ORCPT ); Wed, 14 Jun 2023 06:22:38 -0400 Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com [IPv6:2a00:1450:4864:20::234]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A575C1BF6 for ; Wed, 14 Jun 2023 03:22:27 -0700 (PDT) Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-2b344476313so6710001fa.3 for ; Wed, 14 Jun 2023 03:22:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738145; x=1689330145; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=UEM3N0iLIlvYLepw85JsPFibfyRzMkZ98OPjRwmkvbs=; b=UrbFlgODVPmj2NGdwjbJRN5t/sB1AfaciGH68h64gdEejWHI3SD3zK8hGzT1VGsHuc Xx+z+e1I9qjCkj2StftG05xScivv+lWx3n41s9vEVxgE6CNNvtjCnIrT1wUSeE8sZMIy LM9elia3GePns6kaWAfbSjsKhsdmZ+cm+XGmvUSyUB79k1eEtD7iK84Dt1K+JQOc9B87 gM6zOHZpYr4qT11kvmm3PpxFgmJL8fZG+vDczAtreBIclrmX49LzF+cqqXYDka1/uwht zZIeb+6ksWaTk5cKtAaTYfMT8ukPLWo2TlI3SuhhL1Sx2LpMao643lmxFz7/Oe7f+f9n neIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738145; x=1689330145; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UEM3N0iLIlvYLepw85JsPFibfyRzMkZ98OPjRwmkvbs=; b=eWN8BPMPb105CXpFlW5hGOODu/opsRm5ug0ihdaUoXe1//URmb7zqGRtgiEZHOI3z2 GEVECXoEOyDsD0eH1mTucNWT9gG1IYpAoIvpOqDPL8o2q8qwIwFQM0nxoj+pyFn9j3Io rFxXuiIplODM1sbvWmjTdEzcvtpoLK8LzoDjZ2f0bsjzAnw4d6lbQeEarFf2Hc574vbo /mffxx+nXFhp7aMR3MBcs57G+DHiPoRwNhhqU/7kb/LX487VLyZEOtcWUyMsCt3e3dZv hn0/tGnVAy3FKWJK0xe22vwbb+E/s4mfb5TlmwtAR+LqRgrETPB31iH1kCGi3P8CAkmG A6pQ== X-Gm-Message-State: AC+VfDxtK0ryFsPg197iFlpRuQtSm8pPJNOpXHRoo0nPLF3BKW+7X+eI DyzividArsO+cZ1r8j9qDYucng== X-Google-Smtp-Source: ACHHUZ6QIgny4qx99n2wOMJLyHIrxll5PjxQICjC+F7POpODJ+0rfetBkmTUy/GzGbRQRyZ4lnoHNQ== X-Received: by 2002:a2e:7208:0:b0:2b1:eb9e:20df with SMTP id n8-20020a2e7208000000b002b1eb9e20dfmr5951905ljc.17.1686738145613; Wed, 14 Jun 2023 03:22:25 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:25 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:17 +0200 Subject: [PATCH v5 06/22] interconnect: qcom: icc-rpm: Introduce keep_alive MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-6-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=3661; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=g6kESh9vFn5cUExPwamnhleED6tFd+S7dtFe11cmEVE=; b=+5TX+IWvITvOPt3FKf80PLSfZpyEXg88Ruo8CN8uG442tDQftNEqI6MIJVm4RfvIrr5ZrEjJb Pyy9LVaNOsnCtkERlGg1opf2kH26p6NKEihhv9gZBKtDVHoKjOeOEUI X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The downstream kernel employs the concept of "keeping the bus alive" by voting for the minimum (XO/19.2MHz) rate at all times on certain (well, most) buses. This is a very important thing to have, as if we either have a lackluster/wrong DT that doesn't specify a (high enough) vote on a certain bus, we may lose access to the entire bus altogether. This is very apparent when we only start introducing interconnect support on a given platform and haven't yet introduced voting on all peripherals. The same can happen if we only have a single driver casting a vote on a certain bus and that driver exits/crashes/suspends. The keepalive vote is limited to the ACTIVE bucket, as keeping a permanent vote on the SLEEP one could prevent the platform from properly entering low power mode states. Introduce the very same concept, with a slight twist: the vendor kernel checks whether the rate is zero before setting the minimum vote, but that's rather silly, as in doing so we're at the mercy of CCF. Instead, explicitly clamp the rates to always be >=3D 19.2 MHz for providers with keep_alive=3Dtrue. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 10 ++++++++++ drivers/interconnect/qcom/icc-rpm.h | 3 +++ 2 files changed, 13 insertions(+) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index 6acc7686ed38..863e8ba1daa2 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -50,6 +50,8 @@ #define NOC_QOS_MODE_FIXED_VAL 0x0 #define NOC_QOS_MODE_BYPASS_VAL 0x2 =20 +#define ICC_BUS_CLK_MIN_RATE 19200000ULL + static int qcom_icc_set_qnoc_qos(struct icc_node *src) { struct icc_provider *provider =3D src->provider; @@ -380,6 +382,13 @@ static int qcom_icc_set(struct icc_node *src, struct i= cc_node *dst) do_div(rate, src_qn->buswidth); rate =3D min_t(u64, rate, LONG_MAX); =20 + /* + * Downstream checks whether the requested rate is zero, but it makes li= ttle sense + * to vote for a value that's below the lower threshold, so let's not do= so. + */ + if (bucket =3D=3D QCOM_ICC_BUCKET_WAKE && qp->keep_alive) + rate =3D max(ICC_BUS_CLK_MIN_RATE, rate); + if (qp->bus_clk_rate[i] =3D=3D rate) continue; =20 @@ -453,6 +462,7 @@ int qnoc_probe(struct platform_device *pdev) for (i =3D 0; i < qp->num_bus_clks; i++) qp->bus_clks[i].id =3D bus_clocks[i]; =20 + qp->keep_alive =3D desc->keep_alive; qp->type =3D desc->type; qp->qos_offset =3D desc->qos_offset; =20 diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index ee705edf19dd..d2c04c400cad 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -33,6 +33,7 @@ enum qcom_icc_type { * @bus_clk_rate: bus clock rate in Hz * @bus_clks: the clk_bulk_data table of bus clocks * @intf_clks: a clk_bulk_data array of interface clocks + * @keep_alive: whether to always keep a minimum vote on the bus clocks * @is_on: whether the bus is powered on */ struct qcom_icc_provider { @@ -45,6 +46,7 @@ struct qcom_icc_provider { u64 bus_clk_rate[NUM_BUS_CLKS]; struct clk_bulk_data bus_clks[NUM_BUS_CLKS]; struct clk_bulk_data *intf_clks; + bool keep_alive; bool is_on; }; =20 @@ -102,6 +104,7 @@ struct qcom_icc_desc { const char * const *bus_clocks; const char * const *intf_clocks; size_t num_intf_clocks; + bool keep_alive; bool no_clk_scaling; enum qcom_icc_type type; const struct regmap_config *regmap_cfg; --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 CEE9DEB64D9 for ; Wed, 14 Jun 2023 10:22:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239813AbjFNKWy (ORCPT ); Wed, 14 Jun 2023 06:22:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243522AbjFNKWm (ORCPT ); Wed, 14 Jun 2023 06:22:42 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5E7119AC for ; Wed, 14 Jun 2023 03:22:28 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2b1b66a8fd5so6791571fa.0 for ; Wed, 14 Jun 2023 03:22:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738147; x=1689330147; 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=KGqdYljk/BXQOSadkDKenWACuVWkhdGMQVPkOQZa/PU=; b=iiwazeLR8igv9xFuMHoFoLI2OId5w/jSMbJG/DWsN3kqxWU1BDkqsOymYMTAY0KB8/ zcdW8tjL2bxfXq5+wrUXhXsWWSloV/6Jp/WmGcA5x4vo2VW5cvQVjv1J5g8762o4r5PH 79pQELwi4GBJqyvt0Ds52ufkL4uCOhbEJqyCA6zJOBJr60UUpgc03AiKyGfqkAiSmgSj ODmUMWZNTZcbY19bO4gxS0BzIefUgnb7c+K1na9HfmBHA6Ti4pwzY8ABAMK64O9hctOf 3I5NVPR8VWu0V4Znvc25WxcmLkSqXRQuLLw3uWH9JPgtxQ9thbixfSNHxH+QHm4SI+5W LgEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738147; x=1689330147; 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=KGqdYljk/BXQOSadkDKenWACuVWkhdGMQVPkOQZa/PU=; b=Mes63Xcj0suGa42c/4z119VuYY9xY4G8ynV1t8KmpVLUVjO3mzsxPt3YoI9X+nF2QJ kb1Ueb61DQkfOem/vLZ+EhUDub/cswMr6xgsMeRh95UvzjjwZCMihDOjgQG2cSz8nPdv u+iSa8yX2NwY/ZsTvLK4upp4nsMqY+ZOZbY1ST+7B51KvjUThIgPKuXqQIkPz6V8+I1w t/txSt925FEX/4I70pokI0D9OBEHNdJ9ijP7fljjm8se+K8uv9BvUM05RGAqbGlk767l mx6GTfVgM+Tv3QsLY5ad3ygD8/8qu1yY3bOu3Hyt9c5zRle/JsYZMEOVppSWihVXfrYa aEVA== X-Gm-Message-State: AC+VfDyNxQvdOOxvHJi4lF0KZNA7IIEZRDZcMcgpxNvlgmdaPTwFe2uH 5jUpzIAz1gUY9CJ3dQTByapWng== X-Google-Smtp-Source: ACHHUZ6y37TFtTr/+lOpYIuYHEYCQE+evMrk7CU3AT+KaJLUEQ1wBqS3SGkMNYDvJuLOWPTOv9Hs7Q== X-Received: by 2002:a2e:84d7:0:b0:2a7:a393:a438 with SMTP id q23-20020a2e84d7000000b002a7a393a438mr5748256ljh.24.1686738147034; Wed, 14 Jun 2023 03:22:27 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:26 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:18 +0200 Subject: [PATCH v5 07/22] interconnect: qcom: Fold smd-rpm.h into icc-rpm.h MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-7-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=5451; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=ylF4JrhNb4QpLR63mLl/kyJvmecazdKn76bHZ9DX7ks=; b=SNwPY5zwZ31Y+j08qInd2HvsdnJyhvW87yLfkSoyt/YOGKoLFub3DKnq9bxIYc0zAg0G07YgJ KgvQfknKvhCBUhjXcZyj4OP+5F/64EeUWaVKOkoT3K3Iuptk21TNtI2 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org smd-rpm.h is not very useful as-is and both files are always included anyway.. Combine them. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 1 - drivers/interconnect/qcom/icc-rpm.h | 5 +++++ drivers/interconnect/qcom/msm8916.c | 1 - drivers/interconnect/qcom/msm8939.c | 1 - drivers/interconnect/qcom/msm8974.c | 2 +- drivers/interconnect/qcom/msm8996.c | 1 - drivers/interconnect/qcom/qcm2290.c | 1 - drivers/interconnect/qcom/qcs404.c | 1 - drivers/interconnect/qcom/sdm660.c | 1 - drivers/interconnect/qcom/smd-rpm.c | 2 +- drivers/interconnect/qcom/smd-rpm.h | 15 --------------- 11 files changed, 7 insertions(+), 24 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index 863e8ba1daa2..b8ecf9538ab9 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -14,7 +14,6 @@ #include #include =20 -#include "smd-rpm.h" #include "icc-common.h" #include "icc-rpm.h" =20 diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index d2c04c400cad..9ec90e13bfbd 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -6,6 +6,8 @@ #ifndef __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H #define __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H =20 +#include + #include =20 #define RPM_BUS_MASTER_REQ 0x73616d62 @@ -121,4 +123,7 @@ enum qos_mode { int qnoc_probe(struct platform_device *pdev); int qnoc_remove(struct platform_device *pdev); =20 +bool qcom_icc_rpm_smd_available(void); +int qcom_icc_rpm_smd_send(int ctx, int rsc_type, int id, u32 val); + #endif diff --git a/drivers/interconnect/qcom/msm8916.c b/drivers/interconnect/qco= m/msm8916.c index 5c4ba2f37c8e..196b05879896 100644 --- a/drivers/interconnect/qcom/msm8916.c +++ b/drivers/interconnect/qcom/msm8916.c @@ -15,7 +15,6 @@ =20 #include =20 -#include "smd-rpm.h" #include "icc-rpm.h" =20 enum { diff --git a/drivers/interconnect/qcom/msm8939.c b/drivers/interconnect/qco= m/msm8939.c index caf0aefad668..639566dce45a 100644 --- a/drivers/interconnect/qcom/msm8939.c +++ b/drivers/interconnect/qcom/msm8939.c @@ -16,7 +16,6 @@ =20 #include =20 -#include "smd-rpm.h" #include "icc-rpm.h" =20 enum { diff --git a/drivers/interconnect/qcom/msm8974.c b/drivers/interconnect/qco= m/msm8974.c index 1828deaca443..968162213d40 100644 --- a/drivers/interconnect/qcom/msm8974.c +++ b/drivers/interconnect/qcom/msm8974.c @@ -38,7 +38,7 @@ #include #include =20 -#include "smd-rpm.h" +#include "icc-rpm.h" =20 enum { MSM8974_BIMC_MAS_AMPSS_M0 =3D 1, diff --git a/drivers/interconnect/qcom/msm8996.c b/drivers/interconnect/qco= m/msm8996.c index 20340fb62fe6..1f7e88a37acd 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -18,7 +18,6 @@ #include =20 #include "icc-rpm.h" -#include "smd-rpm.h" #include "msm8996.h" =20 static const char * const mm_intf_clocks[] =3D { diff --git a/drivers/interconnect/qcom/qcm2290.c b/drivers/interconnect/qco= m/qcm2290.c index a29cdb4fac03..cb636e67a5a4 100644 --- a/drivers/interconnect/qcom/qcm2290.c +++ b/drivers/interconnect/qcom/qcm2290.c @@ -19,7 +19,6 @@ #include =20 #include "icc-rpm.h" -#include "smd-rpm.h" =20 enum { QCM2290_MASTER_APPSS_PROC =3D 1, diff --git a/drivers/interconnect/qcom/qcs404.c b/drivers/interconnect/qcom= /qcs404.c index fae155344332..938283ddd0e3 100644 --- a/drivers/interconnect/qcom/qcs404.c +++ b/drivers/interconnect/qcom/qcs404.c @@ -13,7 +13,6 @@ #include =20 =20 -#include "smd-rpm.h" #include "icc-rpm.h" =20 enum { diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom= /sdm660.c index 7ffaf70d62d3..003fc7d110a7 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -17,7 +17,6 @@ #include =20 #include "icc-rpm.h" -#include "smd-rpm.h" =20 enum { SDM660_MASTER_IPA =3D 1, diff --git a/drivers/interconnect/qcom/smd-rpm.c b/drivers/interconnect/qco= m/smd-rpm.c index dc8ff8d133a9..b0183262ba66 100644 --- a/drivers/interconnect/qcom/smd-rpm.c +++ b/drivers/interconnect/qcom/smd-rpm.c @@ -13,7 +13,7 @@ #include #include =20 -#include "smd-rpm.h" +#include "icc-rpm.h" =20 #define RPM_KEY_BW 0x00007762 =20 diff --git a/drivers/interconnect/qcom/smd-rpm.h b/drivers/interconnect/qco= m/smd-rpm.h deleted file mode 100644 index ca9d0327b8ac..000000000000 --- a/drivers/interconnect/qcom/smd-rpm.h +++ /dev/null @@ -1,15 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2019, Linaro Ltd. - * Author: Georgi Djakov - */ - -#ifndef __DRIVERS_INTERCONNECT_QCOM_SMD_RPM_H -#define __DRIVERS_INTERCONNECT_QCOM_SMD_RPM_H - -#include - -bool qcom_icc_rpm_smd_available(void); -int qcom_icc_rpm_smd_send(int ctx, int rsc_type, int id, u32 val); - -#endif --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 E8CE7EB64DC for ; Wed, 14 Jun 2023 10:23:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243715AbjFNKXG (ORCPT ); Wed, 14 Jun 2023 06:23:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35306 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243558AbjFNKWn (ORCPT ); Wed, 14 Jun 2023 06:22:43 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0DBE51BD4 for ; Wed, 14 Jun 2023 03:22:30 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2b1a7e31dcaso6625001fa.2 for ; Wed, 14 Jun 2023 03:22:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738148; x=1689330148; 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=tznUKYMNGUVufVQqnleYMuCU9FFyTKNRAjeP7Rsq2rU=; b=Xdy82ohDJDubZkVT03B8Lbrd+ANj+fWIVm4kwZ0JZdhdodVhgr+dafRbpAuzh3zsbY VH8a1mx9PcYO7R2AV7Uz4jlz0UkffifGiB03WUBTObb3hTDTpYTy3iG38NqNXBLoCd6S qzx5at6bIIIe8HRa7mef4n8mvFXcA/ZDodNdtzzQrDglhPrnJiVWSVYt4MWhGliXeT4S +JlefTWcuPqIiRFRtev5wThz9iIeKwdNzSWN1ma2BJfJR+2KSVHWy7tv6C3TIaoB1EMp 1DOecXNH8ApMnuG9vffn5eADQgiNMeldkBeg6Vne3c6ReiiQo54dhhDIMFRYdqnrSBIH 8NYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738148; x=1689330148; 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=tznUKYMNGUVufVQqnleYMuCU9FFyTKNRAjeP7Rsq2rU=; b=hH1TyhvlvL5XUNMUmbsg+R+nUemAWBUKV6WTBo0VQNbRWUDK4P94++0U49RGS5QL+Z eQgjBlP2f3sY/teRhYo0vdupUZZ3wzvxbysv0eZqo/J1ZtAAXb6DS9kMSTl7Hme9vNpB R6/SA/bxDHFKyWXtdyby7PsuF0EETh0J4jpUAv5FmTliHV0oB4wFwOdzCNVxqdrjtMJQ BxogACY6fasNlm54WCwDBUV3wkWaMP4uDTg1cdVDt0N4K/27w8hhdprUhFrFuZxXASGJ lGqvFOqak01f+p6U1hpMxAQSi0lqsbPEM6babuxTDtn0KIgeDVroopuldCUdWgDPnLO9 WHZQ== X-Gm-Message-State: AC+VfDx+wvUMGT8/eCNW6JRRWivZK4CtcyJkdntqYDIyGJhsfoYg1Ku3 z6F/2oeEFXqrbxSATSx3C6qFbw== X-Google-Smtp-Source: ACHHUZ5Kkm0HtcszG9xhJK4da0bGiELT4wgNxMniwLnMhBAE14Mz8PEzUg+pTrpchNtiGDY5bzlVkg== X-Received: by 2002:a2e:9784:0:b0:2ad:8380:770d with SMTP id y4-20020a2e9784000000b002ad8380770dmr6514901lji.21.1686738148360; Wed, 14 Jun 2023 03:22:28 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:28 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:19 +0200 Subject: [PATCH v5 08/22] interconnect: qcom: smd-rpm: Add rpmcc handling skeleton code MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-8-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=3224; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=o4L7cQzLORJ+ozHEwT+lr8CvspibuRjlWs1YqX2mbng=; b=Ak/0TZAGFcfewU2zztSvVpLThAYHkY2Lc7fdBqphnIQuz1YptTD1A3M+Uf7UQNU2Xd8Dxw7Qk siq4suj3+dWCRVxEMTkyDL1w+KNME3k0+7GIuKoICo58Fs/0QIKZaI1 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 Reviewed-by: Stephan Gerhold --- drivers/interconnect/qcom/icc-rpm.h | 15 +++++++++++++++ drivers/interconnect/qcom/smd-rpm.c | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index 9ec90e13bfbd..d857fb1efb75 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 { unsigned 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, int rsc_= type, u32 rate); =20 #endif diff --git a/drivers/interconnect/qcom/smd-rpm.c b/drivers/interconnect/qco= m/smd-rpm.c index b0183262ba66..b06374340eeb 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,26 @@ 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, int rsc_= type, u32 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)), + }; + + /* Branch clocks are only on/off */ + if (clk->branch) + rate =3D !!rate; + + req.value =3D cpu_to_le32(rate); + return qcom_rpm_smd_write(icc_smd_rpm, + rsc_type, + 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; --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 6BE2BEB64DB for ; Wed, 14 Jun 2023 10:23:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243800AbjFNKXK (ORCPT ); Wed, 14 Jun 2023 06:23:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35424 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241544AbjFNKWo (ORCPT ); Wed, 14 Jun 2023 06:22:44 -0400 Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com [IPv6:2a00:1450:4864:20::235]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EB6861FD6 for ; Wed, 14 Jun 2023 03:22:31 -0700 (PDT) Received: by mail-lj1-x235.google.com with SMTP id 38308e7fff4ca-2b341f83493so6915541fa.3 for ; Wed, 14 Jun 2023 03:22:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738150; x=1689330150; 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=NMeAB8NggavhtPAodbQxMMfHHg0eK6NS0qxA7bar34M=; b=u7mg0gl6T6dvzGaemnNPkVmeKUtqKffHc5fJTjY9zitQcuLWW9qMRypervzcza/N/6 6IXTg+vkMNRIn7C76UEOBtJYTR5qdhRs2NKMWNbAFsJ1rdrrp4qG7Rp+pV6dF9GZzpNc 0TmSBZpOH6E56Zvxmj4yHWlidJxnKV+FUVAstG8yRKRPoyvM3wPSkX5AazfLmX7J9aeH wDT4cTD34tBxbhExMvb+a3mBzeK8CZs6kssjPdQ9H4gHDydTEhpymB8A0O9Cm0owFfDv 01qmYQJXRtkB7dDdi5HbU1D6NlGZcfe6MxqfWAR+j9RKP4eaH8kJfUA9JKOjwSwo+AgO QopA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738150; x=1689330150; 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=NMeAB8NggavhtPAodbQxMMfHHg0eK6NS0qxA7bar34M=; b=NgbG9blmxHKhmth/Otl483BYkGNPd3q7KmYGuw+cxHST4/r3vOeGf/ztKT6tZ5bQge omH07oBAw30FfQsHev/qzSXNpq6Bd6TDcN8T5HPMGUUxFkssa/ZQGmQxWHHKgIsMDkyi a/OSTzkCPyg3c9bnycVC/uynVbzfGSIZ7aCDC8dxzgAdOIRqtldqIxWkiJU/WlHitKP8 DwL6kAMfh6YZA+RICPyUKR+54jZReCwIuTvXhGEYsPxIypWkh2tZq/SxYP5PmU7M2iE4 U7lKenPqpPU65zcCDxBDYwwdu2Ob1+6zA8ri597KZ8OJ+pzQ2Ul8ua+wxG2EhaO2qAuo gW4g== X-Gm-Message-State: AC+VfDwXRNYf5vOjOVbPGhL67rDhudUbqursFFGmrFlGmeemTWhyuVRK oDjJJrK3e5VFivVwPHWkUj1zcA== X-Google-Smtp-Source: ACHHUZ4WaeoyumQuMN8UGyOwnQwg9TqbJFYoJWE7H7Rj1LJIQ3rCUhoEUwLDazFrgET/Xsm86Qg07Q== X-Received: by 2002:a2e:9846:0:b0:2b1:ac82:296 with SMTP id e6-20020a2e9846000000b002b1ac820296mr6623077ljj.34.1686738149872; Wed, 14 Jun 2023 03:22:29 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:29 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:20 +0200 Subject: [PATCH v5 09/22] interconnect: qcom: Add missing headers in icc-rpm.h MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-9-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=801; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=/wElQJQGA2PmNr9/Z6eDTmsxdX4r+DV0cr/U6e1eUwQ=; b=ev/C4jG/PswbyAbtaZxNLmYPCT+12tzwDzErWPQHJUNWaM+3+H4vwU4KEfI8Kee0W64fqQlhP defP+GNlfwUBSnXQxy/8bGZkNchl14q+ju8kUD1oQszoS2kM4erOuT0 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently the header does not provide all the required dependencies. Fix it. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index d857fb1efb75..0355e0250ccc 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -6,6 +6,8 @@ #ifndef __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H #define __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H =20 +#include +#include #include =20 #include --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 8A49CEB64D9 for ; Wed, 14 Jun 2023 10:23:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243901AbjFNKXR (ORCPT ); Wed, 14 Jun 2023 06:23:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35626 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235339AbjFNKWu (ORCPT ); Wed, 14 Jun 2023 06:22:50 -0400 Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com [IPv6:2a00:1450:4864:20::22f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2A3231FE2 for ; Wed, 14 Jun 2023 03:22:33 -0700 (PDT) Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-2b344476595so6674501fa.2 for ; Wed, 14 Jun 2023 03:22:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738151; x=1689330151; 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=7ArJI4MewEV83x6kNYHiPDNdWtmrdiLtZB3dwf/vxgE=; b=c05UfoenkObdOAwp9ax1X8cw92ADKHVEjx1oCcuCMqAlKCGtdVAq3h4vLpgmN9ttqs tDlH9H3/ySNE0QB22RAib57C6GAnIeHX3XFpSnugTe+1zCtG6f7gXLBChYlMMSZ51jQi BpgVPG7tEJHtUj89FSwARQaFYpsArTf37NMB0hp3FqxDZfO8xnFIEU0SrIfGaOSaGqik LTQBcBAnbM8/Wyzz2AI8xF/iMpQ+lnK/OndEYEiZQypNqAnzGQBAmF3pEcvt4tP5h5tM RoEPjRHa1TowChf5tc6vybZ/Nx96ogaMytkpl7uK86uL/KGu8tU/o1kUI10oLcgPppfF eBYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738151; x=1689330151; 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=7ArJI4MewEV83x6kNYHiPDNdWtmrdiLtZB3dwf/vxgE=; b=jST6OkWQDgLQ8Ynb3shpxqJp4mmX9XVLMgYKgj7gbc1z9SfAf99Llg8zgZh4DbG6Y7 cgYyKqUlzZiNBWUFKAQaRFaZG1ZX0E+UFXJwk7zFKXKU2O6o9qz0aewvpp3OkkuG5kVa dh3gg8eHf5xsv2GxzXta9aTVpFonBYGZpedA6L7T8wxoyDU1KMDxJ79VRa6HYGh3xTwk aJIjVEK/Bhw8NYDXitmDDucUBifrSwdJSklEISlV8IkkxuG1Dzk0j7FZ+/vnXQRIFhxJ dnK84Eq7V/DuhRj06zC0td1nvb39htg1kDlanGUXuMJrY9Qpj6SyEkxcJo2lt9GNEHj3 8nCg== X-Gm-Message-State: AC+VfDwCEmetDhEffCEZzl1n+k3mQrdXmrHeuiCfF3O6oLF//3jWiVGo 5k1hYKQe7qyvwNbp2ftgQNFrCg== X-Google-Smtp-Source: ACHHUZ5GemExijkLeTKF6u3SB7GjA2hDtGfbp8aZj0VGElXV1mkSOXI/8R3hQ9C85Yc4oHZsLnRZSQ== X-Received: by 2002:a2e:3305:0:b0:2af:2466:1c18 with SMTP id d5-20020a2e3305000000b002af24661c18mr6342818ljc.18.1686738151202; Wed, 14 Jun 2023 03:22:31 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:30 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:21 +0200 Subject: [PATCH v5 10/22] interconnect: qcom: Define RPM bus clocks MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-10-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=4129; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=QhDLtz7hoqCOcuIMppqM3wqAxXoqGODrIbgYnXMpeck=; b=/cELH2k/OkTylFu+Z13wvHjf+Swc/1U38RLFd9KyaTl1Yb/0yzRhCOp4SQjUWcLAV07XSXkyR PQ2lcvn9XjMBv8sgk6SEtb5VPPkxqiProz2FX9OG8onaeKOL8NMiTGj X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add the definitions for RPM bus clocks that will be used by many different platforms. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/Makefile | 2 +- drivers/interconnect/qcom/icc-rpm-clocks.c | 77 ++++++++++++++++++++++++++= ++++ drivers/interconnect/qcom/icc-rpm.h | 13 +++++ 3 files changed, 91 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..63c82a91bbc7 --- /dev/null +++ b/drivers/interconnect/qcom/icc-rpm-clocks.c @@ -0,0 +1,77 @@ +/* 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, +}; +EXPORT_SYMBOL_GPL(aggre1_clk); + +const struct rpm_clk_resource aggre2_clk =3D { + .resource_type =3D QCOM_SMD_RPM_AGGR_CLK, + .clock_id =3D 2, +}; +EXPORT_SYMBOL_GPL(aggre2_clk); + +const struct rpm_clk_resource bimc_clk =3D { + .resource_type =3D QCOM_SMD_RPM_MEM_CLK, + .clock_id =3D 0, +}; +EXPORT_SYMBOL_GPL(bimc_clk); + +const struct rpm_clk_resource bus_0_clk =3D { + .resource_type =3D QCOM_SMD_RPM_BUS_CLK, + .clock_id =3D 0, +}; +EXPORT_SYMBOL_GPL(bus_0_clk); + +const struct rpm_clk_resource bus_1_clk =3D { + .resource_type =3D QCOM_SMD_RPM_BUS_CLK, + .clock_id =3D 1, +}; +EXPORT_SYMBOL_GPL(bus_1_clk); + +const struct rpm_clk_resource bus_2_clk =3D { + .resource_type =3D QCOM_SMD_RPM_BUS_CLK, + .clock_id =3D 2, +}; +EXPORT_SYMBOL_GPL(bus_2_clk); + +const struct rpm_clk_resource mmaxi_0_clk =3D { + .resource_type =3D QCOM_SMD_RPM_MMAXI_CLK, + .clock_id =3D 0, +}; +EXPORT_SYMBOL_GPL(mmaxi_0_clk); + +const struct rpm_clk_resource mmaxi_1_clk =3D { + .resource_type =3D QCOM_SMD_RPM_MMAXI_CLK, + .clock_id =3D 1, +}; +EXPORT_SYMBOL_GPL(mmaxi_1_clk); + +const struct rpm_clk_resource qup_clk =3D { + .resource_type =3D QCOM_SMD_RPM_QUP_CLK, + .clock_id =3D 0, +}; +EXPORT_SYMBOL_GPL(qup_clk); + +/* 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, +}; +EXPORT_SYMBOL_GPL(aggre1_branch_clk); + +const struct rpm_clk_resource aggre2_branch_clk =3D { + .resource_type =3D QCOM_SMD_RPM_AGGR_CLK, + .clock_id =3D 2, + .branch =3D true, +}; +EXPORT_SYMBOL_GPL(aggre2_branch_clk); diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index 0355e0250ccc..692d91c248d9 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -136,6 +136,19 @@ enum qos_mode { NOC_QOS_MODE_BYPASS, }; =20 +extern const struct rpm_clk_resource aggre1_clk; +extern const struct rpm_clk_resource aggre2_clk; +extern const struct rpm_clk_resource bimc_clk; +extern const struct rpm_clk_resource bus_0_clk; +extern const struct rpm_clk_resource bus_1_clk; +extern const struct rpm_clk_resource bus_2_clk; +extern const struct rpm_clk_resource mmaxi_0_clk; +extern const struct rpm_clk_resource mmaxi_1_clk; +extern const struct rpm_clk_resource qup_clk; + +extern const struct rpm_clk_resource aggre1_branch_clk; +extern const struct rpm_clk_resource aggre2_branch_clk; + int qnoc_probe(struct platform_device *pdev); int qnoc_remove(struct platform_device *pdev); =20 --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 3E828EB64DC for ; Wed, 14 Jun 2023 10:23:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234754AbjFNKXX (ORCPT ); Wed, 14 Jun 2023 06:23:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243658AbjFNKWv (ORCPT ); Wed, 14 Jun 2023 06:22:51 -0400 Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com [IPv6:2a00:1450:4864:20::233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35C831FEB for ; Wed, 14 Jun 2023 03:22:34 -0700 (PDT) Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2b1bb2fc9c6so7186831fa.0 for ; Wed, 14 Jun 2023 03:22:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738152; x=1689330152; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=M/J5ZhP262QYGYmarLd4yzENGlRt7ikJiCOlHTeoidM=; b=v2MHZSAmdCY1jxaU76t23pZlTIN3OZBsLFqngY17L2Te5kGRho8H1FPfO0rJN+FiWE nJNrL2IZmbppldKWzIAzT4x3hAXvgwA9gPr9HgUjTor1MWD7dSGpP+ppC7wFBLAKNhT4 BQBKlQHqxcHJ0n/mifs6nRWNoPhHc31l4Ci2joXzgVTm2T6Qwb7IRgGHVesfxcLt5sOc xwESNYNDO9FAxO4Jo/fSlBn/hpgGlBtRL3ChzAXIGcDUTuxIcH7QmFYmBx4kjXQ7tG8Y zC9XlpamHjYn6G9OVjeqhM9Td4fqyJ+Vq+UY5ZO1fpLPX3kLEbsaTdSL1MQlqBmLV+x7 uWvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738152; x=1689330152; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M/J5ZhP262QYGYmarLd4yzENGlRt7ikJiCOlHTeoidM=; b=BWIVVBra6GDzmY3unyFHBvRqChuqcczUaFnbdM7hZvykOCHBC6a447/hkQyYBcmuPq /Mb1pM9lXZs1iPmCtL0dDzW3lX1a6FpcR6fxXEuqb8CuagleFv6MO9pwW1IBkf5Ba2Q5 xKon9MvQ8WxjGlWM8y26O6hzIK/DaVBGmzFPeONG4VLhgJ14Oa00nvLqXxiEogcvuIqU jeuZ4ubH0e5sOG6hzXgfAJB8t/TsLckkH045D+cGTwW5ArEMI/HLEUSBkaHn9DD1lkGR vYU7+JMHVMAhIPQ4SkyouMYzKEXKSfDKjDJgrUg3sa8uUmakRwZryeEHqweOtLMFiMlt on8w== X-Gm-Message-State: AC+VfDz+gFIMFGo6RkSlz1K5jJkt4JeoPwFWQUGJ0O6IJ+3vClajO17d JT+7XV1ZagS9Zd9tNKD7Oiy64A== X-Google-Smtp-Source: ACHHUZ6F+ohHaPW12tUuIzzR84Of9eLKOH3oT26IFWPvIO6KfLP2tdAdMjOOinm8ksCe376+XsfXzA== X-Received: by 2002:a2e:9ace:0:b0:2b3:4d6c:4611 with SMTP id p14-20020a2e9ace000000b002b34d6c4611mr432171ljj.28.1686738152504; Wed, 14 Jun 2023 03:22:32 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:32 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:22 +0200 Subject: [PATCH v5 11/22] interconnect: qcom: sdm660: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-11-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=1986; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=Krc2Kcr5fnOQoU3m0Y+nr01slcqtM3Q1E0UfX4Ye6Q4=; b=gcRKAZ00Zx2FfDG+RB6VUff6nvFk6ciWAcAiVrgABBxapivdGn/I2ZkplprvoI5SUdYJ9kVlU p+2fKMn2d1oA7rOKBpW6m5m3/Vw2il+Q7+/vVtBz9XmzrMLWeDpcxr4 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/sdm660.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom= /sdm660.c index 003fc7d110a7..5743ed680e8e 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -1511,6 +1511,7 @@ static const struct qcom_icc_desc sdm660_a2noc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D sdm660_a2noc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_a2noc_nodes), + .bus_clk_desc =3D &aggre2_clk, .intf_clocks =3D a2noc_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(a2noc_intf_clocks), .regmap_cfg =3D &sdm660_a2noc_regmap_config, @@ -1539,6 +1540,7 @@ static const struct qcom_icc_desc sdm660_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D sdm660_bimc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &sdm660_bimc_regmap_config, }; =20 @@ -1593,6 +1595,7 @@ static const struct qcom_icc_desc sdm660_cnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D sdm660_cnoc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_cnoc_nodes), + .bus_clk_desc =3D &bus_2_clk, .regmap_cfg =3D &sdm660_cnoc_regmap_config, }; =20 @@ -1655,6 +1658,7 @@ static const struct qcom_icc_desc sdm660_mnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D sdm660_mnoc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_mnoc_nodes), + .bus_clk_desc =3D &mmaxi_0_clk, .intf_clocks =3D mm_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(mm_intf_clocks), .regmap_cfg =3D &sdm660_mnoc_regmap_config, @@ -1692,6 +1696,7 @@ static const struct qcom_icc_desc sdm660_snoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D sdm660_snoc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_snoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &sdm660_snoc_regmap_config, }; =20 --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 BCFE7EB64DB for ; Wed, 14 Jun 2023 10:23:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243794AbjFNKXp (ORCPT ); Wed, 14 Jun 2023 06:23:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35416 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243667AbjFNKXC (ORCPT ); Wed, 14 Jun 2023 06:23:02 -0400 Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com [IPv6:2a00:1450:4864:20::235]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 83BBA1FFB for ; Wed, 14 Jun 2023 03:22:35 -0700 (PDT) Received: by mail-lj1-x235.google.com with SMTP id 38308e7fff4ca-2b1afe57bdfso6838641fa.0 for ; Wed, 14 Jun 2023 03:22:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738154; x=1689330154; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=sfWaXpFcH3gkTKoNeoEghs9YVVozZ9w4ELuAa+IL8Vs=; b=WX0YIArbA+d8cpHlR88BAXEPFalWZYD1m+Qp0La8ZA3oVpZZXwiJSCQQm2LeQmrRTh vImgK181LNw5BJWjeMBYS3ZyFcgQVgejUO9L770bPYqbeJBbThW7S64mbuAvz2CVNwP5 sfyvyR4l5aUObbDwR9PyML+NO6fog2TCMxe3Yo0zvO20Oj1H4O5exVg9Pog3VRpv9D8t z3Fs0bfA0BdB/mqRGUrj+2KR51NfvmK2uZaJd3P+CnQbgSL25hL0+Xz9PZYE+ooI+1qh 9YPWXiToXselmLcRigKF3hrr6cuZTkmrvuGPBRSjwZAnUv2Tu8owFKeAHFXEqqAJ1Jif ZGbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738154; x=1689330154; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sfWaXpFcH3gkTKoNeoEghs9YVVozZ9w4ELuAa+IL8Vs=; b=lEfF4Uj6iJWU0/2/mhPWYm0EjrE6KAsgu9tZebpYSXExRf6BL2OUwd2D31RMZG9nBY LyeBTU9QFq/hrxLQpnwxwV+lHFbr7U89UYiogD1KWjOT0ZjAvxDLllA2ibL+3RPPJoNP haXlkizos9UVx38L1IlzGc0CLrbPJYWnr4Id7d6ovy3Mo0U5KjLQ1jovht1MWP8OlONj kZ9myvl0bNhyP5G0lI4ezFa+i1xbWbPAHFt2w8mun/gvxcrxx+hy8yyWPoo6bt39qeTt ZTYmjBgmCmXN7rRsuEtcfess3df2aqBH0lD1yPExaHpIECAqcVkmytFlQJDjURl8wBjN r5ew== X-Gm-Message-State: AC+VfDxV6tRtSqVkhiow2TppF6PXZIz9E8ycwvaMomKVyRSocINf4MP1 0MnBJMLERG+zJPYo+JR9MvCZAw== X-Google-Smtp-Source: ACHHUZ78hUEHITyXgqGwvNlHUqN36cIC+/knD+KP5dTMZNRJBjVZzaW17fcLvzQSZOcUBZ0pbcIdTA== X-Received: by 2002:a2e:9012:0:b0:2a7:8150:82c1 with SMTP id h18-20020a2e9012000000b002a7815082c1mr6376610ljg.38.1686738153787; Wed, 14 Jun 2023 03:22:33 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:33 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:23 +0200 Subject: [PATCH v5 12/22] interconnect: qcom: msm8996: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-12-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=2380; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=jls2pE5wAdO3X2AaNe/A0wroCOxxq+TCympGtPIPMpo=; b=fSdqvZiOy5ixH448JoCfdWi9iAt1IbIuyVVO1AKX13yGNhYBq3T3SFlHDv0oFVHynwJzqhY9u r3ScPfaC5kICEhklW5p5gjXqQxpSFc3WGzLzIdmbJe12k6cm11VD+eB X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/msm8996.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/interconnect/qcom/msm8996.c b/drivers/interconnect/qco= m/msm8996.c index 1f7e88a37acd..a596f4035d2e 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -1840,6 +1840,7 @@ static const struct qcom_icc_desc msm8996_a1noc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D a1noc_nodes, .num_nodes =3D ARRAY_SIZE(a1noc_nodes), + .bus_clk_desc =3D &aggre1_branch_clk, .regmap_cfg =3D &msm8996_a1noc_regmap_config }; =20 @@ -1861,6 +1862,7 @@ static const struct qcom_icc_desc msm8996_a2noc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D a2noc_nodes, .num_nodes =3D ARRAY_SIZE(a2noc_nodes), + .bus_clk_desc =3D &aggre2_branch_clk, .intf_clocks =3D a2noc_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(a2noc_intf_clocks), .regmap_cfg =3D &msm8996_a2noc_regmap_config @@ -1889,6 +1891,7 @@ static const struct qcom_icc_desc msm8996_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D bimc_nodes, .num_nodes =3D ARRAY_SIZE(bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &msm8996_bimc_regmap_config }; =20 @@ -1947,6 +1950,7 @@ static const struct qcom_icc_desc msm8996_cnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D cnoc_nodes, .num_nodes =3D ARRAY_SIZE(cnoc_nodes), + .bus_clk_desc =3D &bus_2_clk, .regmap_cfg =3D &msm8996_cnoc_regmap_config }; =20 @@ -2000,6 +2004,7 @@ static const struct qcom_icc_desc msm8996_mnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D mnoc_nodes, .num_nodes =3D ARRAY_SIZE(mnoc_nodes), + .bus_clk_desc =3D &mmaxi_0_clk, .intf_clocks =3D mm_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(mm_intf_clocks), .regmap_cfg =3D &msm8996_mnoc_regmap_config @@ -2038,6 +2043,7 @@ static const struct qcom_icc_desc msm8996_pnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D pnoc_nodes, .num_nodes =3D ARRAY_SIZE(pnoc_nodes), + .bus_clk_desc =3D &bus_0_clk, .regmap_cfg =3D &msm8996_pnoc_regmap_config }; =20 @@ -2082,6 +2088,7 @@ static const struct qcom_icc_desc msm8996_snoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D snoc_nodes, .num_nodes =3D ARRAY_SIZE(snoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &msm8996_snoc_regmap_config }; =20 --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 234F3EB64DD for ; Wed, 14 Jun 2023 10:23:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243720AbjFNKX1 (ORCPT ); Wed, 14 Jun 2023 06:23:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35424 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243696AbjFNKXD (ORCPT ); Wed, 14 Jun 2023 06:23:03 -0400 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 234C02100 for ; Wed, 14 Jun 2023 03:22:37 -0700 (PDT) Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-2b34ac4b6e8so4416981fa.3 for ; Wed, 14 Jun 2023 03:22:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738155; x=1689330155; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oxwAlvsxTG2NJKirdi7L920nJWliszLcfh8qb5HaEiU=; b=BIZHwdmylq8XnS0ujWwkuaE3rkZeTQZjpBUZbMlf0K6Bp+CRopR0T+LF+zzXMEMJMW Sn/wLTfL7CBdygpbTeKZOs1TFl1aZrSYcM/7/6/vQuG8+RihZJ96+3T96fWUZqCqidJa /gxZBEevNZkSxR3CRp/ZI7+YnpeMSrzSBKdxN1fNi0dPMjzz4sM2IKVjj/iokBStgWCq IR46VXKUZXAA7hoBr1outcbux9TswM0E8qmXlIspdHYBxhy194AmY3oCWIS7cRpswNS0 nLtNC3MROiOKxvUSUIthrVwLNW2aPawDRGMHmmqe8EOur14+ZHQrsU/6vl6jM7yHJGRE rpZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738155; x=1689330155; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oxwAlvsxTG2NJKirdi7L920nJWliszLcfh8qb5HaEiU=; b=UT2uA48bbMrHzFMrQOS+chmJxvxfurSpFgOz9x05sNyhK1Z1uPqVvBwGvEGdAq8nZ8 wXPSViDFwi08b/FVag7qtep5RqMSSvA7zWk5VFGWavSRDSXqb46ytU8tYopE4syu7QC8 KaE8t6fBETNo4H0k2XtFshVT47h6wO0c79i7R3qrAsw+DS1VCU7POS21ATa6Lotzz3WY u8WWONQyAlVUIIV0LKqyBxJ7owa9uEQVcmfLbr1dzUk/DrLEyqzIEoC5hc9kbxr7PmeT le2Teb4SYiP26fVlMpl5WGqr/WSwGMsRka4Py0S6oRGzbKhttibLJg+556Q4OqmhT6f6 1HqA== X-Gm-Message-State: AC+VfDyoT/XaI4AvgCrhme2SYHpfNeLtIrvkzaukeCP6ySEvZY5RyDDg ReBiw45m+NMp30EG5GJHEdOtSg== X-Google-Smtp-Source: ACHHUZ6iFWM9dqTN6nxWdCXjS6+t+lLhqlb4Y97wXbFYcWkZCSdIKKZ6OGvTs840I9ubTKsY8c5+hg== X-Received: by 2002:a2e:804b:0:b0:2af:1622:a69 with SMTP id p11-20020a2e804b000000b002af16220a69mr7029583ljg.48.1686738155343; Wed, 14 Jun 2023 03:22:35 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:35 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:24 +0200 Subject: [PATCH v5 13/22] interconnect: qcom: qcs404: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-13-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=1291; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=NibH4RmX92w9jFbYbYmeVzyLtbX9fV3dfXE9S9JnGAI=; b=P0snEP2xSmr4E11bZbkcZ7eGLOZz6cp9bVMOzN6StclFv1qJAd3ahBkL2m2StBp5YDYHbY3yp hQZFjamP31uDtkizxszA7dhetnPqBnKFyEwYYvV4vH+pcb+xeZdrXaF X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/qcs404.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/interconnect/qcom/qcs404.c b/drivers/interconnect/qcom= /qcs404.c index 938283ddd0e3..9deb4d81104e 100644 --- a/drivers/interconnect/qcom/qcs404.c +++ b/drivers/interconnect/qcom/qcs404.c @@ -984,6 +984,7 @@ static struct qcom_icc_node * const qcs404_bimc_nodes[]= =3D { }; =20 static const struct qcom_icc_desc qcs404_bimc =3D { + .bus_clk_desc =3D &bimc_clk, .nodes =3D qcs404_bimc_nodes, .num_nodes =3D ARRAY_SIZE(qcs404_bimc_nodes), }; @@ -1038,6 +1039,7 @@ static struct qcom_icc_node * const qcs404_pcnoc_node= s[] =3D { }; =20 static const struct qcom_icc_desc qcs404_pcnoc =3D { + .bus_clk_desc =3D &bus_0_clk, .nodes =3D qcs404_pcnoc_nodes, .num_nodes =3D ARRAY_SIZE(qcs404_pcnoc_nodes), }; @@ -1066,6 +1068,7 @@ static struct qcom_icc_node * const qcs404_snoc_nodes= [] =3D { }; =20 static const struct qcom_icc_desc qcs404_snoc =3D { + .bus_clk_desc =3D &bus_1_clk, .nodes =3D qcs404_snoc_nodes, .num_nodes =3D ARRAY_SIZE(qcs404_snoc_nodes), }; --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 21A15EB64D9 for ; Wed, 14 Jun 2023 10:23:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243782AbjFNKXl (ORCPT ); Wed, 14 Jun 2023 06:23:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35928 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243699AbjFNKXD (ORCPT ); Wed, 14 Jun 2023 06:23:03 -0400 Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 642172116 for ; Wed, 14 Jun 2023 03:22:38 -0700 (PDT) Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2b3451b3ea9so7023971fa.1 for ; Wed, 14 Jun 2023 03:22:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738156; x=1689330156; 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=eHA+43B3syu0x2pUChrYAxljP6/us7hNfim2x8e+Qms=; b=LhF9JfwYoasG2xSpkjZWfq4/yC/z1fPR0v+MNL+WLcA5scjxpd6i9uL6Smyz62+dYi xWQhPv7aVT3EgSVVw+S6omNcilDAF9tWGAwq1TiGIB/e+K10N5Hm5XDfZciT7KgMhqL9 eQzucKUU55kvzwtpdvTXM/I2chpIbzJ5uXrZ9MVLbaGZyyic2mCPjCyhfWyFtHZYSkOQ JKmHiejHpEL84LcYDu/jU++wI0roYr885B31tPgg5rpE7OuCBSp4Sq1wXFrL0Gmf4LC0 jAHJ90SmXscX71zKBHm5I0dD8/H13R0TpbCaeZR+TI2OEsA63GkHhZ218g8e5QAaeFga eRgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738156; x=1689330156; 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=eHA+43B3syu0x2pUChrYAxljP6/us7hNfim2x8e+Qms=; b=YZY/7pGYFQPR80G7ms3grJmdPNnUIxlNGe1ksOI/13bnmCyax5AxtdRTbGuPtBMBIg EmIxIs7dIGWxQlidRVs5tpd/hb4ruS0WTTL+BuGeQ5i3R43y5nmjAxruGKoqxTfR1vFN SKTMuApExAnbZsWmeWwBQxcVCuvPB83xyBQ42MH99NQd1G94uoWZtqeD2I9B1aDqJHbP MUnLMe0qySsl+pafRQmZF/Vsprkw38/v8Q2M0IWJLKAvkoJaMn4/K9ew95p/pgJFTOsc tVZ8Yu2l0g+veslVSE/qDfxegiCYTJQ8XN1ItB6axYdTAVqBjBn1Q+mftmohaah/hQFf qNVg== X-Gm-Message-State: AC+VfDxxpnLOMUX7MaZJS+53YodaY+ELKxqL3Y5MzXm+ACyqlcXshPxq YLdAUSugdmtiUBWZjF214kDgfQ== X-Google-Smtp-Source: ACHHUZ4UNF7FLI/hVvUOxY9syYRQZiuHDhmcM0HLrXRhUggNujzLBWljC3fEus0PzZmMZSMygZOJ2A== X-Received: by 2002:a2e:9f14:0:b0:2af:1dce:8efd with SMTP id u20-20020a2e9f14000000b002af1dce8efdmr5695334ljk.36.1686738156731; Wed, 14 Jun 2023 03:22:36 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:36 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:25 +0200 Subject: [PATCH v5 14/22] interconnect: qcom: msm8939: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-14-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov , Stephan Gerhold X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=1734; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=1B8WtVx3wEojfY5dydOVxe8YjeFJXTMa40iYBVHPUpQ=; b=Met0Kae1s5RLP9+M9BfdGznvXHnPuLG08YkXG0Spv2rJprr0RE4/aaZsY2S14jHlE/lf4fMAD jGJaigdRu9ZAw9NEoA44TFDdVLKPWkQ2XsDg71T5heSzDFtRiKbKHNV X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Reviewed-by: Stephan Gerhold Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/msm8939.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/interconnect/qcom/msm8939.c b/drivers/interconnect/qco= m/msm8939.c index 639566dce45a..94b11b590a8e 100644 --- a/drivers/interconnect/qcom/msm8939.c +++ b/drivers/interconnect/qcom/msm8939.c @@ -1284,6 +1284,7 @@ static const struct qcom_icc_desc msm8939_snoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D msm8939_snoc_nodes, .num_nodes =3D ARRAY_SIZE(msm8939_snoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &msm8939_snoc_regmap_config, .qos_offset =3D 0x7000, }; @@ -1304,6 +1305,7 @@ static const struct qcom_icc_desc msm8939_snoc_mm =3D= { .type =3D QCOM_ICC_NOC, .nodes =3D msm8939_snoc_mm_nodes, .num_nodes =3D ARRAY_SIZE(msm8939_snoc_mm_nodes), + .bus_clk_desc =3D &bus_2_clk, .regmap_cfg =3D &msm8939_snoc_regmap_config, .qos_offset =3D 0x7000, }; @@ -1332,6 +1334,7 @@ static const struct qcom_icc_desc msm8939_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D msm8939_bimc_nodes, .num_nodes =3D ARRAY_SIZE(msm8939_bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &msm8939_bimc_regmap_config, .qos_offset =3D 0x8000, }; @@ -1403,6 +1406,7 @@ static const struct qcom_icc_desc msm8939_pcnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D msm8939_pcnoc_nodes, .num_nodes =3D ARRAY_SIZE(msm8939_pcnoc_nodes), + .bus_clk_desc =3D &bus_0_clk, .regmap_cfg =3D &msm8939_pcnoc_regmap_config, .qos_offset =3D 0x7000, }; --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 CB837EB64DC for ; Wed, 14 Jun 2023 10:23:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235519AbjFNKXb (ORCPT ); Wed, 14 Jun 2023 06:23:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36018 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243751AbjFNKXI (ORCPT ); Wed, 14 Jun 2023 06:23:08 -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 7974B212D for ; Wed, 14 Jun 2023 03:22:40 -0700 (PDT) Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-4f62b512fe2so8630581e87.1 for ; Wed, 14 Jun 2023 03:22:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738158; x=1689330158; 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=+nc1+n/UQ2y64CZL44OODa51PjPBdbRWsiaTLI2r2o0=; b=mGUlAn/Z/odCMsTym3SxbUKJJRASL1s8APZM18fS/S5Eg7mNJdJDE7CGTn5OZ0AwoZ +tzAg3wvgvc4QNXkP1i8hO7/L1iQR+91hyesgqs2+U7/J5CmWiuYh98WH5b5U5BSkTen iMCfgvi6K1knyuxfiBHRxW9d5UqE2uP2dlLorJZV1am8NjK159VAIgud5IQsdxj43kWX +BMDQGKuYmQGppxgB4BqiqYSc4lfPwWokm13CcEJzwzDVFl3AjGWJMETGYTrnkC9OgVr em5jdDsRnD0SgByR+qcYuBUhJExlU1UcJYe2mJus8FJtfGVj6PXgtiEtB+c3qq0V4Ad1 C7og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738158; x=1689330158; 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=+nc1+n/UQ2y64CZL44OODa51PjPBdbRWsiaTLI2r2o0=; b=LeL7JA4fzl1zd030lIoDFzTnNvVqkNDH2w0p79SnHWzGyldKpN+Z0o/mCIAk4xS8Lu hXrlZ/GY6rPCvgPKoqxKZKHdt6+N2HLRRgQooNPHkg3CyuDQBIqO67zRsmKzGTP7lgNa Bhf8Uz27jjNNUmL/w8GjidtCadL3hcRTcQ1QkiTK+SjoZOrxTgKEAudGGVE/cok1FR+B xgxSMHaSgg2T7lkHpkrWksmBUI1RQIluvwjaXtgkr3tLvb092UB1y1SxGwPfyWyNb/mx uTygXHGdhjuboVNhHY9GMv/UmWm1sw8ZP8PyE0nRJnt6dbVkV7T1Dp84InZq7OraretE K2DA== X-Gm-Message-State: AC+VfDwVksQa9UfblLzqOZFj8Qh4T5EdISf/EnIDoa9964UYvkuZDJU+ lSzGFvanyO+IPJJd6vpA0XfZJw== X-Google-Smtp-Source: ACHHUZ5kZqkQu5vYqdIr/8JI/Hp6M0ATsxUZouHMEb8AHaJHp5MIu/fl3x8ryrkznWTIDv2mJAQ5pQ== X-Received: by 2002:a2e:9059:0:b0:2ac:7137:5f13 with SMTP id n25-20020a2e9059000000b002ac71375f13mr7099916ljg.9.1686738158069; Wed, 14 Jun 2023 03:22:38 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:37 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:26 +0200 Subject: [PATCH v5 15/22] interconnect: qcom: msm8916: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-15-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov , Stephan Gerhold X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=1438; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=U/V7/Y31OoJlewUp8cNNSi57yg1wtDegefv7cGiM7Cw=; b=tJmdTuo+ol9pDJEEfEDZvwAWaekcUATIiBCULUgvm5UYVj4XNbIhT1b/4LT/D/8VvAUWaXopT ZuYnMrLyhkYD+s42SjU+qoSFlMaqLe4z+bgNFQIgdQ+Q4f8fpgrvXZ2 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Reviewed-by: Stephan Gerhold Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/msm8916.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/interconnect/qcom/msm8916.c b/drivers/interconnect/qco= m/msm8916.c index 196b05879896..be2a190a8b52 100644 --- a/drivers/interconnect/qcom/msm8916.c +++ b/drivers/interconnect/qcom/msm8916.c @@ -1231,6 +1231,7 @@ static const struct qcom_icc_desc msm8916_snoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D msm8916_snoc_nodes, .num_nodes =3D ARRAY_SIZE(msm8916_snoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &msm8916_snoc_regmap_config, .qos_offset =3D 0x7000, }; @@ -1259,6 +1260,7 @@ static const struct qcom_icc_desc msm8916_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D msm8916_bimc_nodes, .num_nodes =3D ARRAY_SIZE(msm8916_bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &msm8916_bimc_regmap_config, .qos_offset =3D 0x8000, }; @@ -1328,6 +1330,7 @@ static const struct qcom_icc_desc msm8916_pcnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D msm8916_pcnoc_nodes, .num_nodes =3D ARRAY_SIZE(msm8916_pcnoc_nodes), + .bus_clk_desc =3D &bus_0_clk, .regmap_cfg =3D &msm8916_pcnoc_regmap_config, .qos_offset =3D 0x7000, }; --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 7B758EB64D9 for ; Wed, 14 Jun 2023 10:23:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243705AbjFNKXg (ORCPT ); Wed, 14 Jun 2023 06:23:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36022 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243762AbjFNKXI (ORCPT ); Wed, 14 Jun 2023 06:23: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 2D99F213B for ; Wed, 14 Jun 2023 03:22:41 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4f65779894eso6754278e87.1 for ; Wed, 14 Jun 2023 03:22:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738159; x=1689330159; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=o0XnmH13ivRPPHGJLER9uxu6PJxvQI4F3jOrAVZw55g=; b=jNLaLgSHpUVk4UKrZ3RROTmeGVrEjPGwdjUTZJ/0nyK6ew+QbEBNCpVoxR3diUj94x phm8bvRUqIEq9uTgFo8GTkHNVhZiwis5wepWxmOzz0caANuA8M0W5nL5IR7ZtdSHaw2/ sR8+2eEyG8I4qrlMF50gZKcS0/+cX5EEDupZ2Ow0QO2e8kXkWHjJjf/Ut49boSi56zlQ 2RkgEWizLaGmWOqvNUTCVczr6UaFaj5+98p+3iSWJRX0P8ZWi1/Vim8w25V/9hScIS+O c0qO1CtJhgbyQCZcvHtEUPIOVaLBLfQPkOjAOE6nHNShiSU+FpReV47Rw20JpSEHx39r tthg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738159; x=1689330159; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o0XnmH13ivRPPHGJLER9uxu6PJxvQI4F3jOrAVZw55g=; b=OEWGnfU2/n/cZIQpW7cnpFWhK0J9r0LJtkwDVW0lPziMiBUohNCa/9GxVXhwHXyRYu 7YdCRSMJy8zF5QPrj44VpqxBsjO/iOBucsaQf2QnJj1AkAPvrAo6rZKXC0h50KWdB00a wkizrK6P+qzAyVZaYUgWIUNVPC5ghyfDTnlN+dxtxf0FeWphLy55Pd4J3NajZX2W4STn 8OGxWMDThTv59i+5wSBAASpH3AZ6Tpz+vBCuIDhd4mVKQFOODD2qr15DD58+s4SnI7Cg i7ir0vuU5eWdgkMwDJueXOut1pN60FL18s2FKCmkX4kg1PQsU2Pq+Of+wDGlGdLNJkjD 3Fgw== X-Gm-Message-State: AC+VfDxZUpdeN+h5F8WZKdAj5dgOC8l9UyfcP5JKX/NgVkUWIv6YQhGQ CSmyxxtO/qbffHsix5YRTsRYeQ== X-Google-Smtp-Source: ACHHUZ7/CqMFoax4VsFe82w+i8GM8wPwtWU6UCa/oH6soUJLCz0GhpwVSxbznkXKnRejGEe5eBzFxg== X-Received: by 2002:a2e:86cf:0:b0:2a7:7493:9966 with SMTP id n15-20020a2e86cf000000b002a774939966mr462797ljj.24.1686738159367; Wed, 14 Jun 2023 03:22:39 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:39 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:27 +0200 Subject: [PATCH v5 16/22] interconnect: qcom: qcm2290: Hook up RPM bus clk definitions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-16-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=2388; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=tSBMAPt7cmsb0YEEInMBYypPFAnegUdevAoSi5GlaYA=; b=SwcRCSEnaNv7QtER98oC657KRXRuGLUTAQsGaxHB0OE0zt3OKvqVcF46AuqKWSDZoFPE+2vCW io5OoT5hcwhDyn+VgHAGBTHKuO1S30+ieYhPElT8J2wwytxL+5i2tbS X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Assign the necessary definitions to migrate to the new bus clock handling mechanism. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/qcm2290.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/interconnect/qcom/qcm2290.c b/drivers/interconnect/qco= m/qcm2290.c index cb636e67a5a4..2c7a76fab83c 100644 --- a/drivers/interconnect/qcom/qcm2290.c +++ b/drivers/interconnect/qcom/qcm2290.c @@ -1196,6 +1196,7 @@ static const struct qcom_icc_desc qcm2290_bimc =3D { .type =3D QCOM_ICC_BIMC, .nodes =3D qcm2290_bimc_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_bimc_nodes), + .bus_clk_desc =3D &bimc_clk, .regmap_cfg =3D &qcm2290_bimc_regmap_config, /* M_REG_BASE() in vendor msm_bus_bimc_adhoc driver */ .qos_offset =3D 0x8000, @@ -1251,6 +1252,7 @@ static const struct qcom_icc_desc qcm2290_cnoc =3D { .type =3D QCOM_ICC_NOC, .nodes =3D qcm2290_cnoc_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_cnoc_nodes), + .bus_clk_desc =3D &bus_1_clk, .regmap_cfg =3D &qcm2290_cnoc_regmap_config, }; =20 @@ -1292,6 +1294,7 @@ static const struct qcom_icc_desc qcm2290_snoc =3D { .type =3D QCOM_ICC_QNOC, .nodes =3D qcm2290_snoc_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_snoc_nodes), + .bus_clk_desc =3D &bus_2_clk, .regmap_cfg =3D &qcm2290_snoc_regmap_config, /* Vendor DT node fab-sys_noc property 'qcom,base-offset' */ .qos_offset =3D 0x15000, @@ -1306,6 +1309,7 @@ static const struct qcom_icc_desc qcm2290_qup_virt = =3D { .type =3D QCOM_ICC_QNOC, .nodes =3D qcm2290_qup_virt_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_qup_virt_nodes), + .bus_clk_desc =3D &qup_clk, }; =20 static struct qcom_icc_node * const qcm2290_mmnrt_virt_nodes[] =3D { @@ -1319,6 +1323,7 @@ static const struct qcom_icc_desc qcm2290_mmnrt_virt = =3D { .type =3D QCOM_ICC_QNOC, .nodes =3D qcm2290_mmnrt_virt_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_mmnrt_virt_nodes), + .bus_clk_desc =3D &mmaxi_0_clk, .regmap_cfg =3D &qcm2290_snoc_regmap_config, .qos_offset =3D 0x15000, }; @@ -1333,6 +1338,7 @@ static const struct qcom_icc_desc qcm2290_mmrt_virt = =3D { .type =3D QCOM_ICC_QNOC, .nodes =3D qcm2290_mmrt_virt_nodes, .num_nodes =3D ARRAY_SIZE(qcm2290_mmrt_virt_nodes), + .bus_clk_desc =3D &mmaxi_1_clk, .regmap_cfg =3D &qcm2290_snoc_regmap_config, .qos_offset =3D 0x15000, }; --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 82E2EC0015E for ; Wed, 14 Jun 2023 10:24:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243943AbjFNKX7 (ORCPT ); Wed, 14 Jun 2023 06:23:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243808AbjFNKXK (ORCPT ); Wed, 14 Jun 2023 06:23:10 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A1BAB1FC8 for ; Wed, 14 Jun 2023 03:22:44 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2b344476595so6676891fa.2 for ; Wed, 14 Jun 2023 03:22:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738162; x=1689330162; 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=RlqYpjuSg3Kq2NwTKyv6stGdQ/pys1z7oXzpwBh52Xg=; b=IlAJceLx5pmPfOXHMNzQD2QQc0QAtAq8C8nqv8qD6OCQ+Mir6B4k1NCBG+a09cV2zJ 3ndFLyjFvP506NnaDT5DvkwdUkdScVaZgug9NcZ4Kw8j8ftOE2mqr+f+wmESavODSqjc SfpMfIbv/bNGQ995whI4/KimW56ZvBQ7TDwsC8QZElGXG2ifrf9awqXQEKO4uvm3RAtU xAEg4FgQA/F8JjF7mYRVrYEZpW57CCI0YFZIOACPvJpEoD+9sstQgTcX2AszvBLTefkr mDaUmI89k5rueM2y1It0X9NPZu4aUOZK2QaYu95FoC4NJvPKlcOLCVRcaImLPbocYHgi AzXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738162; x=1689330162; 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=RlqYpjuSg3Kq2NwTKyv6stGdQ/pys1z7oXzpwBh52Xg=; b=l/9l2/Q7cYiGX8xp5BKsTbqkBaPBXDpqIL71TN8kqU5k6svO7U0Iqvi2bq9BjSkpGb fjUzayCE1ikp2ZLyuO0c6mUr0yWV1DPJVb/IPnotY3+LfOL8dzhVq8BgSYw2IK04zB2H dkg2aA3win3FerxFS7tRUAvBzHFvhaweVJNzd1obO9ObXmwoJlIrmByZNUQGoZdmLsnO IXCqLgJaMqIYpnpZLvE+IxSLgTbXkWNZaNiJv2nLvdFVsvYMNLNgTWmRFX2OlMF1SdDW ArRrC31DgIUOXubNode26oz4niPnGJ67hN14Jsewhl39Gu77jcKVMFKTKUoxCfdEGNkQ EmMQ== X-Gm-Message-State: AC+VfDx/edQpdnn9rHFKyS3krcB3SGLr3VJ2cvCvT9yGfjGC/8JIY7QX fL5+VhJHcSokhlE8vede09qxyw== X-Google-Smtp-Source: ACHHUZ6Ijvy3R2Rb3Ggedk7FY68bdWTxRyX3+uwjmOvAIFldwR8Z4aTVyptcFmB0vo/3TBkWoeBZIQ== X-Received: by 2002:a2e:9c8d:0:b0:2a8:e480:a3c8 with SMTP id x13-20020a2e9c8d000000b002a8e480a3c8mr6070272lji.44.1686738160853; Wed, 14 Jun 2023 03:22:40 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:40 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:28 +0200 Subject: [PATCH v5 17/22] interconnect: qcom: icc-rpm: Control bus rpmcc from icc MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-17-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=10442; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=lKeOSeafhV3w7jjktoClyQf0ndU61YZBX70/SMVHcs4=; b=x1UX2rXAXWsI1DTMsCuZhBb7xOoPZP7VcUL6CL9y1kbGT7cq1fYRsTUkBHaOSXsdBz7ZHo6Xu qhU6+eYbvhLBUc23JiWb0W80d/GOob49/HwvvtgSQQprgrPhg/ltsUG 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 or wrongly using the qcom,icc.h binding, but that's a mistake in and of itself). Signed-off-by: Konrad Dybcio Reviewed-by: Stephan Gerhold --- drivers/interconnect/qcom/icc-rpm.c | 121 ++++++++++++++++++++------------= ---- drivers/interconnect/qcom/icc-rpm.h | 13 ++-- drivers/interconnect/qcom/msm8996.c | 1 - drivers/interconnect/qcom/sdm660.c | 1 - 4 files changed, 73 insertions(+), 63 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index b8ecf9538ab9..858880a97d2a 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,61 @@ static int qcom_icc_set(struct icc_node *src, struct = icc_node *dst) return ret; } =20 - for (i =3D 0; i < qp->num_bus_clks; i++) { - /* - * Use WAKE bucket for active clock, otherwise, use SLEEP bucket - * for other clocks. If a platform doesn't set interconnect - * path tags, by default use sleep bucket for all clocks. - * - * Note, AMC bucket is not supported yet. - */ - if (!strcmp(qp->bus_clks[i].id, "bus_a")) - bucket =3D QCOM_ICC_BUCKET_WAKE; - else - bucket =3D QCOM_ICC_BUCKET_SLEEP; - - rate =3D icc_units_to_bps(max(agg_avg[bucket], agg_peak[bucket])); - do_div(rate, src_qn->buswidth); - rate =3D min_t(u64, rate, LONG_MAX); - - /* - * Downstream checks whether the requested rate is zero, but it makes li= ttle sense - * to vote for a value that's below the lower threshold, so let's not do= so. - */ - if (bucket =3D=3D QCOM_ICC_BUCKET_WAKE && qp->keep_alive) - rate =3D max(ICC_BUS_CLK_MIN_RATE, rate); - - if (qp->bus_clk_rate[i] =3D=3D rate) - continue; - - ret =3D clk_set_rate(qp->bus_clks[i].clk, rate); - if (ret) { - pr_err("%s clk_set_rate error: %d\n", - qp->bus_clks[i].id, ret); + /* Some providers don't have a bus clock to scale */ + if (!qp->bus_clk_desc && !qp->bus_clk) + return 0; + + /* Intentionally keep the rates in kHz as that's what RPM accepts */ + active_rate =3D max(agg_avg[QCOM_SMD_RPM_ACTIVE_STATE], + agg_peak[QCOM_SMD_RPM_ACTIVE_STATE]); + do_div(active_rate, src_qn->buswidth); + + sleep_rate =3D max(agg_avg[QCOM_SMD_RPM_SLEEP_STATE], + agg_peak[QCOM_SMD_RPM_SLEEP_STATE]); + do_div(sleep_rate, src_qn->buswidth); + + /* + * Downstream checks whether the requested rate is zero, but it makes lit= tle sense + * to vote for a value that's below the lower threshold, so let's not do = so. + */ + if (qp->keep_alive) + active_rate =3D max(ICC_BUS_CLK_MIN_RATE, active_rate); + + /* Some providers have a non-RPM-owned bus clock - convert kHz->Hz for th= e CCF */ + if (qp->bus_clk) { + active_rate =3D max_t(u64, active_rate, sleep_rate); + /* ARM32 caps clk_set_rate arg to u32.. Nothing we can do about that! */ + active_rate =3D min_t(u64, 1000ULL * active_rate, ULONG_MAX); + return clk_set_rate(qp->bus_clk, active_rate); + } + + /* RPM only accepts <=3DINT_MAX rates */ + active_rate =3D min_t(u64, active_rate, INT_MAX); + sleep_rate =3D min_t(u64, sleep_rate, INT_MAX); + + if (active_rate !=3D qp->bus_clk_rate[QCOM_SMD_RPM_ACTIVE_STATE]) { + ret =3D qcom_icc_rpm_set_bus_rate(qp->bus_clk_desc, QCOM_SMD_RPM_ACTIVE_= STATE, + active_rate); + if (ret) return ret; - } - qp->bus_clk_rate[i] =3D rate; + + /* Cache the rate after we've successfully commited it to RPM */ + qp->bus_clk_rate[QCOM_SMD_RPM_ACTIVE_STATE] =3D active_rate; + } + + if (sleep_rate !=3D qp->bus_clk_rate[QCOM_SMD_RPM_SLEEP_STATE]) { + ret =3D qcom_icc_rpm_set_bus_rate(qp->bus_clk_desc, QCOM_SMD_RPM_SLEEP_S= TATE, + sleep_rate); + if (ret) + return ret; + + /* Cache the rate after we've successfully commited it to RPM */ + qp->bus_clk_rate[QCOM_SMD_RPM_SLEEP_STATE] =3D sleep_rate; } =20 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 +459,20 @@ 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 { + /* Some older SoCs may have a single non-RPM-owned bus clock. */ + qp->bus_clk =3D devm_clk_get_optional(dev, "bus"); + if (IS_ERR(qp->bus_clk)) + return PTR_ERR(qp->bus_clk); + } + data =3D devm_kzalloc(dev, struct_size(data, nodes, num_nodes), GFP_KERNEL); if (!data) @@ -457,10 +482,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,11 +511,7 @@ 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); + ret =3D clk_prepare_enable(qp->bus_clk); if (ret) return ret; =20 @@ -566,7 +583,7 @@ 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); + clk_disable_unprepare(qp->bus_clk); =20 return ret; } @@ -578,7 +595,7 @@ 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); + 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 692d91c248d9..d5da24495d14 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 * @qos_offset: offset to QoS registers * @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 + * @bus_clk: a pointer to a HLOS-owned bus clock * @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 { struct icc_provider provider; - int num_bus_clks; int num_intf_clks; enum qcom_icc_type type; struct regmap *regmap; unsigned 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; unsigned int qos_offset; diff --git a/drivers/interconnect/qcom/msm8996.c b/drivers/interconnect/qco= m/msm8996.c index a596f4035d2e..8081b3cb1025 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -1818,7 +1818,6 @@ static const struct qcom_icc_desc msm8996_a0noc =3D { .num_nodes =3D ARRAY_SIZE(a0noc_nodes), .intf_clocks =3D a0noc_intf_clocks, .num_intf_clocks =3D ARRAY_SIZE(a0noc_intf_clocks), - .no_clk_scaling =3D true, .regmap_cfg =3D &msm8996_a0noc_regmap_config }; =20 diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom= /sdm660.c index 5743ed680e8e..211fa1fa569c 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -1618,7 +1618,6 @@ static const struct qcom_icc_desc sdm660_gnoc =3D { .nodes =3D sdm660_gnoc_nodes, .num_nodes =3D ARRAY_SIZE(sdm660_gnoc_nodes), .regmap_cfg =3D &sdm660_gnoc_regmap_config, - .no_clk_scaling =3D true, }; =20 static struct qcom_icc_node * const sdm660_mnoc_nodes[] =3D { --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 02791C001E0 for ; Wed, 14 Jun 2023 10:24:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243984AbjFNKYC (ORCPT ); Wed, 14 Jun 2023 06:24:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36120 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243836AbjFNKXN (ORCPT ); Wed, 14 Jun 2023 06:23:13 -0400 Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D951A2695 for ; Wed, 14 Jun 2023 03:22:45 -0700 (PDT) Received: by mail-lj1-x22e.google.com with SMTP id 38308e7fff4ca-2b1a3fa2cd2so6684971fa.1 for ; Wed, 14 Jun 2023 03:22:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738164; x=1689330164; 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=8l+aJ1RcBwCjplYy8WbpWHdZstkv1JFGo7yCxqsN7kQ=; b=TisYRQt5tJ3F3hTWJpOBqc0YNVrkF/WEoCtHSim3tqLI2793bZbSfAlCrb0IDJ45Tu 7wjHFa/3rjc7eM0lbNGBNQ9o9g+YrJRnJyKKpnTEli8NBHdjyb0pHPFx6jeYEcGr7rM/ qYmFPLpm5eybDsm0UNr9RKsKZPF3tZsnEE3Fie9y6bTWaASgj6cj5o6N4HeSRWfzqePu q6lNztaR/VLXkZESbYzZDKO9+Jjau/XLvGD9tObaK3uFwpINVwiD7I0Bxl4q6SrTFODR LJaMd3RV1/0BYs1Oo0eTpLYWaanoG2TmuECUq6Y0joJ/PykhiLrDTtqGIEoK3J0WxNo+ oVGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738164; x=1689330164; 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=8l+aJ1RcBwCjplYy8WbpWHdZstkv1JFGo7yCxqsN7kQ=; b=bmVQWm6UpbI3NZW9tT0xuiiji72gz3iuFuW02ARR8OjZsgh52bw+ku6uEdrae4mSF2 biZBTApoyBdgBOlX/Uz8Ms1OX+2Uaem3NlACbOUvyKwmYoOvTczsCouWhPEyRw+WxRm0 7uib2dkVQP5NTLRWjIoQrswunA1n/+chRSFZtxqHl0QA34oeiMweQds8HcpHwTJyVm5q qd+iiaH9zxigKBtVp3tThXhT6mb5FIisSpF7ss/50WKxrP/p/6Paa3dDshhxjC/BhBrl 00DWMjGjvIJ1fZhCHCoIt9yK7ctfpGlAibe5tjiJGt5BcnJSzVHkr687/t124NO70gIv a7bw== X-Gm-Message-State: AC+VfDx5OyZ/wJi1LHdSZdfgBmeem4+bumlTIqZ5FTD87B48rbHtds4G 5gA2dv+vB7Q/Ea6sx2zYiN8AKhTtV7bKhvvbGqg= X-Google-Smtp-Source: ACHHUZ7CU3nReKkafvhBoc48bQqrbdCTqdYxOVyj3E4T+RkQ2jJy2Fb6RABl5kJo/QvcShCO+fHFdg== X-Received: by 2002:a2e:b046:0:b0:2b1:eca3:4e8d with SMTP id d6-20020a2eb046000000b002b1eca34e8dmr6702482ljl.12.1686738163855; Wed, 14 Jun 2023 03:22:43 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:43 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:29 +0200 Subject: [PATCH v5 18/22] clk: qcom: smd-rpm: Separate out interconnect bus clocks MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-18-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=26677; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=b1fcpW1FguL43YfbPVvUZKbf1hq8/EEzu+HzcWkLj0U=; b=dATnbAXJhG0fGGN/n1eQ/kXpsKeMpva1c2U9eIqtzLuby5inyzOzSV/1jQWCrTssWS0Akvcw8 PUahStsox3xDAu5/wpUCiXJJKLNdoQ5dsLCFLwIt3j8n16efXi+SSX8 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 6e7f0438e8b8..0d1d97659d59 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 { @@ -1332,6 +1275,15 @@ static int rpm_smd_clk_probe(struct platform_device = *pdev) goto err; } =20 + for (i =3D 0; i < desc->num_icc_clks; i++) { + if (!desc->icc_clks[i]) + continue; + + ret =3D clk_smd_rpm_handoff(desc->icc_clks[i]); + if (ret) + goto err; + } + if (!desc->scaling_before_handover) { ret =3D clk_smd_rpm_enable_scaling(); if (ret) --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 1CC02EB64D9 for ; Wed, 14 Jun 2023 10:24:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243844AbjFNKYI (ORCPT ); Wed, 14 Jun 2023 06:24:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35466 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243547AbjFNKXO (ORCPT ); Wed, 14 Jun 2023 06:23:14 -0400 Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com [IPv6:2a00:1450:4864:20::232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1D5E426A1 for ; Wed, 14 Jun 2023 03:22:46 -0700 (PDT) Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-2b1b92845e1so6286611fa.0 for ; Wed, 14 Jun 2023 03:22:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738165; x=1689330165; 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=AQkieqAu3CHGiwocHip6SI69y5dnzy8dsyDyHBvvvB4=; b=uRnBbsTRCF+5bFU6DcbyrkxW8/md8Rky+VLMJ3SnVzZKO87NPjp28/5SOLBxE9rJks h8LdiS9aNmIRHunzVOIuT2oZcA8k6OjBZbfr1lXIwn1u2c5V2iPS7WYcjvwsBTVY7EVm gWMLi/UTXPjsw7cq/VF1OF/nTHewnDHxAWbPinj+gjNWqwvGwtRf/+WRDAEJW3x3sgWA ksdw7c5yFo+JTxPBo5i56vGnwFfiiiqSigepmOZ7zr7hEpdJ8ulb31T4bxGOOAfvrt96 XT2DO3Nmq+oSLYdH7LLYyt2pNu4QitE57nDIe4CkNKNA0yyKerINV+28ht/10257I1jM zVxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738165; x=1689330165; 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=AQkieqAu3CHGiwocHip6SI69y5dnzy8dsyDyHBvvvB4=; b=hrkkax6E6Iz1szY+NrK9+NOMAVvlxX9a0z4jlFJWLTDSsndbEcN5G3jYPSa7Mrea1w //Bo5QXyIEEcoYLeyZBSfHKqm/RWXAETgilPcI6KP71wbn5zCATjjz3VaqWr9BTGVRql p+dXuv/ikrR0Dow07C+5ToFjQtjxUxeneH2anQD8OsNc3BK3o4bOmTOVcbNHJjSDnLU7 hgPIViJuYWRwBCeAqTF/Epu5AYB/8wjpRLEsL3wwxGzkK4v5eIYIN2IhRDwRtZvMTh5n a9qUavNP5jt0AbZSwbgsVocBc/96TiVT9fbB9cEQsd+1jdCwZ2FsFe+f624+qqXqXcl2 jJNg== X-Gm-Message-State: AC+VfDyyxR2LwCqIY7PlbrJ4Y3xMLCfa9JJSwikFggDX/i73EIPtwaj2 Sxi4sWP+IEv6ngHC0M+InjaQow== X-Google-Smtp-Source: ACHHUZ44UDu9v2MV7xobO8SAKc/zIctkEObC4UXvV1wrL1xKnP3sMsLqj4Nef+194EYBZ9z3AVci3w== X-Received: by 2002:a2e:87d9:0:b0:2b2:5d2:ce5f with SMTP id v25-20020a2e87d9000000b002b205d2ce5fmr5977448ljj.50.1686738165304; Wed, 14 Jun 2023 03:22:45 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:45 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:30 +0200 Subject: [PATCH v5 19/22] interconnect: qcom: icc-rpm: Fix bucket number MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-19-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Dmitry Baryshkov , Stephan Gerhold X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=4077; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=oYZAjqax66Gw3pbgpRM0nmJnsW7wNNggsQDWCGX4MbI=; b=Rx0JVwVLkaqNAedcdMbjht4NToFLfJj7Q8DDoNNTlDowP7CWXVPeA0qTcEVA2vGchg0/dOq3F u+JXky8AHCoBT3GRFXP0QPWSgPndqkCxodt088TDjVj4XRqt1RSQlLK 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. This will make the qcom,icc.h header no longer work with this driver, mostly because.. it was never meant to! The commit that introduced bucket support to SMD RPM was trying to shove a square into a round hole and it did not work out very well. That said, there are no active users of SMD RPM ICC + qcom,icc.h, so that doesn't hurt. Fixes: dcbce7b0a79c ("interconnect: qcom: icc-rpm: Support multiple buckets= ") Reviewed-by: Dmitry Baryshkov Reviewed-by: Stephan Gerhold Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 16 ++++++++-------- drivers/interconnect/qcom/icc-rpm.h | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index 858880a97d2a..47d034284e0d 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; } @@ -273,9 +273,9 @@ static int qcom_icc_bw_aggregate(struct icc_node *node,= u32 tag, u32 avg_bw, qn =3D node->data; =20 if (!tag) - tag =3D QCOM_ICC_TAG_ALWAYS; + tag =3D RPM_ALWAYS_TAG; =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 diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qco= m/icc-rpm.h index d5da24495d14..f73d35f3d32a 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -10,7 +10,7 @@ #include #include =20 -#include +#include =20 #define RPM_BUS_MASTER_REQ 0x73616d62 #define RPM_BUS_SLAVE_REQ 0x766c7362 @@ -105,8 +105,8 @@ struct qcom_icc_node { u16 num_links; u16 channels; u16 buswidth; - u64 sum_avg[QCOM_ICC_NUM_BUCKETS]; - u64 max_peak[QCOM_ICC_NUM_BUCKETS]; + u64 sum_avg[QCOM_SMD_RPM_STATE_NUM]; + u64 max_peak[QCOM_SMD_RPM_STATE_NUM]; int mas_rpm_id; int slv_rpm_id; struct qcom_icc_qos qos; --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 3FC18EB64D9 for ; Wed, 14 Jun 2023 10:24:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243989AbjFNKYP (ORCPT ); Wed, 14 Jun 2023 06:24:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243854AbjFNKXP (ORCPT ); Wed, 14 Jun 2023 06:23:15 -0400 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A3E5226AD for ; Wed, 14 Jun 2023 03:22:48 -0700 (PDT) Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2b344476313so6715971fa.3 for ; Wed, 14 Jun 2023 03:22:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738167; x=1689330167; 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=veLz5A1i1wdbEZwh7DP/XHxTSWS7AwHgX3VHj1ZonVA=; b=Vew4HSMfu+xafJn5obicEMi9i6UqABoLV5C6mkVGKnvOxUphMt2tLluSHJEu+DZOVc 5Q96/nK8JAWLEIvdy0qZXiuQMiUfo6KTYKPx7OmVgRUf67O5gVsUqKv0kMydtX4FRiEI ph4jPfcWCw1sY7S1cn3y+HpLUO23cFtp0xM26c5nzE0Yiqez6iKrHIL7JXAjL0VGIDkw Ei7k8OwD3z7fqEPnJ/0rcIq9Ocv1YpKT5o2inBMbcOH96G5DELtE20EGmftCkmUlfutp i6c5F/jRr1oMojvTZ+SnzvpOvhkCWTu/r6tNyISvWVdGAlRIB55HEMQ27aFRNtrlxK3s DfYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738167; x=1689330167; 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=veLz5A1i1wdbEZwh7DP/XHxTSWS7AwHgX3VHj1ZonVA=; b=Nq2AEs7bOHuOLTB+0b/8KQo20t/CcSn/PjxP0H0DKPMAOMQaT+8CQGwqA9ACjLKNAn tEsgtYqin8agWdbMl7ZmH3QrYfYBbyPPxcrmtGu5vhwR1a1r/P3PYJ9XJv55vW6HlkhD cApTOcABARet9m3z0O1Fg769BI3AshWdoIZd9bls8zSGzfD9tsldrf+tvaD+zqkQZjSD IxTrW8lVJDlFdxjO5HV4QZ9NOfUNw2rxGK7STKQ+E0zT5GiMhMQQwnpG7B/TPcj/8Tp1 mKz/KHZVy/atGU7ya2SmcK5hGqfs3hAfuhiwGGrpFODI3K4JtTKJajqJp6WLX71ENRab 4gJA== X-Gm-Message-State: AC+VfDyPt5w/ZwOdecw0D+0Zh/7zeIl9ilLmNbOqKoGg6/5Ckrw0E/SN CZ/Y13LsEhTHuDe2MLXwFYZaVA== X-Google-Smtp-Source: ACHHUZ7AC7zThAXv8R+ZbEGQa7PVc/pWh1q8VxD6HfCrblDsvp9LYYtOVPBsJDfMHjuNf8FI3k0SDw== X-Received: by 2002:a2e:9ed4:0:b0:2b3:2f9b:7c99 with SMTP id h20-20020a2e9ed4000000b002b32f9b7c99mr4731903ljk.14.1686738166645; Wed, 14 Jun 2023 03:22:46 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:46 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:31 +0200 Subject: [PATCH v5 20/22] interconnect: qcom: icc-rpm: Set bandwidth on both contexts MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-20-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Stephan Gerhold X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=3364; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=9kP/iaUhZf3U3lfbCEW0MMZ5Yx9Q4Ewh24pZxbnYFCI=; b=G3C36fK0PvmUADA2Ioc5+Dn0D5wZvuvVotsaig8AlqwGM/Ls8h7qjoShdfGZCdO7Us9Qq8QjK 5ti3o5/Gq16ASrGMj/0vkUPSe5Wt8m/TJFU8qAZGuEvMrc/B7t9ms3g 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") Reviewed-by: Stephan Gerhold 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 47d034284e0d..ac84fe0bc852 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -205,34 +205,39 @@ static int qcom_icc_qos_set(struct icc_node *node) } } =20 -static int qcom_icc_rpm_set(struct qcom_icc_node *qn, u64 sum_bw) +static int qcom_icc_rpm_set(struct qcom_icc_node *qn, u64 *bw) { - int ret =3D 0; + int ret, rpm_ctx =3D 0; + u64 bw_bps; =20 if (qn->qos.ap_owned) return 0; =20 - if (qn->mas_rpm_id !=3D -1) { - ret =3D qcom_icc_rpm_smd_send(QCOM_SMD_RPM_ACTIVE_STATE, - RPM_BUS_MASTER_REQ, - qn->mas_rpm_id, - sum_bw); - if (ret) { - pr_err("qcom_icc_rpm_smd_send mas %d error %d\n", - qn->mas_rpm_id, ret); - return ret; + for (rpm_ctx =3D 0; rpm_ctx < QCOM_SMD_RPM_STATE_NUM; rpm_ctx++) { + bw_bps =3D icc_units_to_bps(bw[rpm_ctx]); + + if (qn->mas_rpm_id !=3D -1) { + ret =3D qcom_icc_rpm_smd_send(rpm_ctx, + RPM_BUS_MASTER_REQ, + qn->mas_rpm_id, + bw_bps); + if (ret) { + pr_err("qcom_icc_rpm_smd_send mas %d error %d\n", + qn->mas_rpm_id, ret); + return ret; + } } - } =20 - if (qn->slv_rpm_id !=3D -1) { - ret =3D qcom_icc_rpm_smd_send(QCOM_SMD_RPM_ACTIVE_STATE, - RPM_BUS_SLAVE_REQ, - qn->slv_rpm_id, - sum_bw); - if (ret) { - pr_err("qcom_icc_rpm_smd_send slv %d error %d\n", - qn->slv_rpm_id, ret); - return ret; + if (qn->slv_rpm_id !=3D -1) { + ret =3D qcom_icc_rpm_smd_send(rpm_ctx, + RPM_BUS_SLAVE_REQ, + qn->slv_rpm_id, + bw_bps); + if (ret) { + pr_err("qcom_icc_rpm_smd_send slv %d error %d\n", + qn->slv_rpm_id, ret); + return ret; + } } } =20 @@ -337,7 +342,6 @@ static int qcom_icc_set(struct icc_node *src, struct ic= c_node *dst) struct qcom_icc_provider *qp; struct qcom_icc_node *src_qn =3D NULL, *dst_qn =3D NULL; struct icc_provider *provider; - u64 sum_bw; u64 active_rate, sleep_rate; u64 agg_avg[QCOM_SMD_RPM_STATE_NUM], agg_peak[QCOM_SMD_RPM_STATE_NUM]; u64 max_agg_avg; @@ -351,14 +355,12 @@ static int qcom_icc_set(struct icc_node *src, struct = icc_node *dst) =20 qcom_icc_bus_aggregate(provider, agg_avg, agg_peak, &max_agg_avg); =20 - sum_bw =3D icc_units_to_bps(max_agg_avg); - - ret =3D qcom_icc_rpm_set(src_qn, sum_bw); + ret =3D qcom_icc_rpm_set(src_qn, agg_avg); if (ret) return ret; =20 if (dst_qn) { - ret =3D qcom_icc_rpm_set(dst_qn, sum_bw); + ret =3D qcom_icc_rpm_set(dst_qn, agg_avg); if (ret) return ret; } --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 670EFEB64D9 for ; Wed, 14 Jun 2023 10:24:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243904AbjFNKYV (ORCPT ); Wed, 14 Jun 2023 06:24:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36002 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243896AbjFNKXR (ORCPT ); Wed, 14 Jun 2023 06:23:17 -0400 Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com [IPv6:2a00:1450:4864:20::232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D497E2704 for ; Wed, 14 Jun 2023 03:22:49 -0700 (PDT) Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-2b1a3fa2cd2so6685911fa.1 for ; Wed, 14 Jun 2023 03:22:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738168; x=1689330168; 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=aOpw2IzeZp9GbeAF9i4mXNIR6mQ3JCYKPGrp1TSgTDI=; b=eHCOR6hzSYU8UU2gztT85J9Tb69J8P2nLKb9Qvb+8qBQMwSPQu6PEBsQeV5kXAn5TL qsBMW9TYYz9P4ne8jCLWNft0/sJb84eHAcPTvJuHD+njPZ6rF//kMamdfWcpjJ/aIWyi lhawKhRw6aBnv0gOWv/LEy5XO2siRy2T1g79rEw4ccnGjolcOlwupk4YsBf+EUCLJ3Dh xqxDMOZOYa+lYyLdoAxoQaEnK1KQ76mbMGfw45wRRYuhLxSY0aUpKnivYtQQfszJVRBp SVRdlAwtkFxV81ZKMJ9f2ZWTSm1Y0z13PVVRtideUfs9M83qImWnLTIWisSaMQDNw6BV 4A5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738168; x=1689330168; 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=aOpw2IzeZp9GbeAF9i4mXNIR6mQ3JCYKPGrp1TSgTDI=; b=P+m7vlDSh1pqVln2bpel9clHtypI26VyRSuPwYuolXVfMP5+Swc1ORcTm3uVPmF5KO lxcqxnrZtO+PvXzPzn2qo3rOu4qn3dYoefBzKoX8Gdp3vtmK9tm4CVJY0x/kN+PDQ2Po aMcjG7Zxyr20emtImvLz0fGy5LPTmHj/ei5Ji03478+KuEDLb7h3u1uj6VeTunot908C bd9UyjSN1Q0Tv1kwgvrkpleX9VE7RwR4132HV/2Ah0LB/jCIZu8QKV/m08vgo2M1czO4 Rdk8Dn2FxMmBNbDakLEQgui1RYoMzsy3s5KJfKFPbyQYvaqeQk9qtXERi0AqMMGVYAsr BWGQ== X-Gm-Message-State: AC+VfDyh31dc1grLpr35Xz0W3PKMBGoSXwkw2ckj4eekhnkWNtHF2pzd ejoTNYRLQe3osy0ObnWWw209Jw== X-Google-Smtp-Source: ACHHUZ7fz5i7fWkj/w57LPjiM79ykm2PmyTeXR5HA8EE88LRd9FjGQK9GGwiGm4UDMoU7PeuVOMgBg== X-Received: by 2002:a2e:a0d5:0:b0:2b1:c613:4b9d with SMTP id f21-20020a2ea0d5000000b002b1c6134b9dmr6454119ljm.4.1686738168154; Wed, 14 Jun 2023 03:22:48 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:47 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:32 +0200 Subject: [PATCH v5 21/22] interconnect: qcom: icc-rpm: Set correct bandwidth through RPM bw req MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-21-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Stephan Gerhold X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738135; l=1241; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=vbgdPgoiD5DDzK4NJIK0hWqpG4fjAPJzqNg66olLHCY=; b=58+MSd6PMq1BtrHQgOJe1yKmACBl6ymycWRhzUgp7vYoBm12Pv2ILP8x+CYs9Q++pJtIJ0bU+ WZspeQMlXUaCSkpbREVmWrmQDmFLTxWeXBJOZV5fqh+wO/YSBylW2WV X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, we're setting the aggregated-on-provider bandwidth on each node, individually. That is of course incorrect and results in far too high votes. Use the correct values to ensure we're not wasting power. Fixes: 30c8fa3ec61a ("interconnect: qcom: Add MSM8916 interconnect provider= driver") Reported-by: Stephan Gerhold Reviewed-by: Stephan Gerhold Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index ac84fe0bc852..b7e0dfbdd26d 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -355,12 +355,12 @@ static int qcom_icc_set(struct icc_node *src, struct = icc_node *dst) =20 qcom_icc_bus_aggregate(provider, agg_avg, agg_peak, &max_agg_avg); =20 - ret =3D qcom_icc_rpm_set(src_qn, agg_avg); + ret =3D qcom_icc_rpm_set(src_qn, src_qn->sum_avg); if (ret) return ret; =20 if (dst_qn) { - ret =3D qcom_icc_rpm_set(dst_qn, agg_avg); + ret =3D qcom_icc_rpm_set(dst_qn, dst_qn->sum_avg); if (ret) return ret; } --=20 2.41.0 From nobody Sun Feb 8 22:42:59 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 F41C0EB64D9 for ; Wed, 14 Jun 2023 10:24:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244071AbjFNKYk (ORCPT ); Wed, 14 Jun 2023 06:24:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243679AbjFNKX3 (ORCPT ); Wed, 14 Jun 2023 06:23:29 -0400 Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E0912713 for ; Wed, 14 Jun 2023 03:22:51 -0700 (PDT) Received: by mail-lj1-x236.google.com with SMTP id 38308e7fff4ca-2b1badb8f9bso7032491fa.1 for ; Wed, 14 Jun 2023 03:22:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686738169; x=1689330169; 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=Q5jMi4yB5xRipw+kSFiWjcxeJA+ox3eKVfPbvkx2gqs=; b=aFQmIVXIbZIZkW27XzgM3oK1Cbw9GzcmQqyRJi0MVOlEFIxpQ16p80YaSy/nEI1hqz LGDtSD66pjCZHP7tOQhPzkTyFQbEf6NWSHPKAq1bxci449w5M8gGmwpAl/71SJlCzaOb uxj4HqrPatWLjJTuD/AeP650NqCM40kQM8R0zCKEela+Eg0WkRDS0cWzVvg9mph23Uaj ncsVb+tK/0+prz3H4WhCzQ2cbyTAntEaR+WOkh7OYB8wEVDOYBLWyzOU96eJFozUS7+N eEY9PpY3SpDo/EH3LHEXc7oeWwhkRTb5rjBojQS36bURYnAv6lY3gYX8WdVf0lsoI8EV B7ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686738169; x=1689330169; 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=Q5jMi4yB5xRipw+kSFiWjcxeJA+ox3eKVfPbvkx2gqs=; b=UWd3Mp20/DOhoarbKA6Y5ptHTS8l5g03JeIaI+8+sYSyEwG3OO8O14zvH0BmrWXuvE jzrVHRNdYMlX5bIQKnLeMGUx5dU5MGQNrV/Uza78grjs5+uCeYy40duyK4cSIdXedk69 mRyteEICWD4HIrHyY9VvAj0nkGnBD4bYAY1m0dkcl5d3b30dfzhb1R8HqcH/hDgCHdRJ BPCUzaer+AsF1FU/tzIM5TU4Mgun64gBD1M9VRJbFaL0onYaWW+oXaLOHlM9OeTAgRoB lr57n0ZJCiEoQtCCNqkWKte9XsykBkYUVfTdrzHpQwpPpCpspOUbbmRDHhQkWOiC/AiT dIfg== X-Gm-Message-State: AC+VfDwUjrCorua2szcQk9eygWLPpUbBTyS5eAC0XVhlCUuW89DeIIP1 xW+pTTN/nXwlZ0Yzq1yngC59bA== X-Google-Smtp-Source: ACHHUZ4rNxbYlxD4D1e8ic1iqett9Ik0RtzDT2jOJ15sneHH61t6fU7iZZn4fgy5F401CB1k6c5OzQ== X-Received: by 2002:a2e:9891:0:b0:2b3:4cff:60c5 with SMTP id b17-20020a2e9891000000b002b34cff60c5mr462417ljj.2.1686738169630; Wed, 14 Jun 2023 03:22:49 -0700 (PDT) Received: from [192.168.1.101] (abyj190.neoplus.adsl.tpnet.pl. [83.9.29.190]) by smtp.gmail.com with ESMTPSA id m2-20020a2eb6c2000000b002b20d8f270asm2520057ljo.74.2023.06.14.03.22.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:22:49 -0700 (PDT) From: Konrad Dybcio Date: Wed, 14 Jun 2023 12:22:33 +0200 Subject: [PATCH v5 22/22] interconnect: qcom: icc-rpm: Fix bandwidth calculations MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20230526-topic-smd_icc-v5-22-eeaa09d0082e@linaro.org> References: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> In-Reply-To: <20230526-topic-smd_icc-v5-0-eeaa09d0082e@linaro.org> To: Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio , Stephan Gerhold X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1686738136; l=5027; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=Y6xOksmJ4mLZEd7yKDwUFVfxkWIq2Zds5gCs+rlOv40=; b=NYN1utIToJqOpynv4MfxledDji90pHdIJZVykGWzq3UsyI8id0Rk1b1Hhk1g5KBD53JSF4rr/ B71Z7Cup3hBBBdGiwOhmGsuQYnAqLZRH4NQZbsti0DQYTvOZflKu6VX X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Up until now, we've been aggregating the bandwidth values and only dividing them by the bus width of the source node. This was completely wrong, as different nodes on a given path may (and usually do) have varying bus widths. That in turn, resulted in the calculated clock rates being completely bogus - usually they ended up being much higher, as NoC_A<->NoC_B links are very wide. Since we're not using the aggregate bandwidth value for anything other than clock rate calculations, remodel qcom_icc_bus_aggregate() to calculate the per-context clock rate for a given provider, taking into account the bus width of every individual node. Fixes: 30c8fa3ec61a ("interconnect: qcom: Add MSM8916 interconnect provider= driver") Reported-by: Stephan Gerhold Reviewed-by: Stephan Gerhold Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 59 ++++++++++++---------------------= ---- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qco= m/icc-rpm.c index b7e0dfbdd26d..4ab410e477ce 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -293,58 +293,44 @@ static int qcom_icc_bw_aggregate(struct icc_node *nod= e, u32 tag, u32 avg_bw, } =20 /** - * qcom_icc_bus_aggregate - aggregate bandwidth by traversing all nodes + * qcom_icc_bus_aggregate - calculate bus clock rates by traversing all no= des * @provider: generic interconnect provider - * @agg_avg: an array for aggregated average bandwidth of buckets - * @agg_peak: an array for aggregated peak bandwidth of buckets - * @max_agg_avg: pointer to max value of aggregated average bandwidth + * @agg_clk_rate: array containing the aggregated clock rates in kHz */ -static void qcom_icc_bus_aggregate(struct icc_provider *provider, - u64 *agg_avg, u64 *agg_peak, - u64 *max_agg_avg) +static void qcom_icc_bus_aggregate(struct icc_provider *provider, u64 *agg= _clk_rate) { - struct icc_node *node; + u64 agg_avg_rate, agg_rate; struct qcom_icc_node *qn; - u64 sum_avg[QCOM_SMD_RPM_STATE_NUM]; + struct icc_node *node; int i; =20 - /* Initialise aggregate values */ - for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) { - agg_avg[i] =3D 0; - agg_peak[i] =3D 0; - } - - *max_agg_avg =3D 0; - /* - * Iterate nodes on the interconnect and aggregate bandwidth - * requests for every bucket. + * Iterate nodes on the provider, aggregate bandwidth requests for + * every bucket and convert them into bus clock rates. */ list_for_each_entry(node, &provider->nodes, node_list) { qn =3D node->data; for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) { if (qn->channels) - sum_avg[i] =3D div_u64(qn->sum_avg[i], qn->channels); + agg_avg_rate =3D div_u64(qn->sum_avg[i], qn->channels); else - sum_avg[i] =3D qn->sum_avg[i]; - agg_avg[i] +=3D sum_avg[i]; - agg_peak[i] =3D max_t(u64, agg_peak[i], qn->max_peak[i]); + agg_avg_rate =3D qn->sum_avg[i]; + + agg_rate =3D max_t(u64, agg_avg_rate, qn->max_peak[i]); + do_div(agg_rate, qn->buswidth); + + agg_clk_rate[i] =3D max_t(u64, agg_clk_rate[i], agg_rate); } } - - /* Find maximum values across all buckets */ - for (i =3D 0; i < QCOM_SMD_RPM_STATE_NUM; i++) - *max_agg_avg =3D max_t(u64, *max_agg_avg, agg_avg[i]); } =20 static int qcom_icc_set(struct icc_node *src, struct icc_node *dst) { - struct qcom_icc_provider *qp; struct qcom_icc_node *src_qn =3D NULL, *dst_qn =3D NULL; + u64 agg_clk_rate[QCOM_SMD_RPM_STATE_NUM] =3D { 0 }; struct icc_provider *provider; + struct qcom_icc_provider *qp; u64 active_rate, sleep_rate; - u64 agg_avg[QCOM_SMD_RPM_STATE_NUM], agg_peak[QCOM_SMD_RPM_STATE_NUM]; - u64 max_agg_avg; int ret; =20 src_qn =3D src->data; @@ -353,7 +339,9 @@ static int qcom_icc_set(struct icc_node *src, struct ic= c_node *dst) provider =3D src->provider; qp =3D to_qcom_provider(provider); =20 - qcom_icc_bus_aggregate(provider, agg_avg, agg_peak, &max_agg_avg); + qcom_icc_bus_aggregate(provider, agg_clk_rate); + active_rate =3D agg_clk_rate[QCOM_SMD_RPM_ACTIVE_STATE]; + sleep_rate =3D agg_clk_rate[QCOM_SMD_RPM_SLEEP_STATE]; =20 ret =3D qcom_icc_rpm_set(src_qn, src_qn->sum_avg); if (ret) @@ -369,15 +357,6 @@ static int qcom_icc_set(struct icc_node *src, struct i= cc_node *dst) if (!qp->bus_clk_desc && !qp->bus_clk) return 0; =20 - /* Intentionally keep the rates in kHz as that's what RPM accepts */ - active_rate =3D max(agg_avg[QCOM_SMD_RPM_ACTIVE_STATE], - agg_peak[QCOM_SMD_RPM_ACTIVE_STATE]); - do_div(active_rate, src_qn->buswidth); - - sleep_rate =3D max(agg_avg[QCOM_SMD_RPM_SLEEP_STATE], - agg_peak[QCOM_SMD_RPM_SLEEP_STATE]); - do_div(sleep_rate, src_qn->buswidth); - /* * Downstream checks whether the requested rate is zero, but it makes lit= tle sense * to vote for a value that's below the lower threshold, so let's not do = so. --=20 2.41.0