diff options
-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); |