All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Dybcio <konrad.dybcio@linaro.org>
To: Andy Gross <agross@kernel.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>,
	Georgi Djakov <djakov@kernel.org>, Leo Yan <leo.yan@linaro.org>,
	Evan Green <evgreen@chromium.org>,
	Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Conor Dooley <conor+dt@kernel.org>
Cc: Marijn Suijten <marijn.suijten@somainline.org>,
	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 <konrad.dybcio@linaro.org>
Subject: [PATCH v3 07/23] interconnect: qcom: icc-rpm: Allow negative QoS offset
Date: Mon, 12 Jun 2023 20:24:24 +0200	[thread overview]
Message-ID: <20230526-topic-smd_icc-v3-7-5fb7d39b874f@linaro.org> (raw)
In-Reply-To: <20230526-topic-smd_icc-v3-0-5fb7d39b874f@linaro.org>

In some very very very very unfortunate cases, the correct offset of
the QoS registers will be.. negative. One such case is MSM8998, where
The DDR BWMON occupies what-would-be-the-BIMC-base which we usually
take into account with the register calculation, making the actual
BIMC node start at what-would-be-the-BIMC-base+0x300.

In order to keep the calculation code sane, the simplest - however
ugly it may be - solution is to allow the offset to be negative.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 drivers/interconnect/qcom/icc-rpm.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h
index d2c04c400cad..ba840a436cc0 100644
--- a/drivers/interconnect/qcom/icc-rpm.h
+++ b/drivers/interconnect/qcom/icc-rpm.h
@@ -29,10 +29,10 @@ enum qcom_icc_type {
  * @num_intf_clks: the total number of intf_clks clk_bulk_data entries
  * @type: the ICC provider type
  * @regmap: regmap for QoS registers read/write access
- * @qos_offset: offset to QoS registers
  * @bus_clk_rate: bus clock rate in Hz
  * @bus_clks: the clk_bulk_data table of bus clocks
  * @intf_clks: a clk_bulk_data array of interface clocks
+ * @qos_offset: offset to QoS registers
  * @keep_alive: whether to always keep a minimum vote on the bus clocks
  * @is_on: whether the bus is powered on
  */
@@ -42,7 +42,7 @@ struct qcom_icc_provider {
 	int num_intf_clks;
 	enum qcom_icc_type type;
 	struct regmap *regmap;
-	unsigned int qos_offset;
+	int qos_offset;
 	u64 bus_clk_rate[NUM_BUS_CLKS];
 	struct clk_bulk_data bus_clks[NUM_BUS_CLKS];
 	struct clk_bulk_data *intf_clks;
@@ -108,7 +108,7 @@ struct qcom_icc_desc {
 	bool no_clk_scaling;
 	enum qcom_icc_type type;
 	const struct regmap_config *regmap_cfg;
-	unsigned int qos_offset;
+	int qos_offset;
 };
 
 /* Valid for all bus types */

-- 
2.41.0


  parent reply	other threads:[~2023-06-12 18:30 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-12 18:24 [PATCH v3 00/23] Restructure RPM SMD ICC Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 01/23] dt-bindings: interconnect: Add Qcom RPM ICC bindings Konrad Dybcio
2023-06-13 11:11   ` Stephan Gerhold
2023-06-13 11:20     ` Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 02/23] soc: qcom: smd-rpm: Add QCOM_SMD_RPM_STATE_NUM Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 03/23] soc: qcom: smd-rpm: Use tabs for defines Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 04/23] clk: qcom: smd-rpm: Move some RPM resources to the common header Konrad Dybcio
2023-06-12 19:36   ` Stephen Boyd
2023-06-12 18:24 ` [PATCH v3 05/23] soc: qcom: smd-rpm: Move icc_smd_rpm registration to clk-smd-rpm Konrad Dybcio
2023-06-12 19:41   ` Stephen Boyd
2023-06-12 18:24 ` [PATCH v3 06/23] interconnect: qcom: icc-rpm: Introduce keep_alive Konrad Dybcio
2023-06-12 18:24 ` Konrad Dybcio [this message]
2023-06-12 20:27   ` [PATCH v3 07/23] interconnect: qcom: icc-rpm: Allow negative QoS offset Stephan Gerhold
2023-06-13 12:12     ` Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 08/23] interconnect: qcom: Fold smd-rpm.h into icc-rpm.h Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 09/23] interconnect: qcom: smd-rpm: Add rpmcc handling skeleton code Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 10/23] interconnect: qcom: Add missing headers in icc-rpm.h Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 11/23] interconnect: qcom: Define RPM bus clocks Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 12/23] interconnect: qcom: sdm660: Hook up RPM bus clk definitions Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 13/23] interconnect: qcom: msm8996: " Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 14/23] interconnect: qcom: qcs404: " Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 15/23] interconnect: qcom: msm8939: " Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 16/23] interconnect: qcom: msm8916: " Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 17/23] interconnect: qcom: qcm2290: " Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 18/23] interconnect: qcom: icc-rpm: Control bus rpmcc from icc Konrad Dybcio
2023-06-12 20:54   ` Stephan Gerhold
2023-06-13 11:22     ` Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 19/23] clk: qcom: smd-rpm: Separate out interconnect bus clocks Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 20/23] interconnect: qcom: icc-rpm: Fix bucket number Konrad Dybcio
2023-06-12 20:57   ` Stephan Gerhold
2023-06-13  9:06     ` Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 21/23] interconnect: qcom: icc-rpm: Set bandwidth on both contexts Konrad Dybcio
2023-06-12 21:00   ` Stephan Gerhold
2023-06-12 18:24 ` [PATCH v3 22/23] interconnect: qcom: icc-rpm: Set correct bandwidth through RPM bw req Konrad Dybcio
2023-06-12 18:24 ` [PATCH v3 23/23] interconnect: qcom: icc-rpm: Fix bandwidth calculations Konrad Dybcio

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230526-topic-smd_icc-v3-7-5fb7d39b874f@linaro.org \
    --to=konrad.dybcio@linaro.org \
    --cc=agross@kernel.org \
    --cc=andersson@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=djakov@kernel.org \
    --cc=evgreen@chromium.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=marijn.suijten@somainline.org \
    --cc=mturquette@baylibre.com \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.