Lines Matching full:gpios

292  * @gpios: array of gpio pins
298 struct snd_soc_jack_gpio *gpios) in snd_soc_jack_add_gpios() argument
303 if (!gpio_is_valid(gpios[i].gpio)) { in snd_soc_jack_add_gpios()
305 gpios[i].gpio); in snd_soc_jack_add_gpios()
309 if (!gpios[i].name) { in snd_soc_jack_add_gpios()
311 gpios[i].gpio); in snd_soc_jack_add_gpios()
316 ret = gpio_request(gpios[i].gpio, gpios[i].name); in snd_soc_jack_add_gpios()
320 ret = gpio_direction_input(gpios[i].gpio); in snd_soc_jack_add_gpios()
324 INIT_DELAYED_WORK(&gpios[i].work, gpio_work); in snd_soc_jack_add_gpios()
325 gpios[i].jack = jack; in snd_soc_jack_add_gpios()
327 ret = request_any_context_irq(gpio_to_irq(gpios[i].gpio), in snd_soc_jack_add_gpios()
331 gpios[i].name, in snd_soc_jack_add_gpios()
332 &gpios[i]); in snd_soc_jack_add_gpios()
336 if (gpios[i].wake) { in snd_soc_jack_add_gpios()
337 ret = irq_set_irq_wake(gpio_to_irq(gpios[i].gpio), 1); in snd_soc_jack_add_gpios()
341 gpios[i].gpio, ret); in snd_soc_jack_add_gpios()
345 gpio_export(gpios[i].gpio, false); in snd_soc_jack_add_gpios()
348 snd_soc_jack_gpio_detect(&gpios[i]); in snd_soc_jack_add_gpios()
354 gpio_free(gpios[i].gpio); in snd_soc_jack_add_gpios()
356 snd_soc_jack_free_gpios(jack, i, gpios); in snd_soc_jack_add_gpios()
367 * @gpios: array of gpio pins
372 struct snd_soc_jack_gpio *gpios) in snd_soc_jack_free_gpios() argument
377 gpio_unexport(gpios[i].gpio); in snd_soc_jack_free_gpios()
378 free_irq(gpio_to_irq(gpios[i].gpio), &gpios[i]); in snd_soc_jack_free_gpios()
379 cancel_delayed_work_sync(&gpios[i].work); in snd_soc_jack_free_gpios()
380 gpio_free(gpios[i].gpio); in snd_soc_jack_free_gpios()
381 gpios[i].jack = NULL; in snd_soc_jack_free_gpios()