]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: tas2781: fix getting the wrong device number
authorShenghao Ding <shenghao-ding@ti.com>
Fri, 7 Nov 2025 05:49:59 +0000 (13:49 +0800)
committerMark Brown <broonie@kernel.org>
Fri, 7 Nov 2025 09:37:36 +0000 (09:37 +0000)
The return value of device_property_read_u32_array used for getting the
property is the status instead of the number of the property.

Fixes: ef3bcde75d06 ("ASoC: tas2781: Add tas2781 driver")
Signed-off-by: Shenghao Ding <shenghao-ding@ti.com>
Link: https://patch.msgid.link/20251107054959.950-1-shenghao-ding@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/tas2781-i2c.c

index ba880b5de7e87b61bc6319a796efccb9b836d3cc..8f37aa00e62ee7ab028e8faa1d44fe3206575bb8 100644 (file)
@@ -1957,7 +1957,8 @@ static void tasdevice_parse_dt(struct tasdevice_priv *tas_priv)
 {
        struct i2c_client *client = (struct i2c_client *)tas_priv->client;
        unsigned int dev_addrs[TASDEVICE_MAX_CHANNELS];
-       int i, ndev = 0;
+       int ndev = 0;
+       int i, rc;
 
        if (tas_priv->isacpi) {
                ndev = device_property_read_u32_array(&client->dev,
@@ -1968,8 +1969,12 @@ static void tasdevice_parse_dt(struct tasdevice_priv *tas_priv)
                } else {
                        ndev = (ndev < ARRAY_SIZE(dev_addrs))
                                ? ndev : ARRAY_SIZE(dev_addrs);
-                       ndev = device_property_read_u32_array(&client->dev,
+                       rc = device_property_read_u32_array(&client->dev,
                                "ti,audio-slots", dev_addrs, ndev);
+                       if (rc != 0) {
+                               ndev = 1;
+                               dev_addrs[0] = client->addr;
+                       }
                }
 
                tas_priv->irq =