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()
185 int wm8994_irq_init(struct wm8994 *wm8994) in wm8994_irq_init() argument
189 struct wm8994_pdata *pdata = &wm8994->pdata; in wm8994_irq_init()
191 if (!wm8994->irq) { in wm8994_irq_init()
192 dev_warn(wm8994->dev, in wm8994_irq_init()
194 wm8994->irq_base = 0; in wm8994_irq_init()
205 if (gpio_to_irq(pdata->irq_gpio) != wm8994->irq) { in wm8994_irq_init()
206 dev_warn(wm8994->dev, "IRQ %d is not GPIO %d (%d)\n", in wm8994_irq_init()
207 wm8994->irq, pdata->irq_gpio, in wm8994_irq_init()
209 wm8994->irq = gpio_to_irq(pdata->irq_gpio); in wm8994_irq_init()
212 ret = devm_gpio_request_one(wm8994->dev, pdata->irq_gpio, in wm8994_irq_init()
216 dev_err(wm8994->dev, "Failed to get IRQ GPIO: %d\n", in wm8994_irq_init()
221 wm8994->edge_irq = irq_domain_add_linear(NULL, 1, in wm8994_irq_init()
223 wm8994); in wm8994_irq_init()
225 ret = regmap_add_irq_chip(wm8994->regmap, in wm8994_irq_init()
226 irq_create_mapping(wm8994->edge_irq, in wm8994_irq_init()
229 wm8994->irq_base, &wm8994_irq_chip, in wm8994_irq_init()
230 &wm8994->irq_data); in wm8994_irq_init()
232 dev_err(wm8994->dev, "Failed to get IRQ: %d\n", in wm8994_irq_init()
237 ret = request_threaded_irq(wm8994->irq, in wm8994_irq_init()
240 "WM8994 edge", wm8994); in wm8994_irq_init()
242 ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq, in wm8994_irq_init()
244 wm8994->irq_base, &wm8994_irq_chip, in wm8994_irq_init()
245 &wm8994->irq_data); in wm8994_irq_init()
249 dev_err(wm8994->dev, "Failed to register IRQ chip: %d\n", ret); in wm8994_irq_init()
254 wm8994_reg_write(wm8994, WM8994_INTERRUPT_CONTROL, 0); in wm8994_irq_init()
260 void wm8994_irq_exit(struct wm8994 *wm8994) in wm8994_irq_exit() argument
262 regmap_del_irq_chip(wm8994->irq, wm8994->irq_data); in wm8994_irq_exit()