aboutsummaryrefslogtreecommitdiffstats
path: root/sound/ppc/tumbler.c
diff options
context:
space:
mode:
authorGuido Guenther <agx@sigxcpu.org>2005-11-15 01:28:05 -0500
committerPaul Mackerras <paulus@samba.org>2005-11-15 21:51:50 -0500
commitc0ce5c5228dd17d4e3dd1d15b8d52714262cab70 (patch)
treec4666405c979bd4fb327030416b01fe917259a7f /sound/ppc/tumbler.c
parentb5166cc252190be80465f3b4f050e4a0310f71af (diff)
[PATCH] PowerBook 6,1: headphone not detected after suspend
ever since suspend to disk works I had the problem that headphone (un)plugging doesn't get detected properly anymore after the first resume. Reloading the module worked around this ever since, however the real cause of the problem was that after a resume the driver only got interrupts on "unplug" not on "plug". Reactivating the headphone status interrupt in tumbler_resume fixes this. This shouldn't cause any trouble with software suspend, but it would be nice if somebody could confirm this: Signed-off-by: Guido Guenther <agx@sigxcpu.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'sound/ppc/tumbler.c')
-rw-r--r--sound/ppc/tumbler.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sound/ppc/tumbler.c b/sound/ppc/tumbler.c
index 65384afcfc3f..d74bfabe5300 100644
--- a/sound/ppc/tumbler.c
+++ b/sound/ppc/tumbler.c
@@ -1194,8 +1194,14 @@ static void tumbler_resume(pmac_t *chip)
1194 tumbler_set_master_volume(mix); 1194 tumbler_set_master_volume(mix);
1195 if (chip->update_automute) 1195 if (chip->update_automute)
1196 chip->update_automute(chip, 0); 1196 chip->update_automute(chip, 0);
1197 if (mix->headphone_irq >= 0) 1197 if (mix->headphone_irq >= 0) {
1198 unsigned char val;
1199
1198 enable_irq(mix->headphone_irq); 1200 enable_irq(mix->headphone_irq);
1201 /* activate headphone status interrupts */
1202 val = do_gpio_read(&mix->hp_detect);
1203 do_gpio_write(&mix->hp_detect, val | 0x80);
1204 }
1199 if (mix->lineout_irq >= 0) 1205 if (mix->lineout_irq >= 0)
1200 enable_irq(mix->lineout_irq); 1206 enable_irq(mix->lineout_irq);
1201} 1207}