]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: codec: rt298: Use devm_request_threaded_irq to manage IRQ lifetime and fix...
authorHariKrishna Sagala <hariconscious@gmail.com>
Wed, 17 Dec 2025 10:43:58 +0000 (16:13 +0530)
committerMark Brown <broonie@kernel.org>
Wed, 17 Dec 2025 12:04:33 +0000 (12:04 +0000)
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 <hariconscious@gmail.com>
Link: https://patch.msgid.link/20251217104356.60839-3-hariconscious@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt298.c

index 02247593513ab22ec6bf7f893c13a701fbc16661..7d532a5a5f7349e54809c6761f1207ba22a4b564 100644 (file)
@@ -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,
 };