From: Linus Walleij Date: Wed, 12 Mar 2025 10:02:25 +0000 (+0100) Subject: ASoC: samsung: speyside: Free gpiod table X-Git-Tag: v6.15-rc1~173^2~4^2~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=87fa872a1ecf542efc66a9184127faf03037f827;p=thirdparty%2Flinux.git ASoC: samsung: speyside: Free gpiod table 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 Fixes: da9146c19b17 ("ASoC: samsung: speyside: Convert to GPIO descriptor") Signed-off-by: Linus Walleij Reviewed-by: Andy Shevchenko Link: https://patch.msgid.link/20250312-cleanup-table-v1-1-1d9a14464482@linaro.org Signed-off-by: Mark Brown --- diff --git a/sound/soc/samsung/speyside.c b/sound/soc/samsung/speyside.c index f781e2be2fd49..9262e56265842 100644 --- a/sound/soc/samsung/speyside.c +++ b/sound/soc/samsung/speyside.c @@ -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");