All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
To: Ansuel Smith <ansuelsmth@gmail.com>
Cc: Stephen Boyd <sboyd@kernel.org>, Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Michael Turquette <mturquette@baylibre.com>,
	Rob Herring <robh+dt@kernel.org>,
	devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 03/18] clk: qcom: gcc-ipq806x: add PXO_SRC in clk table
Date: Wed, 13 Apr 2022 23:01:22 +0300	[thread overview]
Message-ID: <3626cd91-4c94-5b7d-4f3a-b9dcf026e2c9@linaro.org> (raw)
In-Reply-To: <62570e48.1c69fb81.49fb8.143b@mx.google.com>

On 13/04/2022 20:54, Ansuel Smith wrote:
> On Wed, Apr 13, 2022 at 08:32:21PM +0300, Dmitry Baryshkov wrote:
>> On Wed, 13 Apr 2022 at 20:00, Ansuel Smith <ansuelsmth@gmail.com> wrote:
>>>
>>> On Thu, Mar 24, 2022 at 06:22:29PM -0700, Stephen Boyd wrote:
>>>> Quoting Ansuel Smith (2022-03-24 18:13:49)
>>>>> On Thu, Mar 24, 2022 at 06:10:35PM -0700, Stephen Boyd wrote:
>>>>>> Quoting Ansuel Smith (2022-03-21 16:15:33)
>>>>>>> PXO_SRC is currently defined in the gcc include and referenced in the
>>>>>>> ipq8064 DTSI. Correctly provide a clk after gcc probe to fix kernel
>>>>>>> panic if a driver starts to actually use it.
>>>>>>>
>>>>>>> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
>>>>>>> ---
>>>>>>
>>>>>> What is this patch about? clk providers shouldn't be calling clk_get().
>>>>>>
>>>>>
>>>>> If pxo is passed as a clock in dts and defined as a fixed clock, what
>>>>> should be used?
>>>>
>>>> clk_parent_data
>>>
>>> Sorry but I'm not following you. No idea if you missed the cover letter
>>> where i describe the problem with PXO_SRC.
>>>
>>> The problem here is that
>>> - In DTS we have node that reference <&gcc PXO_SRC>
>>> But
>>> - gcc driver NEVER defined PXO_SRC
>>> As
>>> - PXO_SRC is actually pxo_board that should be defined as a fixed-clock
>>>    in dts or is defined using qcom_cc_register_board_clk.
>>>
>>> So in theory we should just put in PXO_SRC the clk hw of the
>>> fixed-clock. That is why I'm using clk_get(). I can use __clk_lookup()
>>> as an alternative but I really can't find a way to get the clock defined
>>> from DTS or qcom_cc_register_board_clk.
>>>
>>> (I have the same exact problem with the cpu qsb clock where is defined
>>> using fixed-clock API but can also defined directly in DTS and I have to
>>> use clk_get())
>>>
>>> I'm totally missing something so I would love some hint on how to solve
>>> this.
>>
>> When we were doing such conversion for other  platforms, we pointed
>> clock consumers to the board clocks directly. There is no need to go
>> through the gcc to fetch pxo.
>> Instead you can use a <&pxo_board> in the dts directly. Typically the
>> sequence is the following:
>> - Minor cleanup of the clock-controller driver
>> (ARRAY_SIZE(parent_data), removal of unused clock sources, unused enum
>> entries, etc)
>> - update drivers to use both .name and  .fw_name in replacement of
>> parent_names. Use parent_hws where possible.
>> - update dtsi to reference clocks using clocks/clock-names properties.
>> Pass board/rpmh/rpm clocks directly to their consumers without
>> bandaids in the gcc driver.
>> - (optionally) after several major releases drop parent_data.name
>> completely. I think we mostly skipped this, since it provides no gain.
>>
>> This way you don't have to play around clk_get to return PXO_SRC from
>> gcc clock-controller.
>>
>> -- 
>> With best wishes
>> Dmitry
> 
> Thanks for the list of steps to do this kind of cleanup.
>  From what I'm reading this series is ""stuck"" in the sense that I first
> have to fix the wrong PXO_SRC reference and then I can continue the
> conversion work. A bit sad considering most of the time DTS proposal got
> ignored :(

Not really. You can leave "pxo" as is. Use { .fw_name = "pxo", .name = 
"pxo_board" } as parent_data. Then pass <&pxo_board> as the "pxo" clock 
to the consumers. Yes, you will still have the lingering "pxo" / "cxo" 
clocks at this step. It's okay, they might be used by other drivers.

After the whole conversion is finished, you can make "pxo"/"cxo" 
registration conditional on !of_find_property("clocks") rather than 
using clk_get.

As a rule of thumb, you don't have to complete the whole thing in a 
single commit. Having smaller commits might be better.

[And yes, I'm looking forward to testing your cpufreq changes on my 
apq8064 devices].

-- 
With best wishes
Dmitry

  reply	other threads:[~2022-04-13 20:01 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-21 23:15 [PATCH v6 00/18] Modernize rest of the krait drivers Ansuel Smith
2022-03-21 23:15 ` [PATCH v6 01/18] clk: introduce clk_hw_get_index_of_parent new API Ansuel Smith
2022-03-25  1:21   ` Stephen Boyd
2022-03-21 23:15 ` [PATCH v6 02/18] clk: qcom: gcc-ipq806x: skip pxo/cxo fixed clk if already present Ansuel Smith
2022-03-25  1:11   ` Stephen Boyd
2022-03-21 23:15 ` [PATCH v6 03/18] clk: qcom: gcc-ipq806x: add PXO_SRC in clk table Ansuel Smith
2022-03-25  1:10   ` Stephen Boyd
2022-03-25  1:13     ` Ansuel Smith
2022-03-25  1:22       ` Stephen Boyd
2022-04-13 17:00         ` Ansuel Smith
2022-04-13 17:32           ` Dmitry Baryshkov
2022-04-13 17:54             ` Ansuel Smith
2022-04-13 20:01               ` Dmitry Baryshkov [this message]
2022-03-21 23:15 ` [PATCH v6 04/18] clk: qcom: clk-hfpll: use poll_timeout macro Ansuel Smith
2022-03-25  1:09   ` Stephen Boyd
2022-03-21 23:15 ` [PATCH v6 05/18] clk: qcom: kpss-xcc: convert to parent data API Ansuel Smith
2022-03-25  1:06   ` Stephen Boyd
2022-03-25  1:10     ` Ansuel Smith
2022-04-13 19:38   ` Dmitry Baryshkov
2022-03-21 23:15 ` [PATCH v6 06/18] clk: qcom: clk-krait: unlock spin after mux completion Ansuel Smith
2022-03-25  1:04   ` Stephen Boyd
2022-03-21 23:15 ` [PATCH v6 07/18] clk: qcom: clk-krait: add hw_parent check for div2_round_rate Ansuel Smith
2022-03-21 23:15 ` [PATCH v6 08/18] clk: qcom: krait-cc: convert to parent_data API Ansuel Smith
2022-03-21 23:15 ` [PATCH v6 09/18] clk: qcom: krait-cc: drop pr_info and register qsb only if needed Ansuel Smith
2022-04-13 19:40   ` Dmitry Baryshkov
2022-03-21 23:15 ` [PATCH v6 10/18] clk: qcom: krait-cc: drop hardcoded safe_sel Ansuel Smith
2022-04-13 17:25   ` Dmitry Baryshkov
2022-04-13 17:35     ` Ansuel Smith
2022-04-13 18:24       ` Dmitry Baryshkov
2022-03-21 23:15 ` [PATCH v6 11/18] clk: qcom: krait-cc: force sec_mux to QSB Ansuel Smith
2022-03-21 23:15 ` [PATCH v6 12/18] clk: qcom: clk-krait: add apq/ipq8064 errata workaround Ansuel Smith
2022-03-21 23:15 ` [PATCH v6 13/18] clk: qcom: clk-krait: add enable disable ops Ansuel Smith
2022-04-13 17:28   ` Dmitry Baryshkov
2022-03-21 23:15 ` [PATCH v6 14/18] dt-bindings: clock: Convert qcom,krait-cc to yaml Ansuel Smith
2022-03-21 23:15 ` [PATCH v6 15/18] dt-bindings: clock: Add L2 clocks to qcom,krait-cc Documentation Ansuel Smith
2022-03-23 15:27   ` Rob Herring
2022-03-21 23:15 ` [PATCH v6 16/18] dt-bindings: arm: msm: Convert kpss-acc driver Documentation to yaml Ansuel Smith
2022-03-22 10:11   ` Krzysztof Kozlowski
2022-03-21 23:15 ` [PATCH v6 17/18] dt-bindings: arm: msm: Convert kpss-gcc " Ansuel Smith
2022-03-22  1:50   ` Rob Herring
2022-03-23 10:29     ` Ansuel Smith
2022-03-23 13:19       ` Rob Herring
2022-03-22 10:07   ` Krzysztof Kozlowski
2022-03-22 13:26     ` Ansuel Smith
2022-03-23  9:59       ` Krzysztof Kozlowski
2022-03-23 11:03         ` Ansuel Smith
2022-03-23 14:19           ` Krzysztof Kozlowski
2022-03-21 23:15 ` [PATCH v6 18/18] ARM: dts: qcom: qcom-ipq8064: add missing krait-cc compatible and clocks Ansuel Smith
2022-03-22 10:01   ` Krzysztof Kozlowski
2022-03-22  1:56 ` [PATCH v6 00/18] Modernize rest of the krait drivers Rob Herring
2022-03-22 13:43   ` Ansuel Smith
2022-04-13 17:31 ` Dmitry Baryshkov
2022-04-13 17:48   ` Ansuel Smith
2022-04-13 19:49     ` Dmitry Baryshkov

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=3626cd91-4c94-5b7d-4f3a-b9dcf026e2c9@linaro.org \
    --to=dmitry.baryshkov@linaro.org \
    --cc=agross@kernel.org \
    --cc=ansuelsmth@gmail.com \
    --cc=bjorn.andersson@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.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.