diff options
author | Shridhar Rasal <srasal@nvidia.com> | 2011-08-03 15:04:28 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2011-08-04 15:40:29 -0700 |
commit | 650a7456e4f2764e4297969fb93ff3f43401ef4b (patch) | |
tree | 7fd184a478e8a572ade88593512c4d0ba044e99f /sound/soc/tegra/tegra_wired_jack.c | |
parent | 45ac4ca12af784230d0c5b882dc03a963fe33d12 (diff) |
ASOC: tegra: Disable/Enable wired jack IRQtegra-10.11.13-rc1tegra-10.11.13
Disable/enable wired jack interrupts while going into
suspend/resume.
Bug 854830
Change-Id: Idfe6384258b464a65f4f1efca276c2b4ac7e86b0
Reviewed-on: http://git-master/r/44720
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'sound/soc/tegra/tegra_wired_jack.c')
-rw-r--r-- | sound/soc/tegra/tegra_wired_jack.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/sound/soc/tegra/tegra_wired_jack.c b/sound/soc/tegra/tegra_wired_jack.c index 8c1ff4f354cd..081ec965b1e9 100644 --- a/sound/soc/tegra/tegra_wired_jack.c +++ b/sound/soc/tegra/tegra_wired_jack.c @@ -130,16 +130,26 @@ static int wired_switch_notify(struct notifier_block *self, void tegra_jack_suspend(void) { - snd_soc_jack_free_gpios(tegra_wired_jack, - ARRAY_SIZE(wired_jack_gpios), - wired_jack_gpios); + int i; + + for (i = 0; i < ARRAY_SIZE(wired_jack_gpios); i++) + disable_irq(gpio_to_irq(wired_jack_gpios[i].gpio)); } void tegra_jack_resume(void) { - snd_soc_jack_add_gpios(tegra_wired_jack, - ARRAY_SIZE(wired_jack_gpios), - wired_jack_gpios); + int i, val; + + for (i = 0; i < ARRAY_SIZE(wired_jack_gpios); i++) { + val = gpio_get_value(wired_jack_gpios[i].gpio); + val = wired_jack_gpios[i].invert ? !val : val; + val = val ? wired_jack_gpios[i].report : 0; + + snd_soc_jack_report(tegra_wired_jack, val, + wired_jack_gpios[i].report); + + enable_irq(gpio_to_irq(wired_jack_gpios[i].gpio)); + } } static struct notifier_block wired_switch_nb = { |