Revert "ALSA: jack: Access input_dev under mutex"
This reverts commit e2b8681769
which is
commit 1b6a6fc5280e97559287b61eade2d4b363e836f2 upstream.
It breaks the Android kernel ABI and is not needed for Android devices,
so it is safe to revert for now. If it is determined that it is needed
in the future, it can be brought back in an abi-preserving way.
Bug: 161946584
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I3b24427044ea6b385a2f686c71c6b239a3d00f18
This commit is contained in:
parent
8636671438
commit
28fd8700b4
@ -63,7 +63,6 @@ struct snd_jack {
|
||||
const char *id;
|
||||
#ifdef CONFIG_SND_JACK_INPUT_DEV
|
||||
struct input_dev *input_dev;
|
||||
struct mutex input_dev_lock;
|
||||
int registered;
|
||||
int type;
|
||||
char name[100];
|
||||
|
@ -34,11 +34,8 @@ static int snd_jack_dev_disconnect(struct snd_device *device)
|
||||
#ifdef CONFIG_SND_JACK_INPUT_DEV
|
||||
struct snd_jack *jack = device->device_data;
|
||||
|
||||
mutex_lock(&jack->input_dev_lock);
|
||||
if (!jack->input_dev) {
|
||||
mutex_unlock(&jack->input_dev_lock);
|
||||
if (!jack->input_dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* If the input device is registered with the input subsystem
|
||||
* then we need to use a different deallocator. */
|
||||
@ -47,7 +44,6 @@ static int snd_jack_dev_disconnect(struct snd_device *device)
|
||||
else
|
||||
input_free_device(jack->input_dev);
|
||||
jack->input_dev = NULL;
|
||||
mutex_unlock(&jack->input_dev_lock);
|
||||
#endif /* CONFIG_SND_JACK_INPUT_DEV */
|
||||
return 0;
|
||||
}
|
||||
@ -86,11 +82,8 @@ static int snd_jack_dev_register(struct snd_device *device)
|
||||
snprintf(jack->name, sizeof(jack->name), "%s %s",
|
||||
card->shortname, jack->id);
|
||||
|
||||
mutex_lock(&jack->input_dev_lock);
|
||||
if (!jack->input_dev) {
|
||||
mutex_unlock(&jack->input_dev_lock);
|
||||
if (!jack->input_dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
jack->input_dev->name = jack->name;
|
||||
|
||||
@ -115,7 +108,6 @@ static int snd_jack_dev_register(struct snd_device *device)
|
||||
if (err == 0)
|
||||
jack->registered = 1;
|
||||
|
||||
mutex_unlock(&jack->input_dev_lock);
|
||||
return err;
|
||||
}
|
||||
#endif /* CONFIG_SND_JACK_INPUT_DEV */
|
||||
@ -236,11 +228,9 @@ int snd_jack_new(struct snd_card *card, const char *id, int type,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SND_JACK_INPUT_DEV
|
||||
mutex_init(&jack->input_dev_lock);
|
||||
|
||||
/* don't create input device for phantom jack */
|
||||
/* don't creat input device for phantom jack */
|
||||
if (!phantom_jack) {
|
||||
#ifdef CONFIG_SND_JACK_INPUT_DEV
|
||||
int i;
|
||||
|
||||
jack->input_dev = input_allocate_device();
|
||||
@ -258,8 +248,8 @@ int snd_jack_new(struct snd_card *card, const char *id, int type,
|
||||
input_set_capability(jack->input_dev, EV_SW,
|
||||
jack_switch_types[i]);
|
||||
|
||||
}
|
||||
#endif /* CONFIG_SND_JACK_INPUT_DEV */
|
||||
}
|
||||
|
||||
err = snd_device_new(card, SNDRV_DEV_JACK, jack, &ops);
|
||||
if (err < 0)
|
||||
@ -299,14 +289,10 @@ EXPORT_SYMBOL(snd_jack_new);
|
||||
void snd_jack_set_parent(struct snd_jack *jack, struct device *parent)
|
||||
{
|
||||
WARN_ON(jack->registered);
|
||||
mutex_lock(&jack->input_dev_lock);
|
||||
if (!jack->input_dev) {
|
||||
mutex_unlock(&jack->input_dev_lock);
|
||||
if (!jack->input_dev)
|
||||
return;
|
||||
}
|
||||
|
||||
jack->input_dev->dev.parent = parent;
|
||||
mutex_unlock(&jack->input_dev_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(snd_jack_set_parent);
|
||||
|
||||
@ -354,8 +340,6 @@ EXPORT_SYMBOL(snd_jack_set_key);
|
||||
|
||||
/**
|
||||
* snd_jack_report - Report the current status of a jack
|
||||
* Note: This function uses mutexes and should be called from a
|
||||
* context which can sleep (such as a workqueue).
|
||||
*
|
||||
* @jack: The jack to report status for
|
||||
* @status: The current status of the jack
|
||||
@ -375,11 +359,8 @@ void snd_jack_report(struct snd_jack *jack, int status)
|
||||
status & jack_kctl->mask_bits);
|
||||
|
||||
#ifdef CONFIG_SND_JACK_INPUT_DEV
|
||||
mutex_lock(&jack->input_dev_lock);
|
||||
if (!jack->input_dev) {
|
||||
mutex_unlock(&jack->input_dev_lock);
|
||||
if (!jack->input_dev)
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(jack->key); i++) {
|
||||
int testbit = SND_JACK_BTN_0 >> i;
|
||||
@ -398,7 +379,6 @@ void snd_jack_report(struct snd_jack *jack, int status)
|
||||
}
|
||||
|
||||
input_sync(jack->input_dev);
|
||||
mutex_unlock(&jack->input_dev_lock);
|
||||
#endif /* CONFIG_SND_JACK_INPUT_DEV */
|
||||
}
|
||||
EXPORT_SYMBOL(snd_jack_report);
|
||||
|
Loading…
Reference in New Issue
Block a user