diff options
author | Matthew Ranostay <mranostay@embeddedalley.com> | 2008-10-25 01:05:04 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-10-27 03:15:14 -0400 |
commit | a53ccab3ccac9e8676a683df9822a2daec83ef54 (patch) | |
tree | 5e98c0731ae1b14a45447c41cf47bf67d3aed82c | |
parent | ebaa0470586eec83627fa03dcd0a1107f54258f8 (diff) |
ALSA: jack: lineout support to jack abstraction layer
This patch introduces support for reporting SW_LINEOUT_INSERT detection events
via the jack abstraction layer.
Also adds a SND_JACK_LINEOUT define to the input system header.
Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com>
Cc: Dmitry Torokhov <dtor@mail.ru>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | include/linux/input.h | 1 | ||||
-rw-r--r-- | include/sound/jack.h | 1 | ||||
-rw-r--r-- | sound/core/jack.c | 6 |
3 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/input.h b/include/linux/input.h index a5802c9c81a4..7323d2ff5151 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -644,6 +644,7 @@ struct input_absinfo { | |||
644 | #define SW_RADIO SW_RFKILL_ALL /* deprecated */ | 644 | #define SW_RADIO SW_RFKILL_ALL /* deprecated */ |
645 | #define SW_MICROPHONE_INSERT 0x04 /* set = inserted */ | 645 | #define SW_MICROPHONE_INSERT 0x04 /* set = inserted */ |
646 | #define SW_DOCK 0x05 /* set = plugged into dock */ | 646 | #define SW_DOCK 0x05 /* set = plugged into dock */ |
647 | #define SW_LINEOUT_INSERT 0x06 /* set = inserted */ | ||
647 | #define SW_MAX 0x0f | 648 | #define SW_MAX 0x0f |
648 | #define SW_CNT (SW_MAX+1) | 649 | #define SW_CNT (SW_MAX+1) |
649 | 650 | ||
diff --git a/include/sound/jack.h b/include/sound/jack.h index b1b2b8b59adb..7cb25f4b50bb 100644 --- a/include/sound/jack.h +++ b/include/sound/jack.h | |||
@@ -35,6 +35,7 @@ enum snd_jack_types { | |||
35 | SND_JACK_HEADPHONE = 0x0001, | 35 | SND_JACK_HEADPHONE = 0x0001, |
36 | SND_JACK_MICROPHONE = 0x0002, | 36 | SND_JACK_MICROPHONE = 0x0002, |
37 | SND_JACK_HEADSET = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE, | 37 | SND_JACK_HEADSET = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE, |
38 | SND_JACK_LINEOUT = 0x0004, | ||
38 | }; | 39 | }; |
39 | 40 | ||
40 | struct snd_jack { | 41 | struct snd_jack { |
diff --git a/sound/core/jack.c b/sound/core/jack.c index 8133a2b173a5..c4bb9bad3133 100644 --- a/sound/core/jack.c +++ b/sound/core/jack.c | |||
@@ -102,6 +102,9 @@ int snd_jack_new(struct snd_card *card, const char *id, int type, | |||
102 | if (type & SND_JACK_HEADPHONE) | 102 | if (type & SND_JACK_HEADPHONE) |
103 | input_set_capability(jack->input_dev, EV_SW, | 103 | input_set_capability(jack->input_dev, EV_SW, |
104 | SW_HEADPHONE_INSERT); | 104 | SW_HEADPHONE_INSERT); |
105 | if (type & SND_JACK_LINEOUT) | ||
106 | input_set_capability(jack->input_dev, EV_SW, | ||
107 | SW_LINEOUT_INSERT); | ||
105 | if (type & SND_JACK_MICROPHONE) | 108 | if (type & SND_JACK_MICROPHONE) |
106 | input_set_capability(jack->input_dev, EV_SW, | 109 | input_set_capability(jack->input_dev, EV_SW, |
107 | SW_MICROPHONE_INSERT); | 110 | SW_MICROPHONE_INSERT); |
@@ -150,6 +153,9 @@ void snd_jack_report(struct snd_jack *jack, int status) | |||
150 | if (jack->type & SND_JACK_HEADPHONE) | 153 | if (jack->type & SND_JACK_HEADPHONE) |
151 | input_report_switch(jack->input_dev, SW_HEADPHONE_INSERT, | 154 | input_report_switch(jack->input_dev, SW_HEADPHONE_INSERT, |
152 | status & SND_JACK_HEADPHONE); | 155 | status & SND_JACK_HEADPHONE); |
156 | if (jack->type & SND_JACK_LINEOUT) | ||
157 | input_report_switch(jack->input_dev, SW_LINEOUT_INSERT, | ||
158 | status & SND_JACK_LINEOUT); | ||
153 | if (jack->type & SND_JACK_MICROPHONE) | 159 | if (jack->type & SND_JACK_MICROPHONE) |
154 | input_report_switch(jack->input_dev, SW_MICROPHONE_INSERT, | 160 | input_report_switch(jack->input_dev, SW_MICROPHONE_INSERT, |
155 | status & SND_JACK_MICROPHONE); | 161 | status & SND_JACK_MICROPHONE); |