Commit dd461cd9183f ("opp: Allow dev_pm_opp_get_opp_table() to return -EPROBE_DEFER") handles -EPROBE_DEFER for the clock/interconnects within _allocate_opp_table() which is called from dev_pm_opp_add and it now propagates the error back to the caller. This breaks SCMI performance domains as we will never succeed to add any OPPs. A quick fix would be to register dummy clocks which is completely ugly and bigger fix which may break with some other change in future. It is better to add separate binding for the same and use it. A separate SCMI performance domain binding is introduced and let us use it here. Signed-off-by: Sudeep Holla <sudeep.holla@xxxxxxx> --- drivers/firmware/arm_scmi/perf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/firmware/arm_scmi/perf.c b/drivers/firmware/arm_scmi/perf.c index 3e1e87012c95..e2a47b3eead1 100644 --- a/drivers/firmware/arm_scmi/perf.c +++ b/drivers/firmware/arm_scmi/perf.c @@ -629,13 +629,13 @@ static void scmi_perf_domain_init_fc(const struct scmi_handle *handle, /* Device specific ops */ static int scmi_dev_domain_id(struct device *dev) { - struct of_phandle_args clkspec; + struct of_phandle_args spec; - if (of_parse_phandle_with_args(dev->of_node, "clocks", "#clock-cells", - 0, &clkspec)) + if (of_parse_phandle_with_args(dev->of_node, "arm,scmi-perf-domain", + "#perf-domain-cells", 0, &spec)) return -EINVAL; - return clkspec.args[0]; + return spec.args[0]; } static int scmi_dvfs_device_opps_add(const struct scmi_handle *handle, -- 2.17.1