]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mfd: wm8994: Remove dead legacy-gpio code
authorArnd Bergmann <arnd@arndb.de>
Mon, 27 Apr 2026 14:34:27 +0000 (16:34 +0200)
committerLee Jones <lee@kernel.org>
Wed, 17 Jun 2026 10:32:00 +0000 (11:32 +0100)
The old-style gpio handling in wm8994 came from a commit 7c8844481a1c
("mfd: wm8994: Emulate level triggered interrupts if required") in
linux-3.11, but nothing in the kernel ever set the 'irq_gpio' member
in the wm8994_pdata structure, so this was always dead code.

Remove it now to reduce the dependency on the legacy gpio interfaces.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Link: https://patch.msgid.link/20260427143437.3059210-1-arnd@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/mfd/wm8994-irq.c
include/linux/mfd/wm8994/pdata.h

index 1475b1ac6983b8f9e4101a4b7ed1a5d162c7987c..a46cea9487632da91adbdadd3201db854153d7d8 100644 (file)
@@ -135,53 +135,9 @@ static const struct regmap_irq_chip wm8994_irq_chip = {
        .runtime_pm = true,
 };
 
-static void wm8994_edge_irq_enable(struct irq_data *data)
-{
-}
-
-static void wm8994_edge_irq_disable(struct irq_data *data)
-{
-}
-
-static struct irq_chip wm8994_edge_irq_chip = {
-       .name                   = "wm8994_edge",
-       .irq_disable            = wm8994_edge_irq_disable,
-       .irq_enable             = wm8994_edge_irq_enable,
-};
-
-static irqreturn_t wm8994_edge_irq(int irq, void *data)
-{
-       struct wm8994 *wm8994 = data;
-
-       while (gpio_get_value_cansleep(wm8994->pdata.irq_gpio))
-               handle_nested_irq(irq_find_mapping(wm8994->edge_irq, 0));
-
-       return IRQ_HANDLED;
-}
-
-static int wm8994_edge_irq_map(struct irq_domain *h, unsigned int virq,
-                              irq_hw_number_t hw)
-{
-       struct wm8994 *wm8994 = h->host_data;
-
-       irq_set_chip_data(virq, wm8994);
-       irq_set_chip_and_handler(virq, &wm8994_edge_irq_chip, handle_edge_irq);
-       irq_set_nested_thread(virq, 1);
-       irq_set_noprobe(virq);
-
-       return 0;
-}
-
-static const struct irq_domain_ops wm8994_edge_irq_ops = {
-       .map    = wm8994_edge_irq_map,
-       .xlate  = irq_domain_xlate_twocell,
-};
-
 int wm8994_irq_init(struct wm8994 *wm8994)
 {
        int ret;
-       unsigned long irqflags;
-       struct wm8994_pdata *pdata = &wm8994->pdata;
 
        if (!wm8994->irq) {
                dev_warn(wm8994->dev,
@@ -190,53 +146,11 @@ int wm8994_irq_init(struct wm8994 *wm8994)
                return 0;
        }
 
-       /* select user or default irq flags */
-       irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT;
-       if (pdata->irq_flags)
-               irqflags = pdata->irq_flags;
-
        /* use a GPIO for edge triggered controllers */
-       if (irqflags & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) {
-               if (gpio_to_irq(pdata->irq_gpio) != wm8994->irq) {
-                       dev_warn(wm8994->dev, "IRQ %d is not GPIO %d (%d)\n",
-                                wm8994->irq, pdata->irq_gpio,
-                                gpio_to_irq(pdata->irq_gpio));
-                       wm8994->irq = gpio_to_irq(pdata->irq_gpio);
-               }
-
-               ret = devm_gpio_request_one(wm8994->dev, pdata->irq_gpio,
-                                           GPIOF_IN, "WM8994 IRQ");
-
-               if (ret != 0) {
-                       dev_err(wm8994->dev, "Failed to get IRQ GPIO: %d\n",
-                               ret);
-                       return ret;
-               }
-
-               wm8994->edge_irq = irq_domain_create_linear(NULL, 1, &wm8994_edge_irq_ops, wm8994);
-
-               ret = regmap_add_irq_chip(wm8994->regmap,
-                                         irq_create_mapping(wm8994->edge_irq,
-                                                            0),
-                                         IRQF_ONESHOT,
-                                         wm8994->irq_base, &wm8994_irq_chip,
-                                         &wm8994->irq_data);
-               if (ret != 0) {
-                       dev_err(wm8994->dev, "Failed to get IRQ: %d\n",
-                               ret);
-                       return ret;
-               }
-
-               ret = request_threaded_irq(wm8994->irq,
-                                          NULL, wm8994_edge_irq,
-                                          irqflags,
-                                          "WM8994 edge", wm8994);
-       } else {
-               ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq,
-                                         irqflags,
-                                         wm8994->irq_base, &wm8994_irq_chip,
-                                         &wm8994->irq_data);
-       }
+       ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq,
+                                 IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
+                                 wm8994->irq_base, &wm8994_irq_chip,
+                                 &wm8994->irq_data);
 
        if (ret != 0) {
                dev_err(wm8994->dev, "Failed to register IRQ chip: %d\n", ret);
index 6e2962ef5b81120e603e07654898836cc7226540..b95a56a338c3b9386cc1b1df7c375818ee489dc2 100644 (file)
@@ -226,11 +226,6 @@ struct wm8994_pdata {
         * lines is mastered.
         */
        int max_channels_clocked[WM8994_NUM_AIF];
-
-       /**
-        * GPIO for the IRQ pin if host only supports edge triggering
-        */
-       int irq_gpio;
 };
 
 #endif