Re: [PATCH 06/20] interconnect: qcom: icc-rpm: Allow negative QoS offset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 30/05/2023 13:20, Konrad Dybcio wrote:
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.

Can we turn one of devices into a child of another device? This way we won't have to cope with negative offsets.


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@xxxxxxxxxx>
---
  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

This can be kept in place.

   * @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 */


--
With best wishes
Dmitry




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux