From: Mark Brown Date: Fri, 18 Feb 2011 00:35:55 +0000 (-0800) Subject: ASoC: Allow GPIO jack detection to be configured as a wake source X-Git-Tag: accepted/tizen/common/20141203.182822~4454^2~1145^2~78 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7887ab3a274dc5f1d1d94ca0cd41ae495d01f94f;p=platform%2Fkernel%2Flinux-arm64.git ASoC: Allow GPIO jack detection to be configured as a wake source Some systems wish to use jacks as wake sources. Provide a wake flag in the GPIO configuration which causes the driver to enable the IRQ as a wake source. Signed-off-by: Mark Brown Acked-by: Liam Girdwood --- diff --git a/include/sound/soc.h b/include/sound/soc.h index 4ccf1e4..fb57c33 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -436,6 +436,7 @@ struct snd_soc_jack_zone { * @report: value to report when jack detected * @invert: report presence in low state * @debouce_time: debouce time in ms + * @wake: enable as wake source */ #ifdef CONFIG_GPIOLIB struct snd_soc_jack_gpio { @@ -444,6 +445,8 @@ struct snd_soc_jack_gpio { int report; int invert; int debounce_time; + bool wake; + struct snd_soc_jack *jack; struct delayed_work work; diff --git a/sound/soc/soc-jack.c b/sound/soc/soc-jack.c index 4579ee0..1382251 100644 --- a/sound/soc/soc-jack.c +++ b/sound/soc/soc-jack.c @@ -330,6 +330,14 @@ int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count, if (ret) goto err; + if (gpios[i].wake) { + ret = set_irq_wake(gpio_to_irq(gpios[i].gpio), 1); + if (ret != 0) + printk(KERN_ERR + "Failed to mark GPIO %d as wake source: %d\n", + gpios[i].gpio, ret); + } + #ifdef CONFIG_GPIO_SYSFS /* Expose GPIO value over sysfs for diagnostic purposes */ gpio_export(gpios[i].gpio, false);