diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-12-25 13:40:28 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-12-25 13:40:28 +0300 |
commit | a65056205cdf7efb96fb2558e4f1ec6bae2582ed (patch) | |
tree | 22a5fa35464f26183e34aa4210fa6c145f24ddf3 /sound/core | |
parent | 313769d9edb1bbd59d2e94f5069950eecfe6fa44 (diff) | |
parent | 7645c4bfbb36f357f03815f5729c46ce8d89f008 (diff) | |
download | linux-a65056205cdf7efb96fb2558e4f1ec6bae2582ed.tar.xz |
Merge branch 'topic/hda' into to-push
Diffstat (limited to 'sound/core')
-rw-r--r-- | sound/core/jack.c | 9 |
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) else input_free_device(jack->input_dev); + kfree(jack->id); kfree(jack); return 0; @@ -87,7 +88,7 @@ int snd_jack_new(struct snd_card *card, const char *id, int type, if (jack == NULL) return -ENOMEM; - jack->id = id; + jack->id = kstrdup(id, GFP_KERNEL); jack->input_dev = input_allocate_device(); if (jack->input_dev == NULL) { @@ -102,6 +103,9 @@ int snd_jack_new(struct snd_card *card, const char *id, int type, if (type & SND_JACK_HEADPHONE) input_set_capability(jack->input_dev, EV_SW, SW_HEADPHONE_INSERT); + if (type & SND_JACK_LINEOUT) + input_set_capability(jack->input_dev, EV_SW, + SW_LINEOUT_INSERT); if (type & SND_JACK_MICROPHONE) input_set_capability(jack->input_dev, EV_SW, SW_MICROPHONE_INSERT); @@ -153,6 +157,9 @@ void snd_jack_report(struct snd_jack *jack, int status) if (jack->type & SND_JACK_HEADPHONE) input_report_switch(jack->input_dev, SW_HEADPHONE_INSERT, status & SND_JACK_HEADPHONE); + if (jack->type & SND_JACK_LINEOUT) + input_report_switch(jack->input_dev, SW_LINEOUT_INSERT, + status & SND_JACK_LINEOUT); if (jack->type & SND_JACK_MICROPHONE) input_report_switch(jack->input_dev, SW_MICROPHONE_INSERT, status & SND_JACK_MICROPHONE); |