From patchwork Fri Apr 7 20:14:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 671529 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 5E527C77B6E for ; Fri, 7 Apr 2023 20:14:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229631AbjDGUOw (ORCPT ); Fri, 7 Apr 2023 16:14:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37512 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229641AbjDGUOu (ORCPT ); Fri, 7 Apr 2023 16:14:50 -0400 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6A1441BC5 for ; Fri, 7 Apr 2023 13:14:48 -0700 (PDT) Received: by mail-lf1-x12f.google.com with SMTP id g19so42589689lfr.9 for ; Fri, 07 Apr 2023 13:14:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1680898486; 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=v9z0aVMBBsZdRPEvNfuPfiehLWAE2y+k1IJImXazA+8=; b=ykIoOEnZZFRW29GcpUJJgS6XJcD/9wEvX7Ziuq4ikJe36Iei/vhcLU1eGaJfjpfMj/ 22YDJJa+vZyiyTlA3XDKnCZV5jXNp/uQDFS2FDKWMlO3iqXWYGYj1mCFvNXmu4XneTJo NUjPjAsFgVzVPgPIU8WjwwIMKOl0yemsHmKfnyGJiLeySX/yQwI2tN2mBB4H8/dqhNXN OuUulpi++Q5nSEaIppjg2DWPE+R2l3D8eWOcSS8kywRtC99E7Y8hGN8UvTchxCI6JsFT 5n+yYodlA6kBCwvCiZg4npLMNibabufYDWVgZGjWwDOg+ZyAYO5jxtdWvsqavtMHhnaH hUdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680898486; 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=v9z0aVMBBsZdRPEvNfuPfiehLWAE2y+k1IJImXazA+8=; b=MkCSeFZEkL6FiVXpMqaGn6clj1fXy7+JMXTbDi/3FSrAP3qMJLrMZUCycRt4U32DQ4 zBNKouOdLVr3xHJteBefpyCJ2Po6xLB8bXTUEDTjdoIN86vTsUdga/w0YK9DaF+79zDW nopcMSA9K2YqS5nJ3Z6XKUvxiO2StM/EcRiR+PTpOAQgChLa+NKGZ+jgf8qJtkslDinO gbPXR8zxi3l8UmuGFsZMhIpunM5riaiH1FQhM3I9cf6vNI4IxZSlP6ScCchig4Ah2Iyd 06Q0VUTN/lpr3kjyAEdMBAjzmGcG+8N0dLJRNFMNLx7xG5hUXPDVMiyNO9DBP4lmxex+ N/4g== X-Gm-Message-State: AAQBX9cLD077ROC7o9h2CQYbZAk6mTu1CGd+8A3InieQ+zRq7MkLQNXj iGnLCZFKb6VgmNdSBB8MuDOJfg== X-Google-Smtp-Source: AKy350bePN08sNZfdl2hvuBdMqPHdyTpmH0ZD39kYnUZ3URGUAXAdwrikRbltxkwIgExQxKTNAPDkA== X-Received: by 2002:a19:5503:0:b0:4d5:ae35:b221 with SMTP id n3-20020a195503000000b004d5ae35b221mr815021lfe.34.1680898486754; Fri, 07 Apr 2023 13:14:46 -0700 (PDT) Received: from [192.168.1.101] (abxh37.neoplus.adsl.tpnet.pl. [83.9.1.37]) by smtp.gmail.com with ESMTPSA id u3-20020ac243c3000000b004eaf6181a32sm842436lfl.75.2023.04.07.13.14.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 13:14:46 -0700 (PDT) From: Konrad Dybcio Date: Fri, 07 Apr 2023 22:14:43 +0200 Subject: [PATCH v8 1/8] interconnect: qcom: rpm: Rename icc desc clocks to bus_blocks MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v8-1-ee696a2c15a9@linaro.org> References: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> In-Reply-To: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Marijn Suijten X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1680898484; l=4017; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=mQ36FvJbMCQvBQ0eF8VcxwSFpsUfeIXlhNbu3V6MP2M=; b=gN5Gn8/ZVeVJSPAfPBNSp1QLDyDW9tKyaitI3yL8CAaK7CwYoW1xu5gzNq874cKVoEPdh7quGHkw YrqHPplnDPFgb/XxGZAcsGtZqehqtEppQX6x8xRo9axDyEUq2Jsv X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Rename the "clocks" (and _names) fields of qcom_icc_desc to "bus_clocks" in preparation for introducing handling of clocks that need to be enabled but not voted on with aggregate frequency. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 6 +++--- drivers/interconnect/qcom/icc-rpm.h | 4 ++-- drivers/interconnect/qcom/msm8996.c | 12 ++++++------ drivers/interconnect/qcom/sdm660.c | 8 ++++---- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index 5341fa169dbf..ee3d09a6850e 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -440,9 +440,9 @@ int qnoc_probe(struct platform_device *pdev) qnodes = desc->nodes; num_nodes = desc->num_nodes; - if (desc->num_clocks) { - cds = desc->clocks; - cd_num = desc->num_clocks; + if (desc->num_bus_clocks) { + cds = desc->bus_clocks; + cd_num = desc->num_bus_clocks; } else { cds = bus_clocks; cd_num = ARRAY_SIZE(bus_clocks); diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h index 22bdb1e4bb12..689300a2fd4e 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -91,8 +91,8 @@ struct qcom_icc_node { struct qcom_icc_desc { struct qcom_icc_node * const *nodes; size_t num_nodes; - const char * const *clocks; - size_t num_clocks; + const char * const *bus_clocks; + size_t num_bus_clocks; 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/qcom/msm8996.c index 14efd2761b7a..21f998cd19f0 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -1821,8 +1821,8 @@ static const struct qcom_icc_desc msm8996_a0noc = { .type = QCOM_ICC_NOC, .nodes = a0noc_nodes, .num_nodes = ARRAY_SIZE(a0noc_nodes), - .clocks = bus_a0noc_clocks, - .num_clocks = ARRAY_SIZE(bus_a0noc_clocks), + .bus_clocks = bus_a0noc_clocks, + .num_bus_clocks = ARRAY_SIZE(bus_a0noc_clocks), .regmap_cfg = &msm8996_a0noc_regmap_config }; @@ -1865,8 +1865,8 @@ static const struct qcom_icc_desc msm8996_a2noc = { .type = QCOM_ICC_NOC, .nodes = a2noc_nodes, .num_nodes = ARRAY_SIZE(a2noc_nodes), - .clocks = bus_a2noc_clocks, - .num_clocks = ARRAY_SIZE(bus_a2noc_clocks), + .bus_clocks = bus_a2noc_clocks, + .num_bus_clocks = ARRAY_SIZE(bus_a2noc_clocks), .regmap_cfg = &msm8996_a2noc_regmap_config }; @@ -2004,8 +2004,8 @@ static const struct qcom_icc_desc msm8996_mnoc = { .type = QCOM_ICC_NOC, .nodes = mnoc_nodes, .num_nodes = ARRAY_SIZE(mnoc_nodes), - .clocks = bus_mm_clocks, - .num_clocks = ARRAY_SIZE(bus_mm_clocks), + .bus_clocks = bus_mm_clocks, + .num_bus_clocks = ARRAY_SIZE(bus_mm_clocks), .regmap_cfg = &msm8996_mnoc_regmap_config }; diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom/sdm660.c index 8d879b0bcabc..a22ba821efbf 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -1516,8 +1516,8 @@ static const struct qcom_icc_desc sdm660_a2noc = { .type = QCOM_ICC_NOC, .nodes = sdm660_a2noc_nodes, .num_nodes = ARRAY_SIZE(sdm660_a2noc_nodes), - .clocks = bus_a2noc_clocks, - .num_clocks = ARRAY_SIZE(bus_a2noc_clocks), + .bus_clocks = bus_a2noc_clocks, + .num_bus_clocks = ARRAY_SIZE(bus_a2noc_clocks), .regmap_cfg = &sdm660_a2noc_regmap_config, }; @@ -1659,8 +1659,8 @@ static const struct qcom_icc_desc sdm660_mnoc = { .type = QCOM_ICC_NOC, .nodes = sdm660_mnoc_nodes, .num_nodes = ARRAY_SIZE(sdm660_mnoc_nodes), - .clocks = bus_mm_clocks, - .num_clocks = ARRAY_SIZE(bus_mm_clocks), + .bus_clocks = bus_mm_clocks, + .num_bus_clocks = ARRAY_SIZE(bus_mm_clocks), .regmap_cfg = &sdm660_mnoc_regmap_config, }; From patchwork Fri Apr 7 20:14:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 671093 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 DF4ABC77B73 for ; Fri, 7 Apr 2023 20:14:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229808AbjDGUOy (ORCPT ); Fri, 7 Apr 2023 16:14:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37554 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229437AbjDGUOv (ORCPT ); Fri, 7 Apr 2023 16:14:51 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D44A3BDE1 for ; Fri, 7 Apr 2023 13:14:49 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id j11so55659418lfg.13 for ; Fri, 07 Apr 2023 13:14:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1680898488; 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=3aCo6YWSWC7QDyDOgnSdKQprMmsQavo7dczvCShoPH0=; b=B1QnkTPGvvIyEvodHBYuu9LL3xe40OdQRgBTwdVVM1iEc5BoNzebvBFN3e2/oxXg5q cA0iMRDsD1CxGngS9MN+hNqQKl8MaTf1mdrHW6psnJAouLqolZkiAyu4k2KoSho3IQJP hX9Dp8H59wOyJnYL8bqqwax6hNPdzX5c0BlI0tBMq++2uSH+0BxK4URNrX1syN6BCEau DOYnHfK8OIaI0GoOQ+lQafgi55K+Vt1JuNpZqqtyV4WDFbYrrLKFY9bZ1b3I6eJ8b7cI BlebXXH8a9E/5it8zIbvnGBfb/WugaP2oEjhA06OEzrSZnIsSK/dup66VuNl5O6C67Ea CmGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680898488; 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=3aCo6YWSWC7QDyDOgnSdKQprMmsQavo7dczvCShoPH0=; b=IruemL5dpNqpKfKS3vO4Ys9K5LSqMDRWJT7HYp/SJjL1Q1Y2OKPXBgiDTdovJGbpTS AM5kKUSKOjd9x+e7lIgt9IZB3EOvpP6A48HfyTLrP2/mAUxJUulXm+o5p4N9JEeopzhH Wm4/4hd/XMwpI+aM4B0mVuKOPCL1KHbtBquEyB6pKFII7nA3muuZFpfLpoC+pPkMJ1sk gsvaJEWN7+H+qw40KeKhCQOk4vjlwejdAXqBZ391EhBcBhePtW5rSK2VtUiOf2xi5UeS pjRAq7k8DcyiKRc3cBINezFotgG7FdKOBbtVTGh4u5pKJdbAyYom4yqH+mRWS8aXfC0S M/jg== X-Gm-Message-State: AAQBX9cvCsvKhN5gnqwXC5nCGunrWed+6LBmjT9ClEve7MvT+fUUKFkc sahu85z5X7jBx4OhW9oQhLjNag== X-Google-Smtp-Source: AKy350ZWAFUetM5TUyfwMXrFXqhTKAHsnvo3YH5ggDIek8UB9G5BzAnNUb9WIv9JDbv9Mbo+rQTHAw== X-Received: by 2002:a19:ac4c:0:b0:4db:3e1a:fc7 with SMTP id r12-20020a19ac4c000000b004db3e1a0fc7mr182lfc.31.1680898488054; Fri, 07 Apr 2023 13:14:48 -0700 (PDT) Received: from [192.168.1.101] (abxh37.neoplus.adsl.tpnet.pl. [83.9.1.37]) by smtp.gmail.com with ESMTPSA id u3-20020ac243c3000000b004eaf6181a32sm842436lfl.75.2023.04.07.13.14.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 13:14:47 -0700 (PDT) From: Konrad Dybcio Date: Fri, 07 Apr 2023 22:14:44 +0200 Subject: [PATCH v8 2/8] interconnect: qcom: rpm: Rename icc provider num_clocks to num_bus_clocks MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v8-2-ee696a2c15a9@linaro.org> References: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> In-Reply-To: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Marijn Suijten X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1680898484; l=3064; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=AL/5pHSAvV2vBdT049aGNYdnVcOJiOzItHlBogTY10o=; b=wcySxfPAttSxwn9WOps36nlx4KY+U5yuRwJOUN5PySwu0zk63hRzqg6cSXdop7Vb7O8irN7gk2oV ahgwNVKXA7+ESyhtSG/tyco/laQlr4+2aO6/nyR9yUJKzx5lancD X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org In preparation for handling non-scaling clocks that we still have to enable, rename num_clocks to more descriptive num_bus_clocks. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 12 ++++++------ drivers/interconnect/qcom/icc-rpm.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index ee3d09a6850e..8dce3dcff8da 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -379,7 +379,7 @@ static int qcom_icc_set(struct icc_node *src, struct icc_node *dst) return ret; } - for (i = 0; i < qp->num_clks; i++) { + for (i = 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 @@ -464,7 +464,7 @@ int qnoc_probe(struct platform_device *pdev) for (i = 0; i < cd_num; i++) qp->bus_clks[i].id = cds[i]; - qp->num_clks = cd_num; + qp->num_bus_clks = cd_num; qp->type = desc->type; qp->qos_offset = desc->qos_offset; @@ -494,11 +494,11 @@ int qnoc_probe(struct platform_device *pdev) } regmap_done: - ret = devm_clk_bulk_get_optional(dev, qp->num_clks, qp->bus_clks); + ret = devm_clk_bulk_get_optional(dev, qp->num_bus_clks, qp->bus_clks); if (ret) return ret; - ret = clk_bulk_prepare_enable(qp->num_clks, qp->bus_clks); + ret = clk_bulk_prepare_enable(qp->num_bus_clks, qp->bus_clks); if (ret) return ret; @@ -551,7 +551,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_clks, qp->bus_clks); + clk_bulk_disable_unprepare(qp->num_bus_clks, qp->bus_clks); return ret; } @@ -563,7 +563,7 @@ int qnoc_remove(struct platform_device *pdev) icc_provider_deregister(&qp->provider); icc_nodes_remove(&qp->provider); - clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks); + clk_bulk_disable_unprepare(qp->num_bus_clks, qp->bus_clks); return 0; } diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h index 689300a2fd4e..2436777820a4 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -23,7 +23,7 @@ enum qcom_icc_type { /** * struct qcom_icc_provider - Qualcomm specific interconnect provider * @provider: generic interconnect provider - * @num_clks: the total number of clk_bulk_data entries + * @num_bus_clks: the total number of bus_clks clk_bulk_data entries * @type: the ICC provider type * @regmap: regmap for QoS registers read/write access * @qos_offset: offset to QoS registers @@ -32,7 +32,7 @@ enum qcom_icc_type { */ struct qcom_icc_provider { struct icc_provider provider; - int num_clks; + int num_bus_clks; enum qcom_icc_type type; struct regmap *regmap; unsigned int qos_offset; From patchwork Fri Apr 7 20:14:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 671528 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 49042C76196 for ; Fri, 7 Apr 2023 20:14:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229539AbjDGUOz (ORCPT ); Fri, 7 Apr 2023 16:14:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229882AbjDGUOw (ORCPT ); Fri, 7 Apr 2023 16:14:52 -0400 Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D3D1910F8 for ; Fri, 7 Apr 2023 13:14:50 -0700 (PDT) Received: by mail-lf1-x130.google.com with SMTP id c9so45271079lfb.1 for ; Fri, 07 Apr 2023 13:14:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1680898489; 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=H3nsx7fTooCsHlb+iQOPq8i6PDjNQ7J7ivbonnB4f0g=; b=Z8vc6jpcWix01rDMGNR5PCpgd+r96K1dnJUCfKV7qM4GZtoljfuq7IBcdUCo8ooyTU m09IsKdPTF2AKqu3wDIoxrpIJ8iimjjuBgdfli5PSAJi4Tdz/NzUZ7PAlF7X4whGoxRO Sy5JfXLxQdxKeD/S3e7nmrHx6iId8R8ukvPQLr6wNPkms9xuBl8ZMViBwX1TLxVjuI4V GALzUti2PrVQRe0isUUqcBJHR7D6pSxQvB9wVtwHSrRLXGb5ga2HrKejmx/ZCkix8ww/ mMWnEHkPy6gLSUeb74HQOjDfgBZVmINA/OB7JUDSapX6vYWtGqZYoiq30nUyIvIMAej7 PGUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680898489; 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=H3nsx7fTooCsHlb+iQOPq8i6PDjNQ7J7ivbonnB4f0g=; b=aDirOWT0UfXEU1y1w6I0gjQiC2v917AwZ9TQxdgbxoyZIpFC/2uQAsXcDJArpMvR3+ y1Kn5cqDIKtT06HJhOrDrYHkWroGlhzHDL5KokiOZdQRYfyTELeVji3njRa1FSdtPGX/ 9Zo7eNC9+MdufIytjUsRiZFel18H8qIpsDdBrf+pHa8vVn7TMNzfIb8nze4xDI6rpVU9 HZDTwslb+rXEUE+SAE0M2R6jj0/nnicWkIz+Y7lgVkOQ2SsZ+URLU7GkyZQ3Ym1CtKP0 /P+2xrmW+fhAMOavR3eeT6ei1G90vLaFltxhO9jH8wKTP2cExBNPvz+8WMmZqLlD5mgD Q0nA== X-Gm-Message-State: AAQBX9dBX7OgGRd3EPAc1Jb81+ZU82jS1N3nCpz6mNF6AL77t8OUzXob W+8g6Hydaglbqmhxud8hcn4RRg== X-Google-Smtp-Source: AKy350Y7LUK3nfzendnh17J37dDFXjucugtvtpD8fmjaYFzQSoobFRG/vsggjzQ+EbasYiOGKXVpfg== X-Received: by 2002:ac2:447b:0:b0:4db:4fe8:fd0f with SMTP id y27-20020ac2447b000000b004db4fe8fd0fmr909089lfl.25.1680898489225; Fri, 07 Apr 2023 13:14:49 -0700 (PDT) Received: from [192.168.1.101] (abxh37.neoplus.adsl.tpnet.pl. [83.9.1.37]) by smtp.gmail.com with ESMTPSA id u3-20020ac243c3000000b004eaf6181a32sm842436lfl.75.2023.04.07.13.14.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 13:14:48 -0700 (PDT) From: Konrad Dybcio Date: Fri, 07 Apr 2023 22:14:45 +0200 Subject: [PATCH v8 3/8] interconnect: qcom: rpm: Drop unused parameters MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v8-3-ee696a2c15a9@linaro.org> References: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> In-Reply-To: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Marijn Suijten X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1680898484; l=2285; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=yBC75Q6TJYtH1vX8QL0awOafuPHjdn2hOETxfU8AhgI=; b=/scUAZfnDk4668871iclpkfz/2TI7qD1M2Yecgm/4Pk9iR0T4KISIAjnhu3EULS0UwQUZguCML7F 1VbPKaQFBp3iVjwy0cty4n9Ihl/9mgDe+MLW6lysH+x5AHLXOnm7 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org The QoS-setting functions do not care about the bandwidth values passed. Drop them. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index 8dce3dcff8da..7d62c0bf2722 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -50,7 +50,7 @@ #define NOC_QOS_MODE_FIXED_VAL 0x0 #define NOC_QOS_MODE_BYPASS_VAL 0x2 -static int qcom_icc_set_qnoc_qos(struct icc_node *src, u64 max_bw) +static int qcom_icc_set_qnoc_qos(struct icc_node *src) { struct icc_provider *provider = src->provider; struct qcom_icc_provider *qp = to_qcom_provider(provider); @@ -95,7 +95,7 @@ static int qcom_icc_bimc_set_qos_health(struct qcom_icc_provider *qp, mask, val); } -static int qcom_icc_set_bimc_qos(struct icc_node *src, u64 max_bw) +static int qcom_icc_set_bimc_qos(struct icc_node *src) { struct qcom_icc_provider *qp; struct qcom_icc_node *qn; @@ -150,7 +150,7 @@ static int qcom_icc_noc_set_qos_priority(struct qcom_icc_provider *qp, NOC_QOS_PRIORITY_P0_MASK, qos->prio_level); } -static int qcom_icc_set_noc_qos(struct icc_node *src, u64 max_bw) +static int qcom_icc_set_noc_qos(struct icc_node *src) { struct qcom_icc_provider *qp; struct qcom_icc_node *qn; @@ -187,7 +187,7 @@ static int qcom_icc_set_noc_qos(struct icc_node *src, u64 max_bw) NOC_QOS_MODEn_MASK, mode); } -static int qcom_icc_qos_set(struct icc_node *node, u64 sum_bw) +static int qcom_icc_qos_set(struct icc_node *node) { struct qcom_icc_provider *qp = to_qcom_provider(node->provider); struct qcom_icc_node *qn = node->data; @@ -196,11 +196,11 @@ static int qcom_icc_qos_set(struct icc_node *node, u64 sum_bw) switch (qp->type) { case QCOM_ICC_BIMC: - return qcom_icc_set_bimc_qos(node, sum_bw); + return qcom_icc_set_bimc_qos(node); case QCOM_ICC_QNOC: - return qcom_icc_set_qnoc_qos(node, sum_bw); + return qcom_icc_set_qnoc_qos(node); default: - return qcom_icc_set_noc_qos(node, sum_bw); + return qcom_icc_set_noc_qos(node); } } From patchwork Fri Apr 7 20:14:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 671092 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 CE99BC77B71 for ; Fri, 7 Apr 2023 20:14:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229577AbjDGUO5 (ORCPT ); Fri, 7 Apr 2023 16:14:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37554 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229826AbjDGUOw (ORCPT ); Fri, 7 Apr 2023 16:14:52 -0400 Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 217E8BDD3 for ; Fri, 7 Apr 2023 13:14:51 -0700 (PDT) Received: by mail-lf1-x129.google.com with SMTP id x17so55764283lfu.5 for ; Fri, 07 Apr 2023 13:14:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1680898490; 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=SQRr7zYgAeFKXDVLGLXAENjwQ4hSXd3swVXxXJxBC68=; b=KaOAS9kKCQiM8FtlqY9qHaT7Gc5Dzk3LtG19NMEVjJCnPeW2hiQjaKlEoKd7ILim/z 1iStbcDmcF7jdB2uuMzQFBJHiWLc3y1tjErHYm22moLq019b1vy27B31rYCESGNIfdOP nysoEplT9B8KoAlF4gFS4QQs3xZy43HKSlsuVKUWhAbR5YMnb5ikSIz9/6HOqGCIDMc4 ZAwS6pNNdxmaf6IEmxxJ+A0zdDK52OfNV0g5WXeUf/hNNJOohQDXWbYUIYPRNcqm1RM0 hIZG2Ehys8RVjSHsS80INrC27e40FdtFcvpUA1snKCLMVa75MX5S8YdNAvDO/pcv4sxb f32Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680898490; 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=SQRr7zYgAeFKXDVLGLXAENjwQ4hSXd3swVXxXJxBC68=; b=0KQjnYrBcr+Tj1bOYEJ4YVJ7otvfXy++tXfCwMeFsRyudGDPOkj9aqV0RXCL4HdhbO IoriWUoQbO/Y2iF2BBg+uy9GxndhvL27th0AZQP9AZp1n6wr/kUZD3hRHFJM4E7+Z7ZC 70uqPHmx3LqbstIlFbnhYwYLf3ZLg2eMHxAhQUt7yk15lxBLtf3x1dyIVh42T7emTH0n 7wZq9SFbtSeAwEH/9SkqN67F8cizDglkR1G4NPyuARcQJ8p7ceEKufndfnKR960ytsVi 7350Uc0jshRJhj4dy3cpkQu6o1lXk31wIU4jb3V4lRwSbv/vU0u7IJkaJyUicGILKadK 5+iw== X-Gm-Message-State: AAQBX9ceBec6Z11ng/QAoE1HYGikQIlB/9Cj5vEcAJZjsLVwPWNao65d Y3n3b2aOHuvvnl6qW8BYP6I1xA== X-Google-Smtp-Source: AKy350ZNbYIP6G3TdV4ZnW7a5/jEH7iMFGOuNoFHCQo82Dit+nTlfr9rBFYZY8gaEa9Dr0eGbYbFLg== X-Received: by 2002:a19:f70f:0:b0:4eb:4fb2:7b6d with SMTP id z15-20020a19f70f000000b004eb4fb27b6dmr1144444lfe.2.1680898490604; Fri, 07 Apr 2023 13:14:50 -0700 (PDT) Received: from [192.168.1.101] (abxh37.neoplus.adsl.tpnet.pl. [83.9.1.37]) by smtp.gmail.com with ESMTPSA id u3-20020ac243c3000000b004eaf6181a32sm842436lfl.75.2023.04.07.13.14.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 13:14:50 -0700 (PDT) From: Konrad Dybcio Date: Fri, 07 Apr 2023 22:14:46 +0200 Subject: [PATCH v8 4/8] interconnect: qcom: rpm: Set QoS registers only once MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v8-4-ee696a2c15a9@linaro.org> References: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> In-Reply-To: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Marijn Suijten X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1680898484; l=3314; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=Fj8QPV8qCcpTJILNUkCb2YoMLaTcvnAVgncrQ7lWCjs=; b=AoVoA52TYCXmyQ7GwtfPUjP8q7pzXHkgKdOsIrcJcNMPogE1cbqb2bEyIyBd81AN9Q/V25NkVs7h VVjyr9qyCRkiYVemWPjMKarVPN7xagN3fmZT3SVek5BN7GLRe+6M X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org The QoS registers are (or according to Qualcomm folks, on most platforms) persistent until a full chip reboot. Move the QoS-setting functions to the probe function so that we don't needlessly do it over and over again. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 50 ++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index 7d62c0bf2722..d79e508cb717 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -204,30 +204,33 @@ static int qcom_icc_qos_set(struct icc_node *node) } } -static int qcom_icc_rpm_set(int mas_rpm_id, int slv_rpm_id, u64 sum_bw) +static int qcom_icc_rpm_set(struct qcom_icc_node *qn, u64 sum_bw) { int ret = 0; - if (mas_rpm_id != -1) { + if (qn->qos.ap_owned) + return 0; + + if (qn->mas_rpm_id != -1) { ret = qcom_icc_rpm_smd_send(QCOM_SMD_RPM_ACTIVE_STATE, RPM_BUS_MASTER_REQ, - mas_rpm_id, + qn->mas_rpm_id, sum_bw); if (ret) { pr_err("qcom_icc_rpm_smd_send mas %d error %d\n", - mas_rpm_id, ret); + qn->mas_rpm_id, ret); return ret; } } - if (slv_rpm_id != -1) { + if (qn->slv_rpm_id != -1) { ret = qcom_icc_rpm_smd_send(QCOM_SMD_RPM_ACTIVE_STATE, RPM_BUS_SLAVE_REQ, - slv_rpm_id, + qn->slv_rpm_id, sum_bw); if (ret) { pr_err("qcom_icc_rpm_smd_send slv %d error %d\n", - slv_rpm_id, ret); + qn->slv_rpm_id, ret); return ret; } } @@ -235,26 +238,6 @@ static int qcom_icc_rpm_set(int mas_rpm_id, int slv_rpm_id, u64 sum_bw) return ret; } -static int __qcom_icc_set(struct icc_node *n, struct qcom_icc_node *qn, - u64 sum_bw) -{ - int ret; - - if (!qn->qos.ap_owned) { - /* send bandwidth request message to the RPM processor */ - ret = qcom_icc_rpm_set(qn->mas_rpm_id, qn->slv_rpm_id, sum_bw); - if (ret) - return ret; - } else if (qn->qos.qos_mode != NOC_QOS_MODE_INVALID) { - /* set bandwidth directly from the AP */ - ret = qcom_icc_qos_set(n, sum_bw); - if (ret) - return ret; - } - - return 0; -} - /** * qcom_icc_pre_bw_aggregate - cleans up values before re-aggregate requests * @node: icc node to operate on @@ -370,11 +353,12 @@ static int qcom_icc_set(struct icc_node *src, struct icc_node *dst) sum_bw = icc_units_to_bps(max_agg_avg); - ret = __qcom_icc_set(src, src_qn, sum_bw); + ret = qcom_icc_rpm_set(src_qn, sum_bw); if (ret) return ret; + if (dst_qn) { - ret = __qcom_icc_set(dst, dst_qn, sum_bw); + ret = qcom_icc_rpm_set(dst_qn, sum_bw); if (ret) return ret; } @@ -528,6 +512,14 @@ int qnoc_probe(struct platform_device *pdev) for (j = 0; j < qnodes[i]->num_links; j++) icc_link_create(node, qnodes[i]->links[j]); + /* Set QoS registers (we only need to do it once, generally) */ + if (qnodes[i]->qos.ap_owned && + qnodes[i]->qos.qos_mode != NOC_QOS_MODE_INVALID) { + ret = qcom_icc_qos_set(node); + if (ret) + return ret; + } + data->nodes[i] = node; } data->num_nodes = num_nodes; From patchwork Fri Apr 7 20:14:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 671527 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 AEBD4C76196 for ; Fri, 7 Apr 2023 20:15:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229826AbjDGUO6 (ORCPT ); Fri, 7 Apr 2023 16:14:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37698 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229536AbjDGUOz (ORCPT ); Fri, 7 Apr 2023 16:14:55 -0400 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF67910F8 for ; Fri, 7 Apr 2023 13:14:52 -0700 (PDT) Received: by mail-lf1-x12f.google.com with SMTP id g19so42589935lfr.9 for ; Fri, 07 Apr 2023 13:14:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1680898492; 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=e5L4qO6sptV54f0r3fZ5sm9NYcIKr5uU7vIOhE3jPUY=; b=KRoccwvY9iA69vsgL79vikKueXuzVk2lCUlkshcNGY5+Zi1d5GQRf+phP6tWX7Ze7b zTh1DJcGfMaBgEBzRk5W56N8al/CLfA288RgU4heVycb1VFk8fZ8BdD5z3I2dHYugweh KRoasZ6/8T5AxXSgYqL81mA2qHmvgkS3TvhTEuDfK7VaADT0qNP5GWtLM96qQMSKhBzu tK2rXyd45yu25D4/eb7zN6bYWDilWSgZ9H8yq77Lv/z4mZ2IdAizZ5MKgkKuTQWzk8o8 CSfNRdwSE5Xsrz61vfyThEMShPXiZEBcRbeq8IJisVwzBZyaDJ/IYHhQN2EtdqKQN+gN 7Rbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680898492; 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=e5L4qO6sptV54f0r3fZ5sm9NYcIKr5uU7vIOhE3jPUY=; b=ku/6N8bUTGt7jTlLKffco8yxnIgQ3E/HIey8MRlOmseEirFMma7wxpjE9eEn34HXfa 6cp8hwuAlgUir6M5jtNp8twZ4g9KOsjsSVHSg7Vm78D5WHm5ZewZuv6M1BPN8XDosdn8 yc3e8l8QHLoZHM99mEOWsUsc55hLjyieMJHQNPdHOdgpIkBH6HH3v3eyl8paEt9MPECe wK7+C4slbrSCBR1LGV7bXKFeiLA7VZ0sr5bAoRqFBgvih/T3AeiB5tEwMbbTiqRT9BMa CqfKxOHzE3aAMFDCkMmeRt0+CTRlJv8N1ZcMMw9XQuc0uNGvzCtuJUZwsFku0BnQ6duR 6tmQ== X-Gm-Message-State: AAQBX9eBMq6HTFBFsZ47lDZHZYEGeGzX9YipaKRGnaeqtcTC5TBMLdHS Ky6BxcvCQ11J3WR/A2gppdn4/Q== X-Google-Smtp-Source: AKy350ZHvjOGZdykbEN99fX0cqIHIHR69XFmwVpsgMiQfL5C3ew4xTOWmEnn6s0F2ii6fHw4bn+yyg== X-Received: by 2002:ac2:5509:0:b0:4eb:18d:91df with SMTP id j9-20020ac25509000000b004eb018d91dfmr966362lfk.27.1680898492250; Fri, 07 Apr 2023 13:14:52 -0700 (PDT) Received: from [192.168.1.101] (abxh37.neoplus.adsl.tpnet.pl. [83.9.1.37]) by smtp.gmail.com with ESMTPSA id u3-20020ac243c3000000b004eaf6181a32sm842436lfl.75.2023.04.07.13.14.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 13:14:51 -0700 (PDT) From: Konrad Dybcio Date: Fri, 07 Apr 2023 22:14:47 +0200 Subject: [PATCH v8 5/8] interconnect: qcom: rpm: Handle interface clocks MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v8-5-ee696a2c15a9@linaro.org> References: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> In-Reply-To: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Marijn Suijten X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1680898484; l=8428; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=VP8quBVKpEptQIgT3Ham+bzqxwEHAFZBRJ/Y+InEks8=; b=lWQndPNnQQD6egbXgG0eBagLWLx9sNHAvZCstcObDRRoSN28CBrIgoU1iUYFq9MVNnJpRWGFEOH+ RUxiX3SuDbg3lXbZXrMFVdAqQZ51QW6Ioh7vsmKr6PnTaBfEA1EG X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Some (but not all) providers (or their specific nodes) require specific clocks to be turned on before they can be accessed. Failure to ensure that results in a seemingly random system crash (which would usually happen at boot with the interconnect driver built-in), resulting in the platform not booting up properly. Limit the number of bus_clocks to 2 (which is the maximum that SMD RPM interconnect supports anyway) and handle non-scaling clocks separately. Update MSM8996 and SDM660 drivers to make sure they do not regress with this change. This unfortunately has to be done in one patch to prevent either compile errors or broken bisect. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 40 ++++++++++++++++++++++++++++--------- drivers/interconnect/qcom/icc-rpm.h | 14 +++++++++++-- drivers/interconnect/qcom/msm8996.c | 22 +++++++++----------- drivers/interconnect/qcom/sdm660.c | 16 ++++++--------- 4 files changed, 58 insertions(+), 34 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index d79e508cb717..419b2122bebd 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -424,21 +424,20 @@ int qnoc_probe(struct platform_device *pdev) qnodes = desc->nodes; num_nodes = desc->num_nodes; - if (desc->num_bus_clocks) { - cds = desc->bus_clocks; - cd_num = desc->num_bus_clocks; + if (desc->num_intf_clocks) { + cds = desc->intf_clocks; + cd_num = desc->num_intf_clocks; } else { - cds = bus_clocks; - cd_num = ARRAY_SIZE(bus_clocks); + /* 0 intf clocks is perfectly fine */ + cd_num = 0; } - qp = devm_kzalloc(dev, struct_size(qp, bus_clks, cd_num), GFP_KERNEL); + qp = devm_kzalloc(dev, sizeof(*qp), GFP_KERNEL); if (!qp) return -ENOMEM; - qp->bus_clk_rate = devm_kcalloc(dev, cd_num, sizeof(*qp->bus_clk_rate), - GFP_KERNEL); - if (!qp->bus_clk_rate) + qp->intf_clks = devm_kzalloc(dev, sizeof(qp->intf_clks), GFP_KERNEL); + if (!qp->intf_clks) return -ENOMEM; data = devm_kzalloc(dev, struct_size(data, nodes, num_nodes), @@ -446,6 +445,18 @@ int qnoc_probe(struct platform_device *pdev) if (!data) return -ENOMEM; + qp->num_intf_clks = cd_num; + for (i = 0; i < cd_num; i++) + qp->intf_clks[i].id = cds[i]; + + if (desc->num_bus_clocks) { + cds = desc->bus_clocks; + cd_num = desc->num_bus_clocks; + } else { + cds = bus_clocks; + cd_num = ARRAY_SIZE(bus_clocks); + } + for (i = 0; i < cd_num; i++) qp->bus_clks[i].id = cds[i]; qp->num_bus_clks = cd_num; @@ -486,6 +497,10 @@ int qnoc_probe(struct platform_device *pdev) if (ret) return ret; + ret = devm_clk_bulk_get(dev, qp->num_intf_clks, qp->intf_clks); + if (ret) + return ret; + provider = &qp->provider; provider->dev = dev; provider->set = qcom_icc_set; @@ -496,6 +511,11 @@ int qnoc_probe(struct platform_device *pdev) icc_provider_init(provider); + /* If this fails, bus accesses will crash the platform! */ + ret = clk_bulk_prepare_enable(qp->num_intf_clks, qp->intf_clks); + if (ret) + return ret; + for (i = 0; i < num_nodes; i++) { size_t j; @@ -524,6 +544,8 @@ int qnoc_probe(struct platform_device *pdev) } data->num_nodes = num_nodes; + clk_bulk_disable_unprepare(qp->num_intf_clks, qp->intf_clks); + ret = icc_provider_register(provider); if (ret) goto err_remove_nodes; diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h index 2436777820a4..b9b63860042f 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -20,24 +20,32 @@ enum qcom_icc_type { QCOM_ICC_QNOC, }; +#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 + * @num_intf_clks: the total number of intf_clks clk_bulk_data entries * @type: the ICC provider type * @regmap: regmap for QoS registers read/write access * @qos_offset: offset to QoS registers * @bus_clk_rate: bus clock rate in Hz * @bus_clks: the clk_bulk_data table of bus clocks + * @intf_clks: a clk_bulk_data array of interface clocks + * @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; - struct clk_bulk_data bus_clks[]; + u64 bus_clk_rate[NUM_BUS_CLKS]; + struct clk_bulk_data bus_clks[NUM_BUS_CLKS]; + struct clk_bulk_data *intf_clks; + bool is_on; }; /** @@ -93,6 +101,8 @@ struct qcom_icc_desc { size_t num_nodes; const char * const *bus_clocks; size_t num_bus_clocks; + const char * const *intf_clocks; + size_t num_intf_clocks; 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/qcom/msm8996.c index 21f998cd19f0..9aedfc8de4bf 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -21,21 +21,17 @@ #include "smd-rpm.h" #include "msm8996.h" -static const char * const bus_mm_clocks[] = { - "bus", - "bus_a", +static const char * const mm_intf_clocks[] = { "iface" }; -static const char * const bus_a0noc_clocks[] = { +static const char * const a0noc_intf_clocks[] = { "aggre0_snoc_axi", "aggre0_cnoc_ahb", "aggre0_noc_mpu_cfg" }; -static const char * const bus_a2noc_clocks[] = { - "bus", - "bus_a", +static const char * const a2noc_intf_clocks[] = { "aggre2_ufs_axi", "ufs_axi" }; @@ -1821,8 +1817,8 @@ static const struct qcom_icc_desc msm8996_a0noc = { .type = QCOM_ICC_NOC, .nodes = a0noc_nodes, .num_nodes = ARRAY_SIZE(a0noc_nodes), - .bus_clocks = bus_a0noc_clocks, - .num_bus_clocks = ARRAY_SIZE(bus_a0noc_clocks), + .intf_clocks = a0noc_intf_clocks, + .num_intf_clocks = ARRAY_SIZE(a0noc_intf_clocks), .regmap_cfg = &msm8996_a0noc_regmap_config }; @@ -1865,8 +1861,8 @@ static const struct qcom_icc_desc msm8996_a2noc = { .type = QCOM_ICC_NOC, .nodes = a2noc_nodes, .num_nodes = ARRAY_SIZE(a2noc_nodes), - .bus_clocks = bus_a2noc_clocks, - .num_bus_clocks = ARRAY_SIZE(bus_a2noc_clocks), + .intf_clocks = a2noc_intf_clocks, + .num_intf_clocks = ARRAY_SIZE(a2noc_intf_clocks), .regmap_cfg = &msm8996_a2noc_regmap_config }; @@ -2004,8 +2000,8 @@ static const struct qcom_icc_desc msm8996_mnoc = { .type = QCOM_ICC_NOC, .nodes = mnoc_nodes, .num_nodes = ARRAY_SIZE(mnoc_nodes), - .bus_clocks = bus_mm_clocks, - .num_bus_clocks = ARRAY_SIZE(bus_mm_clocks), + .intf_clocks = mm_intf_clocks, + .num_intf_clocks = ARRAY_SIZE(mm_intf_clocks), .regmap_cfg = &msm8996_mnoc_regmap_config }; diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom/sdm660.c index a22ba821efbf..0e8a96f4ce90 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -127,15 +127,11 @@ enum { SDM660_SNOC, }; -static const char * const bus_mm_clocks[] = { - "bus", - "bus_a", +static const char * const mm_intf_clocks[] = { "iface", }; -static const char * const bus_a2noc_clocks[] = { - "bus", - "bus_a", +static const char * const a2noc_intf_clocks[] = { "ipa", "ufs_axi", "aggre2_ufs_axi", @@ -1516,8 +1512,8 @@ static const struct qcom_icc_desc sdm660_a2noc = { .type = QCOM_ICC_NOC, .nodes = sdm660_a2noc_nodes, .num_nodes = ARRAY_SIZE(sdm660_a2noc_nodes), - .bus_clocks = bus_a2noc_clocks, - .num_bus_clocks = ARRAY_SIZE(bus_a2noc_clocks), + .intf_clocks = a2noc_intf_clocks, + .num_intf_clocks = ARRAY_SIZE(a2noc_intf_clocks), .regmap_cfg = &sdm660_a2noc_regmap_config, }; @@ -1659,8 +1655,8 @@ static const struct qcom_icc_desc sdm660_mnoc = { .type = QCOM_ICC_NOC, .nodes = sdm660_mnoc_nodes, .num_nodes = ARRAY_SIZE(sdm660_mnoc_nodes), - .bus_clocks = bus_mm_clocks, - .num_bus_clocks = ARRAY_SIZE(bus_mm_clocks), + .intf_clocks = mm_intf_clocks, + .num_intf_clocks = ARRAY_SIZE(mm_intf_clocks), .regmap_cfg = &sdm660_mnoc_regmap_config, }; From patchwork Fri Apr 7 20:14:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 671526 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 0B0B6C6FD1D for ; Fri, 7 Apr 2023 20:15:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229917AbjDGUPS (ORCPT ); Fri, 7 Apr 2023 16:15:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38196 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229893AbjDGUPD (ORCPT ); Fri, 7 Apr 2023 16:15:03 -0400 Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1649CC15D for ; Fri, 7 Apr 2023 13:14:55 -0700 (PDT) Received: by mail-lf1-x132.google.com with SMTP id j11so55659595lfg.13 for ; Fri, 07 Apr 2023 13:14:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1680898493; 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=/s0KyzdHFTaVpYD3IHUwfb488kPSo+jQrOYqwaSsIUo=; b=go4r5JVihkQQblcQ4G5vxq1Z0CTXFplgVnHfahcsO8nR/B1ptHYm91GmmGlMpDQ7L1 rmlKWBodPxKXH+W9vuYaCVgWpH0QFFTYSCFlr+KqCTr7nW0nHpTxNNIvAz6XS6dbFzIj OrLrVfvoZqQMEh8TWSYuBDsVA8fr9+gT5tgfMKg2wJMha0hGRgnNUFpE5lGsm1litlw6 3M65vjMLT+bu3AUKPIF8p9WF9THinPrhVewKIB9rZOdbomsf2wup4ps34/jvqUOq04BN z7Btvbts00hkZshq1yfN9JS3zmDv3QiOxtuVfmTpNUpfFJMuIJxtV4X50E2+IzM2giuC 62Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680898493; 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=/s0KyzdHFTaVpYD3IHUwfb488kPSo+jQrOYqwaSsIUo=; b=uH3DMutJ1OuFMwcH9tIuQmc2EPUlvrf5DT1V//fCtqqOH07bJrorwgs+gWur+wqWRG VYLvX2fNYzQql9pw6lUMDeiCnbyD9E0pLcCRswkFiPXGPwCFRSfnAVv8eTF0PN64DnH5 eghhDnyCTy/+8mpGFiRz1vl4hx2vXTEBWycvP3P/+A17akWX2tdTcU2ii6buC5PVDm1O igKsaZvAuDDGXC1YIcOjipUhBxIcDtHSB4DKUcymFT6aye2wX/bClshIG5D0rsw1KVWZ cecsyw2g+YEDgAHqgNT1mfhn0PmO55KLpR43NL3o4/BpPoUYtYKcTz1b/cUCr+m8U4Eb 9Vag== X-Gm-Message-State: AAQBX9cAuLBy0zPdwqGLEJ9tTwGR7p2G/wNLCJBTjAErjDzCuUYy+Dx/ 6AwwS7G3gSLyoSENVp/QlDvzEg== X-Google-Smtp-Source: AKy350bGyQKWhCW5Eao8Dm5teRNJIhdmfgCuZntokOV5aWEJ22B+mRGDLm+lSCXuKd33DdvgKmBAPg== X-Received: by 2002:ac2:5206:0:b0:4ea:e5b9:23b7 with SMTP id a6-20020ac25206000000b004eae5b923b7mr977487lfl.2.1680898493438; Fri, 07 Apr 2023 13:14:53 -0700 (PDT) Received: from [192.168.1.101] (abxh37.neoplus.adsl.tpnet.pl. [83.9.1.37]) by smtp.gmail.com with ESMTPSA id u3-20020ac243c3000000b004eaf6181a32sm842436lfl.75.2023.04.07.13.14.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 13:14:53 -0700 (PDT) From: Konrad Dybcio Date: Fri, 07 Apr 2023 22:14:48 +0200 Subject: [PATCH v8 6/8] interconnect: qcom: icc-rpm: Enforce 2 or 0 bus clocks MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v8-6-ee696a2c15a9@linaro.org> References: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> In-Reply-To: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Marijn Suijten X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1680898484; l=3952; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=EgGK1x1RiyMgrD2kZYQgSem5RplbiqiH4kze2S62h0k=; b=xty6z7PfiH/CbAPnqHCmo4YWPMSsd33Dcs7tw9vP/lU5oKLxwXOGUvNTb4Lm4uHteS3vgpSnKfaL cLdTZumjANz0+KqISWa2bYzQ9nhVoOEwlMn8TiHfXXRP6eW2QxlQ X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org For SMD RPM bus scaling to work, we need a pair of sleep-wake clocks. The variable number of them we previously supported was only a hack to keep the clocks required for QoS register access, but now that these are separated, we can leave bus_clks to the actual bus clocks. In cases where there is no actual bus scaling (such as A0NoC on MSM8996 and GNoC on SDM660 where the HLOS is only supposed to program the QoS registers and the bus is either static or controlled remotely), allow for no clock scaling with a boolean property. Remove all the code related to allowing an arbitrary number of bus_clks, replace the number by BUS_CLK_MAX (= 2) and guard the bus clock paths to ensure they are not taken on non-scaling buses. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 14 +++----------- drivers/interconnect/qcom/icc-rpm.h | 4 ++-- drivers/interconnect/qcom/msm8996.c | 1 + drivers/interconnect/qcom/sdm660.c | 1 + 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index 419b2122bebd..2298eb019534 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -449,17 +449,9 @@ int qnoc_probe(struct platform_device *pdev) for (i = 0; i < cd_num; i++) qp->intf_clks[i].id = cds[i]; - if (desc->num_bus_clocks) { - cds = desc->bus_clocks; - cd_num = desc->num_bus_clocks; - } else { - cds = bus_clocks; - cd_num = ARRAY_SIZE(bus_clocks); - } - - for (i = 0; i < cd_num; i++) - qp->bus_clks[i].id = cds[i]; - qp->num_bus_clks = cd_num; + qp->num_bus_clks = desc->no_clk_scaling ? 0 : NUM_BUS_CLKS; + for (i = 0; i < qp->num_bus_clks; i++) + qp->bus_clks[i].id = bus_clocks[i]; qp->type = desc->type; qp->qos_offset = desc->qos_offset; diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h index b9b63860042f..ee705edf19dd 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -25,7 +25,7 @@ enum qcom_icc_type { /** * 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 + * @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 @@ -100,9 +100,9 @@ struct qcom_icc_desc { struct qcom_icc_node * const *nodes; size_t num_nodes; const char * const *bus_clocks; - size_t num_bus_clocks; const char * const *intf_clocks; size_t num_intf_clocks; + 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/qcom/msm8996.c index 9aedfc8de4bf..dc9959a87df2 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -1819,6 +1819,7 @@ static const struct qcom_icc_desc msm8996_a0noc = { .num_nodes = ARRAY_SIZE(a0noc_nodes), .intf_clocks = a0noc_intf_clocks, .num_intf_clocks = ARRAY_SIZE(a0noc_intf_clocks), + .no_clk_scaling = true, .regmap_cfg = &msm8996_a0noc_regmap_config }; diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom/sdm660.c index 0e8a96f4ce90..7ffaf70d62d3 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -1616,6 +1616,7 @@ static const struct qcom_icc_desc sdm660_gnoc = { .nodes = sdm660_gnoc_nodes, .num_nodes = ARRAY_SIZE(sdm660_gnoc_nodes), .regmap_cfg = &sdm660_gnoc_regmap_config, + .no_clk_scaling = true, }; static struct qcom_icc_node * const sdm660_mnoc_nodes[] = { From patchwork Fri Apr 7 20:14:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 671091 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 AFE64C76196 for ; Fri, 7 Apr 2023 20:15:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229893AbjDGUPT (ORCPT ); Fri, 7 Apr 2023 16:15:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229992AbjDGUPD (ORCPT ); Fri, 7 Apr 2023 16:15:03 -0400 Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84A1910F8 for ; Fri, 7 Apr 2023 13:14:55 -0700 (PDT) Received: by mail-lf1-x136.google.com with SMTP id y20so55741795lfj.2 for ; Fri, 07 Apr 2023 13:14:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1680898495; 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=JmxVQOr0UERcZ1YMRZsASK3EItYYsfIdBLZTNEGU6JM=; b=TS8/QvzEVoiAydjEqS6eJXS9sWglXo50esu9QCI7gS7JP4MWoc3Wu/G+seMqtUy5sA 9BdKLgLAmu4Pzch+SbNpRW6sORsloB20w1juxxbrCncxb0/R+JbkkwwEo19uvOLJg2UL tWuevGu2VWU/xw268YcUZDHr4BxXgGEScQTw9FfUY9XwFmN1JdvmBPbKv6KNl6FKgj5V QR2Pnt0W8FyHoIuUigpEkSR1lPmMgMm+KyGhRuR+N9worgahzeX0VlyCZp/guGpEwjVc t1HxEBz9Ya5UO+oxGdOUmjhNrkmJoUM21bpqgLXA4YSLJ3lxVrrEWzqzAiL9kBr5WoIL Wi2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680898495; 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=JmxVQOr0UERcZ1YMRZsASK3EItYYsfIdBLZTNEGU6JM=; b=DZyhFba1s06DVt0DwPdeO3Jxxm2TnSG+mYKw1CRpPJnjvnQek/hEG3AMJT1Rd4BiIT EqkHywvqJLAxVBYO809B7p73vYUdCj2rEjoC6ZNtX50tqsw8z6kamz3LdEMllT0tII/Q gT/2IjcfYPKwhVofdzORUr/3a+Kiz4mm659SOqBV0MUm1Pmc3GCQYwVNRXcEbLoHxCAC coB4GvKC2tIa6t5kCHPjO1YeUwEs5fyWO7v6qs8yz86XFbxPGV+Cl4ICLsmu1zhoURqh BnN4LweH7OdnUScRAtdlfAWdSQ8MY0LRyhqUp4HVKGb0frMpUM3PlODO2tMSPMV4IfEs QINw== X-Gm-Message-State: AAQBX9fjGeFc4XfbkKlvOnuq+Aj8PFM3c4Kg3I5GzBgnSbyZdbumapwk jfSWcJPkOCj9nII34EwV2khKLw== X-Google-Smtp-Source: AKy350YyHJIyKc3/d2iLB1M17ZVsvrOCHCOByd0pZKgdZllWkpjHXkPQFFgwmURpWpKwz1EwyXHksg== X-Received: by 2002:a19:ac09:0:b0:4ea:f69a:de37 with SMTP id g9-20020a19ac09000000b004eaf69ade37mr938788lfc.42.1680898495005; Fri, 07 Apr 2023 13:14:55 -0700 (PDT) Received: from [192.168.1.101] (abxh37.neoplus.adsl.tpnet.pl. [83.9.1.37]) by smtp.gmail.com with ESMTPSA id u3-20020ac243c3000000b004eaf6181a32sm842436lfl.75.2023.04.07.13.14.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 13:14:54 -0700 (PDT) From: Konrad Dybcio Date: Fri, 07 Apr 2023 22:14:49 +0200 Subject: [PATCH v8 7/8] interconnect: qcom: rpm: Don't use clk_get_optional for bus clocks anymore MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v8-7-ee696a2c15a9@linaro.org> References: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> In-Reply-To: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Marijn Suijten X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1680898484; l=1105; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=ntGrIMziVYgfLiYwCKCTYabEq/yl5ewVMN3vP4/MQz8=; b=yfoAQc12tdXVQVdF6BOEuXj1J5vomOdNVpPVKYFlfaqUid1lCYeXUIaJE/6idY0Vg0osvkV6wzMQ PD95zQvvBAALR9xRzuU80Cy8R87AVhOySBmjYUso70sFcN1gLUIg X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Commit dd42ec8ea5b9 ("interconnect: qcom: rpm: Use _optional func for provider clocks") relaxed the requirements around probing bus clocks. This was a decent solution for making sure MSM8996 would still boot with old DTs, but now that there's a proper fix in place that both old and new DTs will be happy about, revert back to the safer variant of the function. Fixes: dd42ec8ea5b9 ("interconnect: qcom: rpm: Use _optional func for provider clocks") Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index 2298eb019534..8c1beae13860 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -481,7 +481,7 @@ int qnoc_probe(struct platform_device *pdev) } regmap_done: - ret = devm_clk_bulk_get_optional(dev, qp->num_bus_clks, qp->bus_clks); + ret = devm_clk_bulk_get(dev, qp->num_bus_clks, qp->bus_clks); if (ret) return ret; From patchwork Fri Apr 7 20:14:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 671090 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 CC9F9C6FD1D for ; Fri, 7 Apr 2023 20:15:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230359AbjDGUPZ (ORCPT ); Fri, 7 Apr 2023 16:15:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38170 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230091AbjDGUPM (ORCPT ); Fri, 7 Apr 2023 16:15:12 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B18C2BDDD for ; Fri, 7 Apr 2023 13:14:56 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id j11so55659692lfg.13 for ; Fri, 07 Apr 2023 13:14:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1680898496; 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=UK324XxVLyW7Zcb2CZ/1jAhmypGps1orFHLyigBwr5Y=; b=yqZEBUvNVCoCG1kYbv6BCn4D0Qcr92VlfzKmglVvZYkEdbsKkM9eX6zrAes/n5toqv Qu4xR1oXPF3iW2PlmWZM4PiNnoYT7pHivkuEumgtKq5oW0+xNraiZVR+iFd5Ap7YE0Md UkYReMEbtTgol8JUCdn1e8AY4R+sRqVF/1vPdymDn8yog1HL/noqOd4oUik9koaXGWDM aJxPdG1AYb7uanLSnaNK9gtfH0YsPqphnes0NrEHCEV34cS1XsFJH7f1pxDIx4dyQ3nS Usmcqh5IhlWzI049CC/jJCuLBE7JkBk6R0LE1A9G8lLMyhYBGzmc+c9y9yqTy0CEw844 RMbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680898496; 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=UK324XxVLyW7Zcb2CZ/1jAhmypGps1orFHLyigBwr5Y=; b=GQW5qMsthg75Lz5uv8rhajfkW2g7jdmm9r1CONRCwB8BJ8Xs6lRVt0CSg7Qrq4GBAv b5F5GjFb9B9K+Gf1G2usrdIMe2ug+tOWUQN08Hw3TCY+eF0/nh+PJlbRJVlHNN2EKwNa 8IcXdr+JnCFSs/x/4esr9BaMVEjg17pkTlY5sQPEZ31U6fVZNEfg1JbIbplpW+9BH3F8 Atce5UcyZ7SGwh+NS/swQjmlBMmkCX2LyyiCKp0p4sgWBJQNrVifYRKAMJ/m5PHJVhZ8 HoaxPJXC1iJ0n6Xfr1Y58ib4OEMlWjfpp9hupwi1KQTJobJNoUUs/PrnJIr2NtN2xhHo 6Pcg== X-Gm-Message-State: AAQBX9exQo9Qsx2LCJEjObFnXYZOYAtt3Qi5bRodYukQ3nbusBVA4IUm xRQsz7PfM+yHEU3UHCX5D4oR5g== X-Google-Smtp-Source: AKy350ZqCC2EWpi54zjCAZha/wQjOAUazAPsrcEJ8ES8x2YGJmj/5Oaf+q9Y20lANUCgsRiqOL1KlA== X-Received: by 2002:ac2:48b1:0:b0:4db:513b:6ef4 with SMTP id u17-20020ac248b1000000b004db513b6ef4mr1437520lfg.11.1680898496200; Fri, 07 Apr 2023 13:14:56 -0700 (PDT) Received: from [192.168.1.101] (abxh37.neoplus.adsl.tpnet.pl. [83.9.1.37]) by smtp.gmail.com with ESMTPSA id u3-20020ac243c3000000b004eaf6181a32sm842436lfl.75.2023.04.07.13.14.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 13:14:55 -0700 (PDT) From: Konrad Dybcio Date: Fri, 07 Apr 2023 22:14:50 +0200 Subject: [PATCH v8 8/8] interconnect: qcom: msm8996: Promote to core_initcall MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v8-8-ee696a2c15a9@linaro.org> References: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> In-Reply-To: <20230228-topic-qos-v8-0-ee696a2c15a9@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Marijn Suijten X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1680898484; l=1279; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=BYfX0jKxH/0PCjBpNTo0aggPX+DBVTo1e00pUoIo7lE=; b=Q3wauYfS7gq5URur71wgmqfygzW5MSoxMThsPbY1kwefMc+i7/CpNJfllJopgOxt5+m5bsnSWzun FU/S2NiNDMRstqmR5b2r2pmOwfx7MCLGGf7tcxHLHdcPc7OV9ijd X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org The interconnect driver is (or soon will be) vital to many other devices, as it's not a given that the bootloader will set up enough bandwidth for us or that the values we come into are reasonable. Promote the driver to core_initcall to ensure the consumers (i.e. most "meaningful" parts of the SoC) can probe without deferrals. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/msm8996.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/interconnect/qcom/msm8996.c b/drivers/interconnect/qcom/msm8996.c index dc9959a87df2..20340fb62fe6 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -2108,7 +2108,17 @@ static struct platform_driver qnoc_driver = { .sync_state = icc_sync_state, } }; -module_platform_driver(qnoc_driver); +static int __init qnoc_driver_init(void) +{ + return platform_driver_register(&qnoc_driver); +} +core_initcall(qnoc_driver_init); + +static void __exit qnoc_driver_exit(void) +{ + platform_driver_unregister(&qnoc_driver); +} +module_exit(qnoc_driver_exit); MODULE_AUTHOR("Yassine Oudjana "); MODULE_DESCRIPTION("Qualcomm MSM8996 NoC driver");