aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/oxygen/oxygen_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/oxygen/oxygen_lib.c')
-rw-r--r--sound/pci/oxygen/oxygen_lib.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c
index 540e56b75794..6eb36dd11476 100644
--- a/sound/pci/oxygen/oxygen_lib.c
+++ b/sound/pci/oxygen/oxygen_lib.c
@@ -85,7 +85,7 @@ static irqreturn_t oxygen_interrupt(int dummy, void *dev_id)
85 } 85 }
86 86
87 if (status & OXYGEN_INT_GPIO) 87 if (status & OXYGEN_INT_GPIO)
88 ; 88 schedule_work(&chip->gpio_work);
89 89
90 if ((status & OXYGEN_INT_MIDI) && chip->midi) 90 if ((status & OXYGEN_INT_MIDI) && chip->midi)
91 snd_mpu401_uart_interrupt(0, chip->midi->private_data); 91 snd_mpu401_uart_interrupt(0, chip->midi->private_data);
@@ -157,6 +157,14 @@ static void oxygen_spdif_input_bits_changed(struct work_struct *work)
157 } 157 }
158} 158}
159 159
160static void oxygen_gpio_changed(struct work_struct *work)
161{
162 struct oxygen *chip = container_of(work, struct oxygen, gpio_work);
163
164 if (chip->model->gpio_changed)
165 chip->model->gpio_changed(chip);
166}
167
160#ifdef CONFIG_PROC_FS 168#ifdef CONFIG_PROC_FS
161static void oxygen_proc_read(struct snd_info_entry *entry, 169static void oxygen_proc_read(struct snd_info_entry *entry,
162 struct snd_info_buffer *buffer) 170 struct snd_info_buffer *buffer)
@@ -413,6 +421,7 @@ int __devinit oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
413 mutex_init(&chip->mutex); 421 mutex_init(&chip->mutex);
414 INIT_WORK(&chip->spdif_input_bits_work, 422 INIT_WORK(&chip->spdif_input_bits_work,
415 oxygen_spdif_input_bits_changed); 423 oxygen_spdif_input_bits_changed);
424 INIT_WORK(&chip->gpio_work, oxygen_gpio_changed);
416 init_waitqueue_head(&chip->ac97_waitqueue); 425 init_waitqueue_head(&chip->ac97_waitqueue);
417 426
418 err = pci_enable_device(pci); 427 err = pci_enable_device(pci);