> >> @@ -642,6 +642,18 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac) > >> dev_dbg(&pdev->dev, "PTP rate %d\n", plat->clk_ptp_rate); > >> } > >> > >> + plat->axi_icc_path = devm_of_icc_get(&pdev->dev, "axi"); > >> + if (IS_ERR(plat->axi_icc_path)) { > >> + ret = (void *)plat->axi_icc_path; > >> + goto error_hw_init; > > > > This sounds like an ABI break. Considering the interconnects are not > > required by the binding, are you sure this behaves correctly without > > interconnects in DTS? > > > > Best regards, > > Krzysztof > > > Yes, i did check without the interconnect entries in the dtsi and > things are working fine, devm_of_icc_get is properly clearing out > all the references in the case when "interconnects" are not present > in the dtsi. So the relevant code is: https://elixir.bootlin.com/linux/latest/source/drivers/interconnect/core.c#L566 /* * When the consumer DT node do not have "interconnects" property * return a NULL path to skip setting constraints. */ if (!of_property_present(np, "interconnects")) return NULL; The naming of of_icc_get() and devm_of_icc_get() is not great. Typically this behaviour of not giving an error if it is missing would mean the functions would be of_icc_get_optional() and devm_of_icc_get_optional(), e.g. we have clk_get_optional(), gpiod_get_optional(), regulator_get_optional(), etc. Andrew