From 3a4e4e0003678a87600e82d02c9522af282a5c0b Mon Sep 17 00:00:00 2001 From: HariKrishna Sagala Date: Wed, 17 Dec 2025 16:13:58 +0530 Subject: [PATCH] ASoC: codec: rt298: Use devm_request_threaded_irq to manage IRQ lifetime and fix smatch warning Replace manual "request_threaded_irq()" with the device managed "devm_request_threaded_irq" to manage the IRQ lifetime and also it removes the smatch reported warning. Remove the manual "free_irq()" in the "remove" function as free_irq is tied to device teardown. Signed-off-by: HariKrishna Sagala Link: https://patch.msgid.link/20251217104356.60839-3-hariconscious@gmail.com Signed-off-by: Mark Brown --- sound/soc/codecs/rt298.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/sound/soc/codecs/rt298.c b/sound/soc/codecs/rt298.c index 02247593513ab..7d532a5a5f734 100644 --- a/sound/soc/codecs/rt298.c +++ b/sound/soc/codecs/rt298.c @@ -1282,7 +1282,7 @@ static int rt298_i2c_probe(struct i2c_client *i2c) rt298->is_hp_in = -1; if (rt298->i2c->irq) { - ret = request_threaded_irq(rt298->i2c->irq, NULL, rt298_irq, + ret = devm_request_threaded_irq(&rt298->i2c->dev, rt298->i2c->irq, NULL, rt298_irq, IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "rt298", rt298); if (ret != 0) { dev_err(&i2c->dev, @@ -1298,22 +1298,12 @@ static int rt298_i2c_probe(struct i2c_client *i2c) return ret; } -static void rt298_i2c_remove(struct i2c_client *i2c) -{ - struct rt298_priv *rt298 = i2c_get_clientdata(i2c); - - if (i2c->irq) - free_irq(i2c->irq, rt298); -} - - static struct i2c_driver rt298_i2c_driver = { .driver = { .name = "rt298", .acpi_match_table = ACPI_PTR(rt298_acpi_match), }, .probe = rt298_i2c_probe, - .remove = rt298_i2c_remove, .id_table = rt298_i2c_id, }; -- 2.47.3