Lines Matching defs:wm8994

3  * wm8994-irq.c  --  Interrupt controller support for Wolfson WM8994
20 #include <linux/mfd/wm8994/core.h>
21 #include <linux/mfd/wm8994/pdata.h>
22 #include <linux/mfd/wm8994/registers.h>
127 .name = "wm8994",
154 struct wm8994 *wm8994 = data;
156 while (gpio_get_value_cansleep(wm8994->pdata.irq_gpio))
157 handle_nested_irq(irq_find_mapping(wm8994->edge_irq, 0));
165 struct wm8994 *wm8994 = h->host_data;
167 irq_set_chip_data(virq, wm8994);
180 int wm8994_irq_init(struct wm8994 *wm8994)
184 struct wm8994_pdata *pdata = &wm8994->pdata;
186 if (!wm8994->irq) {
187 dev_warn(wm8994->dev,
189 wm8994->irq_base = 0;
200 if (gpio_to_irq(pdata->irq_gpio) != wm8994->irq) {
201 dev_warn(wm8994->dev, "IRQ %d is not GPIO %d (%d)\n",
202 wm8994->irq, pdata->irq_gpio,
204 wm8994->irq = gpio_to_irq(pdata->irq_gpio);
207 ret = devm_gpio_request_one(wm8994->dev, pdata->irq_gpio,
211 dev_err(wm8994->dev, "Failed to get IRQ GPIO: %d\n",
216 wm8994->edge_irq = irq_domain_add_linear(NULL, 1,
218 wm8994);
220 ret = regmap_add_irq_chip(wm8994->regmap,
221 irq_create_mapping(wm8994->edge_irq,
224 wm8994->irq_base, &wm8994_irq_chip,
225 &wm8994->irq_data);
227 dev_err(wm8994->dev, "Failed to get IRQ: %d\n",
232 ret = request_threaded_irq(wm8994->irq,
235 "WM8994 edge", wm8994);
237 ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq,
239 wm8994->irq_base, &wm8994_irq_chip,
240 &wm8994->irq_data);
244 dev_err(wm8994->dev, "Failed to register IRQ chip: %d\n", ret);
249 wm8994_reg_write(wm8994, WM8994_INTERRUPT_CONTROL, 0);
255 void wm8994_irq_exit(struct wm8994 *wm8994)
257 regmap_del_irq_chip(wm8994->irq, wm8994->irq_data);