Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7887ab3a authored by Mark Brown's avatar Mark Brown
Browse files

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: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
parent 5a9f91ca
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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;

+8 −0
Original line number Diff line number Diff line
@@ -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);