On 28/08/2023 21:09, Stephen Boyd wrote:
Quoting Dmitry Baryshkov (2023-08-27 04:50:15)
diff --git a/drivers/interconnect/icc-clk.c b/drivers/interconnect/icc-clk.c
index d787f2ea36d9..45ffb068979d 100644
--- a/drivers/interconnect/icc-clk.c
+++ b/drivers/interconnect/icc-clk.c
@@ -25,12 +28,16 @@ struct icc_clk_provider {
static int icc_clk_set(struct icc_node *src, struct icc_node *dst)
{
struct icc_clk_node *qn = src->data;
+ unsigned long rate = icc_units_to_bps(src->peak_bw);
int ret;
if (!qn || !qn->clk)
return 0;
- if (!src->peak_bw) {
+ if (qn->opp)
+ return dev_pm_opp_set_rate(qn->dev, rate);
Just curious how does lockdep do with this? Doesn't OPP call into
interconnect code, so lockdep will complain about ABBA?
Unfortunately it does. It seems, the icc-clk is not a proper way to go
here. I will take a look at reusing set_required_opps for this case.
--
With best wishes
Dmitry