From: "Kumar, Udit" <u-kumar1@ti.com>
To: Nishanth Menon <nm@ti.com>
Cc: <kristo@kernel.org>, <ssantosh@kernel.org>, <vigneshr@ti.com>,
<mturquette@baylibre.com>, <sboyd@kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <linux-clk@vger.kernel.org>,
<u-kumar1@ti.com>
Subject: Re: [PATCH v1] clk: keystone: sci-clk: Adding support for non contiguous clocks
Date: Mon, 5 Feb 2024 23:13:27 +0530 [thread overview]
Message-ID: <5a17f3dd-a27a-49d3-9e54-a0022333abe2@ti.com> (raw)
In-Reply-To: <20240205140459.orjvjqqtiugmyosc@obscurity>
On 2/5/2024 7:34 PM, Nishanth Menon wrote:
> On 10:15-20240205, Udit Kumar wrote:
>> Most of clocks and their parents are defined in contiguous range,
>> But in few cases, there is gap in clock numbers[0].
>>
>> Driver assumes clocks to be in contiguous range, and assigns
>> accordingly.
>>
>> New firmware started returning error in case of
>> non-available clock id. Therefore drivers throws error while
>> re-calculate and other functions.
> What changed here? started returning error for what API? also please fix
> up 70 char alignment -> there extra spaces in your commit message.
will address in v2
>> In this fix, before assigning and adding clock in list,
>> driver checks if given clock is valid or not.
>>
>> Fixes: 3c13933c6033 ("clk: keystone: sci-clk: add support for dynamically probing clocks")
>>
>> [0] https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j7200/clocks.html
>> Section Clocks for NAVSS0_CPTS_0 Device,
>> clock id 12-15 and 18-19 not present
>>
>> Signed-off-by: Udit Kumar <u-kumar1@ti.com>
>> ---
>> Original logs
>> https://gist.github.com/uditkumarti/de4b36b21247fb36725ad909ce4812f6#file-original-logs
>> Line 2630 for error
>>
>> Logs with fix
>> https://gist.github.com/uditkumarti/de4b36b21247fb36725ad909ce4812f6#file-with-fix
>> Line 2594
>>
>> drivers/clk/keystone/sci-clk.c | 20 ++++++++++++++++----
>> 1 file changed, 16 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/clk/keystone/sci-clk.c b/drivers/clk/keystone/sci-clk.c
>> index 35fe197dd303..d417ec018d82 100644
>> --- a/drivers/clk/keystone/sci-clk.c
>> +++ b/drivers/clk/keystone/sci-clk.c
>> @@ -517,6 +517,8 @@ static int ti_sci_scan_clocks_from_dt(struct sci_clk_provider *provider)
>> int num_clks = 0;
>> int num_parents;
>> [..]
>> - num_clks++;
>> + ret = provider->ops->get_freq(provider->sci,
>> + sci_clk->dev_id, sci_clk->clk_id, &freq);
>> + } while (ret != 0 && clk_id < max_clk_id);
> take clock ids 0 1 2 3 -> Say 2 is reserved.
> num_parents = 4
> while(num_parents) Loop 1 -> clk ID 0 is valid, list_add_tail
> while(num_parents) Loop 2 -> clk ID 1 is valid, list_add_tail
> while(num_parents) Loop 3 -> clk ID 2 is invalid.. so we scan forward
> to clk ID 3 -> list_add_tail
> while(num_parents) Loop 4 -> clk ID 4 is invalid.. but 5 is out of
> range, so we break off loop. sci_clk is still devm_kzalloced ->
> but since clk_id > max_clk_id, we jump off loop, and we dont add
> it to tail. so one extra allocation?
Thanks for catching this.
> If we have multiple reserved intermediate ones, then we'd have as many
> allocations that aren't linked? Could we not improve the logic a bit to
> allocate just what is necessary?
Sure, will change in v2.
to check clock validity first and then allocate, add
>> +
>> + sci_clk->provider = provider;
>> + if (ret == 0) {
>> + list_add_tail(&sci_clk->node, &clks);
>> + num_clks++;
>> + }
>> }
>> }
>>
>> --
>> 2.34.1
>>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
prev parent reply other threads:[~2024-02-05 17:43 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-05 4:45 [PATCH v1] clk: keystone: sci-clk: Adding support for non contiguous clocks Udit Kumar
2024-02-05 14:04 ` Nishanth Menon
2024-02-05 17:43 ` Kumar, Udit [this message]
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=5a17f3dd-a27a-49d3-9e54-a0022333abe2@ti.com \
--to=u-kumar1@ti.com \
--cc=kristo@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=nm@ti.com \
--cc=sboyd@kernel.org \
--cc=ssantosh@kernel.org \
--cc=vigneshr@ti.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox