Re: [PATCH v3 07/10] ASoC: renesas: fsi: refactor clock initialization
From: Kuninori Morimoto
Date: Sun May 10 2026 - 22:00:29 EST
Hi
> 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.
>
> Suggested-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>
> Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
> ---
Below parts are clock->xxx cleanup code, not refactor clocks initialization ?
Please separate it into cleanup part and refactor part.
> /* external clock */
> if (xck) {
> - clock->xck = devm_clk_get(dev, is_porta ? "xcka" : "xckb");
> - if (IS_ERR(clock->xck)) {
> - dev_err(dev, "can't get xck clock\n");
> - return -EINVAL;
> - }
> + clock->xck = devm_clk_get_optional(dev, is_porta ? "xcka" : "xckb");
> + if (IS_ERR(clock->xck))
> + return dev_err_probe(dev, PTR_ERR(clock->xck), "Can't get xck clock\n");
> if (clock->xck == clock->own) {
> dev_err(dev, "cpu doesn't support xck clock\n");
> return -EINVAL;
> @@ -1010,11 +1027,9 @@ static int fsi_clk_init(struct device *dev,
>
> /* FSIACLK/FSIBCLK */
> if (ick) {
> - clock->ick = devm_clk_get(dev, is_porta ? "icka" : "ickb");
> - if (IS_ERR(clock->ick)) {
> - dev_err(dev, "can't get ick clock\n");
> - return -EINVAL;
> - }
> + clock->ick = devm_clk_get_optional(dev, is_porta ? "icka" : "ickb");
> + if (IS_ERR(clock->ick))
> + return dev_err_probe(dev, PTR_ERR(clock->ick), "Can't get ick clock\n");
> if (clock->ick == clock->own) {
> dev_err(dev, "cpu doesn't support ick clock\n");
> return -EINVAL;
> @@ -1023,11 +1038,9 @@ static int fsi_clk_init(struct device *dev,
>
> /* FSI-DIV */
> if (div) {
> - clock->div = devm_clk_get(dev, is_porta ? "diva" : "divb");
> - if (IS_ERR(clock->div)) {
> - dev_err(dev, "can't get div clock\n");
> - return -EINVAL;
> - }
> + clock->div = devm_clk_get_optional(dev, is_porta ? "diva" : "divb");
> + if (IS_ERR(clock->div))
> + return dev_err_probe(dev, PTR_ERR(clock->div), "Can't get div clock\n");
> if (clock->div == clock->own) {
> dev_err(dev, "cpu doesn't support div clock\n");
> return -EINVAL;