aboutsummaryrefslogtreecommitdiffstats
path: root/sound/core
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-12-25 05:40:28 -0500
committerTakashi Iwai <tiwai@suse.de>2008-12-25 05:40:28 -0500
commita65056205cdf7efb96fb2558e4f1ec6bae2582ed (patch)
tree22a5fa35464f26183e34aa4210fa6c145f24ddf3 /sound/core
parent313769d9edb1bbd59d2e94f5069950eecfe6fa44 (diff)
parent7645c4bfbb36f357f03815f5729c46ce8d89f008 (diff)
Merge branch 'topic/hda' into to-push
Diffstat (limited to 'sound/core')
-rw-r--r--sound/core/jack.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sound/core/jack.c b/sound/core/jack.c
index bd2d9e6b55e9..284432f427f4 100644
--- a/sound/core/jack.c
+++ b/sound/core/jack.c
@@ -34,6 +34,7 @@ static int snd_jack_dev_free(struct snd_device *device)
34 else 34 else
35 input_free_device(jack->input_dev); 35 input_free_device(jack->input_dev);
36 36
37 kfree(jack->id);
37 kfree(jack); 38 kfree(jack);
38 39
39 return 0; 40 return 0;
@@ -87,7 +88,7 @@ int snd_jack_new(struct snd_card *card, const char *id, int type,
87 if (jack == NULL) 88 if (jack == NULL)
88 return -ENOMEM; 89 return -ENOMEM;
89 90
90 jack->id = id; 91 jack->id = kstrdup(id, GFP_KERNEL);
91 92
92 jack->input_dev = input_allocate_device(); 93 jack->input_dev = input_allocate_device();
93 if (jack->input_dev == NULL) { 94 if (jack->input_dev == NULL) {
@@ -102,6 +103,9 @@ int snd_jack_new(struct snd_card *card, const char *id, int type,
102 if (type & SND_JACK_HEADPHONE) 103 if (type & SND_JACK_HEADPHONE)
103 input_set_capability(jack->input_dev, EV_SW, 104 input_set_capability(jack->input_dev, EV_SW,
104 SW_HEADPHONE_INSERT); 105 SW_HEADPHONE_INSERT);
106 if (type & SND_JACK_LINEOUT)
107 input_set_capability(jack->input_dev, EV_SW,
108 SW_LINEOUT_INSERT);
105 if (type & SND_JACK_MICROPHONE) 109 if (type & SND_JACK_MICROPHONE)
106 input_set_capability(jack->input_dev, EV_SW, 110 input_set_capability(jack->input_dev, EV_SW,
107 SW_MICROPHONE_INSERT); 111 SW_MICROPHONE_INSERT);
@@ -153,6 +157,9 @@ void snd_jack_report(struct snd_jack *jack, int status)
153 if (jack->type & SND_JACK_HEADPHONE) 157 if (jack->type & SND_JACK_HEADPHONE)
154 input_report_switch(jack->input_dev, SW_HEADPHONE_INSERT, 158 input_report_switch(jack->input_dev, SW_HEADPHONE_INSERT,
155 status & SND_JACK_HEADPHONE); 159 status & SND_JACK_HEADPHONE);
160 if (jack->type & SND_JACK_LINEOUT)
161 input_report_switch(jack->input_dev, SW_LINEOUT_INSERT,
162 status & SND_JACK_LINEOUT);
156 if (jack->type & SND_JACK_MICROPHONE) 163 if (jack->type & SND_JACK_MICROPHONE)
157 input_report_switch(jack->input_dev, SW_MICROPHONE_INSERT, 164 input_report_switch(jack->input_dev, SW_MICROPHONE_INSERT,
158 status & SND_JACK_MICROPHONE); 165 status & SND_JACK_MICROPHONE);