From mboxrd@z Thu Jan 1 00:00:00 1970 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 2E74AC7EE23 for ; Thu, 1 Jun 2023 10:00:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232716AbjFAKAY (ORCPT ); Thu, 1 Jun 2023 06:00:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233158AbjFAJ7s (ORCPT ); Thu, 1 Jun 2023 05:59:48 -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 EFC2CE57 for ; Thu, 1 Jun 2023 02:59:31 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2af2b74d258so8202361fa.3 for ; Thu, 01 Jun 2023 02:59:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685613570; x=1688205570; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=HN21BG58AfImMRbIzQqnR4MJn123ou4OXBSQhZXZJpo=; b=vCO9E1uPKpO9yLIAHGAEJ9N48lliL1A2VNE+1C0tOEnQxaMUSLUdePV3prpspS2Oc4 AyrYI5+XDC+Y3wmPQdt/7s63S/eTYRFRi8ymrVJGiz15+wLrRlsuuk6Vnus04g7oiV8o fgTtzsHveoS/ejotKbL0kCsiT7bWtlbLyO6ZM6tMWPku/EHXvvRgqwtx7j4L/fWJPFpR bxWhj3M3nS0ZBWWFeVEJW+kN6i9mdFrb7ffkfm0ppICXCT2PVwcE9h8voShzMCrWLOn1 TElQ3qeZObQutnwPCPAXH251vG5HLdaA3e0D55Naw/EIGHB04rGptBaCsvedF9aTCGQq ncCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685613570; x=1688205570; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=HN21BG58AfImMRbIzQqnR4MJn123ou4OXBSQhZXZJpo=; b=LTlhPxxdWORNP+ZhVOSo8UU7uQYbmMx6fuvYowMTsbUeyed7/HdHt4kKScDEYC7AF3 pZeDbWj99B4gwccZGVi7hCZb8lUgQImRs/S3B5lFD2QFmmMIbD9xpi++kwGxrbNSOpxQ N33jyoykn/mly4TC9dVVZqmvArn9CyMI3u1xS0kyrxUNSaD1YnBD2ln3R63FTcJWIhqJ kCPFowJ6i91p7asqDwCOUd21HeqBCIFTaSxSE64WXb0ahaE72kijF+B67a2mQlkVG8x3 fRgk3CtKHF1ozfQ7S1F1pekAYPe6/Kw0qrXTy0vstEGx1711JyHocQ7VugbrIDIzXzZ1 LFtA== X-Gm-Message-State: AC+VfDx6AbJuw4WYwCHWwi3r7D5nwl2KkuAfERKgaY20lJjb8y2KMfgI ywgi+64yc5Ir3yucBWeYNYMyTA== X-Google-Smtp-Source: ACHHUZ7tY3KX4aPRWQOjH4k27OybtvY5WLyAO5IDzBs3SulbHm2HeF9s5q9bY6mMFXnIt5BjJYHlng== X-Received: by 2002:a2e:9999:0:b0:2ac:6f6f:ff63 with SMTP id w25-20020a2e9999000000b002ac6f6fff63mr4669144lji.47.1685613570158; Thu, 01 Jun 2023 02:59:30 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id w6-20020a05651c102600b002ac833114besm3700062ljm.47.2023.06.01.02.59.28 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 01 Jun 2023 02:59:29 -0700 (PDT) Message-ID: <567975c4-ac55-1561-5caa-cd2db9d60d97@linaro.org> Date: Thu, 1 Jun 2023 11:59:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.2 Subject: Re: [PATCH 06/20] interconnect: qcom: icc-rpm: Allow negative QoS offset Content-Language: en-US To: Dmitry Baryshkov , Andy Gross , Bjorn Andersson , Michael Turquette , Stephen Boyd , Georgi Djakov , Leo Yan , Evan Green Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org References: <20230526-topic-smd_icc-v1-0-1bf8e6663c4e@linaro.org> <20230526-topic-smd_icc-v1-6-1bf8e6663c4e@linaro.org> <8983fc5f-b75e-3f38-577f-3c588acbe3f7@linaro.org> From: Konrad Dybcio In-Reply-To: <8983fc5f-b75e-3f38-577f-3c588acbe3f7@linaro.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On 1.06.2023 11:56, Dmitry Baryshkov wrote: > 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. Let's try to get more insight how they're correlated, but that sounds like an option.. 8996 will need this as well.. Konrad > >> >> 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 >> --- >>   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 */ >> >