Lines Matching refs:wm8994
159 struct wm8994 *wm8994 = data; in wm8994_edge_irq() local
161 while (gpio_get_value_cansleep(wm8994->pdata.irq_gpio)) in wm8994_edge_irq()
162 handle_nested_irq(irq_create_mapping(wm8994->edge_irq, 0)); in wm8994_edge_irq()
170 struct wm8994 *wm8994 = h->host_data; in wm8994_edge_irq_map() local
172 irq_set_chip_data(virq, wm8994); in wm8994_edge_irq_map()
192 int wm8994_irq_init(struct wm8994 *wm8994) in wm8994_irq_init() argument
196 struct wm8994_pdata *pdata = dev_get_platdata(wm8994->dev); in wm8994_irq_init()
198 if (!wm8994->irq) { in wm8994_irq_init()
199 dev_warn(wm8994->dev, in wm8994_irq_init()
201 wm8994->irq_base = 0; in wm8994_irq_init()
212 if (gpio_to_irq(pdata->irq_gpio) != wm8994->irq) { in wm8994_irq_init()
213 dev_warn(wm8994->dev, "IRQ %d is not GPIO %d (%d)\n", in wm8994_irq_init()
214 wm8994->irq, pdata->irq_gpio, in wm8994_irq_init()
216 wm8994->irq = gpio_to_irq(pdata->irq_gpio); in wm8994_irq_init()
219 ret = devm_gpio_request_one(wm8994->dev, pdata->irq_gpio, in wm8994_irq_init()
223 dev_err(wm8994->dev, "Failed to get IRQ GPIO: %d\n", in wm8994_irq_init()
228 wm8994->edge_irq = irq_domain_add_linear(NULL, 1, in wm8994_irq_init()
230 wm8994); in wm8994_irq_init()
232 ret = regmap_add_irq_chip(wm8994->regmap, in wm8994_irq_init()
233 irq_create_mapping(wm8994->edge_irq, in wm8994_irq_init()
236 wm8994->irq_base, &wm8994_irq_chip, in wm8994_irq_init()
237 &wm8994->irq_data); in wm8994_irq_init()
239 dev_err(wm8994->dev, "Failed to get IRQ: %d\n", in wm8994_irq_init()
244 ret = request_threaded_irq(wm8994->irq, in wm8994_irq_init()
247 "WM8994 edge", wm8994); in wm8994_irq_init()
249 ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq, in wm8994_irq_init()
251 wm8994->irq_base, &wm8994_irq_chip, in wm8994_irq_init()
252 &wm8994->irq_data); in wm8994_irq_init()
256 dev_err(wm8994->dev, "Failed to register IRQ chip: %d\n", ret); in wm8994_irq_init()
261 wm8994_reg_write(wm8994, WM8994_INTERRUPT_CONTROL, 0); in wm8994_irq_init()
267 void wm8994_irq_exit(struct wm8994 *wm8994) in wm8994_irq_exit() argument
269 regmap_del_irq_chip(wm8994->irq, wm8994->irq_data); in wm8994_irq_exit()