diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-10-27 08:36:48 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-10-27 08:36:48 +0100 |
commit | 42dc2378b52bb6e155dd2e4fb4ca694785bf2c1d (patch) | |
tree | cba90396b1c91c923758b47d55ad0f1d50100168 /sound/core/jack.c | |
parent | da74ae3e32374755e0fbdfed4074cf839a82f615 (diff) | |
parent | 74aeaabc3e452b29bc1b9eac5aa48923569f8a4e (diff) |
Merge branch 'topic/hda-next' into topic/hda
Diffstat (limited to 'sound/core/jack.c')
-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 8133a2b173a..438445f77d6 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); @@ -150,6 +154,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); |