Re: [PATCH v4] clk: ti: clk-k3: Notify AVS driver upon setting clock rate

2023-10-12 Thread Tom Rini
On Thu, Sep 21, 2023 at 10:30:38PM +0530, Udit Kumar wrote:

> AVS is enabled at R5 SPL stage, on few platforms like J721E
> and J7200 clk-k3 is used instead if clk-sci driver.
> 
> Add support in clk-k3 driver as well to notify AVS driver
> on setting clock rate so that voltage is changed accordingly.
> 
> Cc: Keerthy 
> Signed-off-by: Udit Kumar 

Applied to u-boot/master, thanks!

-- 
Tom


signature.asc
Description: PGP signature


[PATCH v4] clk: ti: clk-k3: Notify AVS driver upon setting clock rate

2023-09-21 Thread Udit Kumar
AVS is enabled at R5 SPL stage, on few platforms like J721E
and J7200 clk-k3 is used instead if clk-sci driver.

Add support in clk-k3 driver as well to notify AVS driver
on setting clock rate so that voltage is changed accordingly.

Cc: Keerthy 
Signed-off-by: Udit Kumar 
---
Boot logs with v4:
https://gist.github.com/uditkumarti/bab0ec09eadb4b167ec1ab93e08637a8

Change log:
Change in v4:
- changed if condition order as per review feedback
- splitted patch into two
- v3 link
https://lore.kernel.org/all/20230920120256.2901860-1-u-kum...@ti.com/

Change in v3:
- Updated AVS notification before/after clock setting based upon
new and current rate
- Added modifed notification in clk-sci driver as well
- v2 link
https://lore.kernel.org/all/20230919140408.2608521-1-u-kum...@ti.com/

Changes in v2:
- Kept clk-sci.c as is because this is used by
AM64 and AM65 platforms
- v1 link
https://lore.kernel.org/all/20230919060649.2518147-1-u-kum...@ti.com


 drivers/clk/ti/clk-k3.c | 9 +
 1 file changed, 9 insertions(+)

diff --git a/drivers/clk/ti/clk-k3.c b/drivers/clk/ti/clk-k3.c
index ba925fa3c4..10f7240f77 100644
--- a/drivers/clk/ti/clk-k3.c
+++ b/drivers/clk/ti/clk-k3.c
@@ -11,6 +11,7 @@
 #include 
 #include 
 #include 
+#include 
 #include "k3-clk.h"
 
 #define PLL_MIN_FREQ   8
@@ -242,7 +243,11 @@ static ulong ti_clk_set_rate(struct clk *clk, ulong rate)
const struct clk_ops *ops;
ulong new_rate, rem;
ulong diff, new_diff;
+   int freq_scale_up = rate >= ti_clk_get_rate(clk) ? 1 : 0;
 
+   if (IS_ENABLED(CONFIG_K3_AVS0) && freq_scale_up)
+   k3_avs_notify_freq(data->map[clk->id].dev_id,
+  data->map[clk->id].clk_id, rate);
/*
 * We must propagate rate change to parent if current clock type
 * does not allow setting it.
@@ -339,6 +344,10 @@ static ulong ti_clk_set_rate(struct clk *clk, ulong rate)
}
}
 
+   if (IS_ENABLED(CONFIG_K3_AVS0) && !freq_scale_up)
+   k3_avs_notify_freq(data->map[clk->id].dev_id,
+  data->map[clk->id].clk_id, rate);
+
return new_rate;
 }
 
-- 
2.34.1