[PATCH 2/5] ASoC: atmel-i2s: use optional API for muxclk

From: phucduc . bui

Date: Fri Oct 02 2026 - 00:40:19 EST


From: bui duc phuc <phucduc.bui@xxxxxxxxx>

The muxclk is an optional clock according to the device tree
binding.

Use devm_clk_get_optional() to handle the optional muxclk instead of
handling the missing clock explicitly.

When muxclk is not available, devm_clk_get_optional() returns NULL.
clk_set_parent() returns 0 when passed NULL, preserving the existing
behavior.

Unlike the existing code, errors other than -EPROBE_DEFER are now
returned instead of being silently ignored.

Fixes: b543e467d1a9 ("ASoC: atmel-i2s: add driver for the new Atmel I2S controller")
Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
---
sound/soc/atmel/atmel-i2s.c | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/sound/soc/atmel/atmel-i2s.c b/sound/soc/atmel/atmel-i2s.c
index f28808d980ce..c52d048449f8 100644
--- a/sound/soc/atmel/atmel-i2s.c
+++ b/sound/soc/atmel/atmel-i2s.c
@@ -589,21 +589,15 @@ static int atmel_i2s_sama5d2_mck_init(struct atmel_i2s_dev *dev,
struct device_node *np)
{
struct clk *muxclk;
- int err;

if (!dev->gclk)
return 0;

- /* muxclk is optional, so we return error for probe defer only */
- muxclk = devm_clk_get(dev->dev, "muxclk");
- if (IS_ERR(muxclk)) {
- err = PTR_ERR(muxclk);
- if (err == -EPROBE_DEFER)
- return -EPROBE_DEFER;
- dev_dbg(dev->dev,
- "failed to get the I2S clock control: %d\n", err);
- return 0;
- }
+ /* muxclk is optional */
+ muxclk = devm_clk_get_optional(dev->dev, "muxclk");
+ if (IS_ERR(muxclk))
+ return dev_err_probe(dev->dev, PTR_ERR(muxclk),
+ "failed to get the I2S clock control\n");

return clk_set_parent(muxclk, dev->gclk);
}
--
2.43.0