On Sun, May 10, 2026 at 03:43:00PM +0700, phucduc.bui@gmail.com wrote: > Move fsi_clk_init() to probe and use devm_clk_get_optional() for optional > clocks. This allows probe to succeed even when some optional clocks are > missing, while set_rate() performs strict validation to ensure all required > clocks are available for hardware configuration during audio setup. > +static int fsi_clk_init(struct device *dev, struct fsi_priv *fsi) > + if (!master->clk_spu) { > + master->clk_spu = devm_clk_get_optional(dev, "spu"); > + if (IS_ERR(master->clk_spu)) > + return PTR_ERR(master->clk_spu); > + } > + > @@ -1997,6 +2001,7 @@ static int fsi_probe(struct platform_device *pdev) > fsi->running_streams = 0; > fsi_port_info_init(fsi, &info.port_a); > fsi_handler_init(fsi, &info.port_a); > + fsi_clk_init(&pdev->dev, fsi); We ignore the return value from fsi_clk_init() which means deferred probe won't work (as well as fatal errors).