]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: samsung: speyside: Free gpiod table
authorLinus Walleij <linus.walleij@linaro.org>
Wed, 12 Mar 2025 10:02:25 +0000 (11:02 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 12 Mar 2025 12:39:57 +0000 (12:39 +0000)
We create a gpio descriptor table but it needs to be free:ed
when the module is removed. Add a devm_ action to do the job.

Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Fixes: da9146c19b17 ("ASoC: samsung: speyside: Convert to GPIO descriptor")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20250312-cleanup-table-v1-1-1d9a14464482@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/samsung/speyside.c

index f781e2be2fd496924045597b750ab7f2249d8977..9262e56265842e7f8e5b5a740115cb5fbb0c537a 100644 (file)
@@ -347,6 +347,11 @@ static struct gpiod_lookup_table wm8996_gpiod_table = {
        },
 };
 
+static void speyside_gpiod_table_action(void *data)
+{
+       gpiod_remove_lookup_table(&wm8996_gpiod_table);
+}
+
 static int speyside_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &speyside;
@@ -355,6 +360,11 @@ static int speyside_probe(struct platform_device *pdev)
        card->dev = &pdev->dev;
 
        gpiod_add_lookup_table(&wm8996_gpiod_table);
+       ret = devm_add_action_or_reset(&pdev->dev, speyside_gpiod_table_action,
+                                      NULL);
+       if (ret)
+               return ret;
+
        ret = devm_snd_soc_register_card(&pdev->dev, card);
        if (ret)
                dev_err_probe(&pdev->dev, ret, "snd_soc_register_card() failed\n");