]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: SDCA: Fix reading of mipi-sdca-control-deferrable
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Mon, 13 Apr 2026 12:46:21 +0000 (13:46 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 20 Apr 2026 17:40:03 +0000 (18:40 +0100)
The discussion in [1] highlighted that the SDCA code shouldn't be using
fwnode_property_read_bool() for DisCo controls, as the spec allows setting
the value to zero meaning the property should not be used. Correct a
small bug in the SDCA code that will mark such controls as deferrable.

Link: https://lore.kernel.org/linux-sound/20260311142153.2201761-1-rf@opensource.cirrus.com/
Fixes: 42b144cb6a2d ("ASoC: SDCA: Add SDCA Control parsing")
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://patch.msgid.link/20260413124621.1345315-3-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sdca/sdca_functions.c

index dca60ee8e62c3c4739930caac017009a9694e997..c5fe1a471c36759744933472b4e34d21fed366ee 100644 (file)
@@ -1006,8 +1006,11 @@ static int find_sdca_entity_control(struct device *dev, struct sdca_entity *enti
                        control->has_fixed = true;
                fallthrough;
        case SDCA_ACCESS_MODE_RO:
-               control->deferrable = fwnode_property_read_bool(control_node,
-                                                               "mipi-sdca-control-deferrable");
+               ret = fwnode_property_read_u32(control_node,
+                                              "mipi-sdca-control-deferrable",
+                                              &tmp);
+               if (ret == 0)
+                       control->deferrable = !!tmp;
                break;
        default:
                break;