]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Nov 2025 09:35:54 +0000 (10:35 +0100)
[ Upstream commit 29528c8e643bb0c54da01237a35010c6438423d2 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/codecs/tas2781-i2c.c

index 1b2f55030c3961fbe80ad7d014c47a9bb72d3316..2f100cbfdc41fad3f17b84fd66fd83cdb39b12dd 100644 (file)
@@ -1635,7 +1635,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,
@@ -1646,8 +1647,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 =