Lines Matching refs:gpios
207 struct snd_soc_jack_gpio *gpios;
280 struct snd_soc_jack_gpio *gpios)
285 gpiod_unexport(gpios[i].desc);
286 unregister_pm_notifier(&gpios[i].pm_notifier);
287 free_irq(gpiod_to_irq(gpios[i].desc), &gpios[i]);
288 cancel_delayed_work_sync(&gpios[i].work);
289 gpiod_put(gpios[i].desc);
290 gpios[i].jack = NULL;
298 jack_free_gpios(tbl->jack, tbl->count, tbl->gpios);
306 * @gpios: array of gpio pins
312 struct snd_soc_jack_gpio *gpios)
322 tbl->gpios = gpios;
325 if (!gpios[i].name) {
332 if (gpios[i].desc) {
335 } else if (gpios[i].gpiod_dev) {
337 gpios[i].desc = gpiod_get_index(gpios[i].gpiod_dev,
338 gpios[i].name,
339 gpios[i].idx, GPIOD_IN);
340 if (IS_ERR(gpios[i].desc)) {
341 ret = PTR_ERR(gpios[i].desc);
342 dev_err(gpios[i].gpiod_dev,
349 if (!gpio_is_valid(gpios[i].gpio)) {
352 gpios[i].gpio);
357 ret = gpio_request_one(gpios[i].gpio, GPIOF_IN,
358 gpios[i].name);
362 gpios[i].desc = gpio_to_desc(gpios[i].gpio);
365 INIT_DELAYED_WORK(&gpios[i].work, gpio_work);
366 gpios[i].jack = jack;
368 ret = request_any_context_irq(gpiod_to_irq(gpios[i].desc),
373 gpios[i].name,
374 &gpios[i]);
378 if (gpios[i].wake) {
379 ret = irq_set_irq_wake(gpiod_to_irq(gpios[i].desc), 1);
390 gpios[i].pm_notifier.notifier_call = snd_soc_jack_pm_notifier;
391 register_pm_notifier(&gpios[i].pm_notifier);
394 gpiod_export(gpios[i].desc, false);
397 schedule_delayed_work(&gpios[i].work,
398 msecs_to_jiffies(gpios[i].debounce_time));
405 gpio_free(gpios[i].gpio);
407 jack_free_gpios(jack, i, gpios);
420 * @gpios: array of gpio pins
427 int count, struct snd_soc_jack_gpio *gpios)
432 gpios[i].gpiod_dev = gpiod_dev;
434 return snd_soc_jack_add_gpios(jack, count, gpios);
443 * @gpios: array of gpio pins
448 struct snd_soc_jack_gpio *gpios)
450 jack_free_gpios(jack, count, gpios);