Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp517005pxb; Mon, 16 Aug 2021 10:36:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxPiC3Eu7VQE9SMOsatWJVrUp1Kt50KzBZNyAoC8MVa4w7sYpkZvE8GV00OdzcPVVuq0MQp X-Received: by 2002:a92:c0ce:: with SMTP id t14mr12452641ilf.72.1629135392341; Mon, 16 Aug 2021 10:36:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629135392; cv=none; d=google.com; s=arc-20160816; b=dqmgdVM0XJ4qHQJiQT7/s7b/rcUFAjCzz5a44ye6Qw1LCRRs3nSui78tGk4H6gk/4j h25i4thQZCOBN5XyqauDmGh6edDpw1XlGNomD9zJz/l5wuDdNqPuJTAJPFxvDkn2V8Pw RaOb5MVvcJVPNxQ5A3kKwsLgC/0N+OP3ooFoqeAuAaaCMoqriQdUreyMn36C3A+FvT6E MVCtmpUWQh/IfadGnCByoh7OJffuum1ea72jHv+XkEFgOsZwMx4QGhwVyb0PMH8uonYL ts2Pl5QlXl7MmdXDT7A4cV+FPrrklMLFnEY4/AcT2+7HY/huPISIPKoQ7LpVbIcUEqbb uzmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:message-id:references:in-reply-to :subject:cc:to:from:date:content-transfer-encoding:mime-version :sender:dkim-signature; bh=qNlRTEofxEuTWEpTGP1/1u9Fi6z/2vUJGRHKwDjc23k=; b=BBl9CsypcotOhjzMTf/edW+mSCAYpJ/WonTdUaAFzkHd2IPR1fInrNPpES90kiQ/LT 0jocsrv16hsJs218GT9KJcw9EBRNvzv4Cr7afFw3YFXifjqvFRQTaeO0aLbiX2eJfW9+ MWvwGhxAR8ZVy1hSpm+RG2KFygq/vKjhXDoFVgA95asl3tL1Hy18nazv8DbIlrTPyiYB /tfKf19V5fzDFNlInMVluosufwf3tNNZ6tGYbfoqz0XuNIxUJXcncsodNPawLQ2HSUFB Dgy7IGWSvHPvFaxCFev7pNjPKl/IWslL/bh87/BQlpE1ZI/mQCrX2J5oIACLACPpgn1r oUYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=wxnCmen4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k8si12138792jaa.51.2021.08.16.10.36.19; Mon, 16 Aug 2021 10:36:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=wxnCmen4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231639AbhHPRfx (ORCPT + 99 others); Mon, 16 Aug 2021 13:35:53 -0400 Received: from so254-9.mailgun.net ([198.61.254.9]:18589 "EHLO so254-9.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231861AbhHPRfw (ORCPT ); Mon, 16 Aug 2021 13:35:52 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1629135319; h=Message-ID: References: In-Reply-To: Subject: Cc: To: From: Date: Content-Transfer-Encoding: Content-Type: MIME-Version: Sender; bh=qNlRTEofxEuTWEpTGP1/1u9Fi6z/2vUJGRHKwDjc23k=; b=wxnCmen4enjaLKk9X278QGE4DPncDIpjq+khqqPiEjGPGuyEbuA43mJnGmK4V3Sa1/FT6fq+ /SpIiFZRtxWwapfhVk3wv/7DphdENCk5fNPucW1a1eTILR7wk2nZgXuA+FOK+2Qy8OkGZUIB ZP2fI0HPTQCBtFXTm/VL68uesoo= X-Mailgun-Sending-Ip: 198.61.254.9 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n05.prod.us-east-1.postgun.com with SMTP id 611aa1b891487ad52008caae (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Mon, 16 Aug 2021 17:34:48 GMT Sender: okukatla=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 16E2AC4360D; Mon, 16 Aug 2021 17:34:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.codeaurora.org (localhost.localdomain [127.0.0.1]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: okukatla) by smtp.codeaurora.org (Postfix) with ESMTPSA id B4A56C4338F; Mon, 16 Aug 2021 17:34:44 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Mon, 16 Aug 2021 23:04:44 +0530 From: okukatla@codeaurora.org To: Georgi Djakov Cc: georgi.djakov@linaro.org, bjorn.andersson@linaro.org, evgreen@google.com, Andy Gross , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, sboyd@kernel.org, mdtipton@codeaurora.org, sibis@codeaurora.org, saravanak@google.com, seansw@qti.qualcomm.com, elder@linaro.org, linux-arm-msm-owner@vger.kernel.org Subject: Re: [v6 2/3] interconnect: qcom: Add EPSS L3 support on SC7280 In-Reply-To: References: <1628577962-3995-1-git-send-email-okukatla@codeaurora.org> <1628577962-3995-3-git-send-email-okukatla@codeaurora.org> Message-ID: X-Sender: okukatla@codeaurora.org User-Agent: Roundcube Webmail/1.3.9 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2021-08-10 17:28, Georgi Djakov wrote: > Hi Odelu, > > On 10.08.21 9:46, Odelu Kukatla wrote: >> Add Epoch Subsystem (EPSS) L3 interconnect provider support on >> SC7280 SoCs. >> >> Signed-off-by: Odelu Kukatla >> --- >> drivers/interconnect/qcom/osm-l3.c | 136 >> +++++++++++++++++++++++++++++++------ >> drivers/interconnect/qcom/sc7280.h | 10 +++ >> 2 files changed, 125 insertions(+), 21 deletions(-) >> >> diff --git a/drivers/interconnect/qcom/osm-l3.c >> b/drivers/interconnect/qcom/osm-l3.c >> index c7af143..3b16e73 100644 >> --- a/drivers/interconnect/qcom/osm-l3.c >> +++ b/drivers/interconnect/qcom/osm-l3.c >> @@ -9,12 +9,14 @@ >> #include >> #include >> #include >> +#include >> #include >> #include >> #include >> #include "sc7180.h" >> +#include "sc7280.h" >> #include "sc8180x.h" >> #include "sdm845.h" >> #include "sm8150.h" >> @@ -33,17 +35,33 @@ >> /* EPSS Register offsets */ >> #define EPSS_LUT_ROW_SIZE 4 >> +#define EPSS_REG_L3_VOTE 0x90 >> #define EPSS_REG_FREQ_LUT 0x100 >> #define EPSS_REG_PERF_STATE 0x320 >> +#define EPSS_CORE_OFFSET 0x4 >> +#define EPSS_L3_VOTE_REG(base, cpu)\ >> + (((base) + EPSS_REG_L3_VOTE) +\ >> + ((cpu) * EPSS_CORE_OFFSET)) >> -#define OSM_L3_MAX_LINKS 1 >> +#define L3_DOMAIN_CNT 4 >> +#define L3_MAX_LINKS 9 >> #define to_osm_l3_provider(_provider) \ >> container_of(_provider, struct qcom_osm_l3_icc_provider, provider) >> +/** >> + * @domain_base: an array of base address for each clock domain > > This is not a valid kerneldoc. Please add a title for > struct qcom_osm_l3_icc_provider > Thanks for review! will address this in next revision. >> + * @max_state: max supported frequency level >> + * @per_core_dcvs: flag used to indicate whether the frequency >> scaling >> + * for each core is enabled >> + * @reg_perf_state: requested frequency level >> + * @lut_tables: an array of supported frequency levels >> + * @provider: interconnect provider of this node >> + */ >> struct qcom_osm_l3_icc_provider { >> - void __iomem *base; >> + void __iomem *domain_base[L3_DOMAIN_CNT]; >> unsigned int max_state; >> + bool per_core_dcvs; >> unsigned int reg_perf_state; >> unsigned long lut_tables[LUT_MAX_ENTRIES]; >> struct icc_provider provider; >> @@ -56,32 +74,44 @@ struct qcom_osm_l3_icc_provider { >> * @id: a unique node identifier >> * @num_links: the total number of @links >> * @buswidth: width of the interconnect between a node and the bus >> + * @domain: clock domain of the cpu node >> + * @cpu: cpu instance within its clock domain >> */ >> struct qcom_osm_l3_node { >> const char *name; >> - u16 links[OSM_L3_MAX_LINKS]; >> + u16 links[L3_MAX_LINKS]; >> u16 id; >> u16 num_links; >> u16 buswidth; >> + u8 domain; >> + u8 cpu; >> }; >> struct qcom_osm_l3_desc { >> const struct qcom_osm_l3_node **nodes; >> size_t num_nodes; >> + bool per_core_dcvs; >> unsigned int lut_row_size; >> unsigned int reg_freq_lut; >> unsigned int reg_perf_state; >> }; >> -#define DEFINE_QNODE(_name, _id, _buswidth, ...) \ >> +#define __DEFINE_QNODE(_name, _id, _buswidth, _domain, _cpu, ...) \ >> static const struct qcom_osm_l3_node _name = { \ >> .name = #_name, \ >> .id = _id, \ >> .buswidth = _buswidth, \ >> + .domain = _domain, \ >> + .cpu = _cpu, \ >> .num_links = ARRAY_SIZE(((int[]){ __VA_ARGS__ })), \ >> .links = { __VA_ARGS__ }, \ >> } >> +#define DEFINE_QNODE(_name, _id, _buswidth, ...) \ >> + __DEFINE_QNODE(_name, _id, _buswidth, 0, 0, __VA_ARGS__ ) > > Nit: No space before the close parenthesis please. > Thanks for review! will address this in next revision. >> +#define DEFINE_DCVS_QNODE(_name, _id, _buswidth, _domain, _cpu, >> ...) \ >> + __DEFINE_QNODE(_name, _id, _buswidth, _domain, _cpu, __VA_ARGS__ ) > > Ditto > >> + >> DEFINE_QNODE(sdm845_osm_apps_l3, SDM845_MASTER_OSM_L3_APPS, 16, >> SDM845_SLAVE_OSM_L3); >> DEFINE_QNODE(sdm845_osm_l3, SDM845_SLAVE_OSM_L3, 16); >> @@ -162,26 +192,80 @@ static const struct qcom_osm_l3_desc >> sm8250_icc_epss_l3 = { >> .reg_perf_state = EPSS_REG_PERF_STATE, >> }; >> +DEFINE_DCVS_QNODE(sc7280_epss_apps_l3, SC7280_MASTER_EPSS_L3_APPS, >> 32, 0, 0, >> + SC7280_SLAVE_EPSS_L3_SHARED, SC7280_SLAVE_EPSS_L3_CPU0, >> + SC7280_SLAVE_EPSS_L3_CPU1, SC7280_SLAVE_EPSS_L3_CPU2, >> + SC7280_SLAVE_EPSS_L3_CPU3, SC7280_SLAVE_EPSS_L3_CPU4, >> + SC7280_SLAVE_EPSS_L3_CPU5, SC7280_SLAVE_EPSS_L3_CPU6, >> + SC7280_SLAVE_EPSS_L3_CPU7); > > Nit: Please align these to the open parenthesis. > Thanks for review! will address this in next revision. > Thanks, > Georgi