forked from luck/tmp_suning_uos_patched
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 <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
parent
5a9f91ca79
commit
7887ab3a27
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user