Loading include/sound/jack.h +3 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,9 @@ struct input_dev; /** * Jack types which can be reported. These values are used as a * bitmask. * * Note that this must be kept in sync with the lookup table in * sound/core/jack.c. */ enum snd_jack_types { SND_JACK_HEADPHONE = 0x0001, Loading sound/core/jack.c +20 −24 Original line number Diff line number Diff line Loading @@ -23,6 +23,13 @@ #include <sound/jack.h> #include <sound/core.h> static int jack_types[] = { SW_HEADPHONE_INSERT, SW_MICROPHONE_INSERT, SW_LINEOUT_INSERT, SW_JACK_PHYSICAL_INSERT, }; static int snd_jack_dev_free(struct snd_device *device) { struct snd_jack *jack = device->device_data; Loading Loading @@ -79,6 +86,7 @@ int snd_jack_new(struct snd_card *card, const char *id, int type, { struct snd_jack *jack; int err; int i; static struct snd_device_ops ops = { .dev_free = snd_jack_dev_free, .dev_register = snd_jack_dev_register, Loading @@ -100,18 +108,10 @@ int snd_jack_new(struct snd_card *card, const char *id, int type, jack->type = 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) for (i = 0; i < ARRAY_SIZE(jack_types); i++) if (type & (1 << i)) input_set_capability(jack->input_dev, EV_SW, SW_MICROPHONE_INSERT); if (type & SND_JACK_MECHANICAL) input_set_capability(jack->input_dev, EV_SW, SW_JACK_PHYSICAL_INSERT); jack_types[i]); err = snd_device_new(card, SNDRV_DEV_JACK, jack, &ops); if (err < 0) Loading Loading @@ -154,21 +154,17 @@ EXPORT_SYMBOL(snd_jack_set_parent); */ void snd_jack_report(struct snd_jack *jack, int status) { int i; if (!jack) return; 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); if (jack->type & SND_JACK_MECHANICAL) input_report_switch(jack->input_dev, SW_JACK_PHYSICAL_INSERT, status & SND_JACK_MECHANICAL); for (i = 0; i < ARRAY_SIZE(jack_types); i++) { int testbit = 1 << i; if (jack->type & testbit) input_report_switch(jack->input_dev, jack_types[i], status & testbit); } input_sync(jack->input_dev); } Loading Loading
include/sound/jack.h +3 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,9 @@ struct input_dev; /** * Jack types which can be reported. These values are used as a * bitmask. * * Note that this must be kept in sync with the lookup table in * sound/core/jack.c. */ enum snd_jack_types { SND_JACK_HEADPHONE = 0x0001, Loading
sound/core/jack.c +20 −24 Original line number Diff line number Diff line Loading @@ -23,6 +23,13 @@ #include <sound/jack.h> #include <sound/core.h> static int jack_types[] = { SW_HEADPHONE_INSERT, SW_MICROPHONE_INSERT, SW_LINEOUT_INSERT, SW_JACK_PHYSICAL_INSERT, }; static int snd_jack_dev_free(struct snd_device *device) { struct snd_jack *jack = device->device_data; Loading Loading @@ -79,6 +86,7 @@ int snd_jack_new(struct snd_card *card, const char *id, int type, { struct snd_jack *jack; int err; int i; static struct snd_device_ops ops = { .dev_free = snd_jack_dev_free, .dev_register = snd_jack_dev_register, Loading @@ -100,18 +108,10 @@ int snd_jack_new(struct snd_card *card, const char *id, int type, jack->type = 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) for (i = 0; i < ARRAY_SIZE(jack_types); i++) if (type & (1 << i)) input_set_capability(jack->input_dev, EV_SW, SW_MICROPHONE_INSERT); if (type & SND_JACK_MECHANICAL) input_set_capability(jack->input_dev, EV_SW, SW_JACK_PHYSICAL_INSERT); jack_types[i]); err = snd_device_new(card, SNDRV_DEV_JACK, jack, &ops); if (err < 0) Loading Loading @@ -154,21 +154,17 @@ EXPORT_SYMBOL(snd_jack_set_parent); */ void snd_jack_report(struct snd_jack *jack, int status) { int i; if (!jack) return; 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); if (jack->type & SND_JACK_MECHANICAL) input_report_switch(jack->input_dev, SW_JACK_PHYSICAL_INSERT, status & SND_JACK_MECHANICAL); for (i = 0; i < ARRAY_SIZE(jack_types); i++) { int testbit = 1 << i; if (jack->type & testbit) input_report_switch(jack->input_dev, jack_types[i], status & testbit); } input_sync(jack->input_dev); } Loading