From 7c0141591fcf92ddc96a4ee04e35783a15bd68c8 Mon Sep 17 00:00:00 2001 From: Clemens Ladisch Date: Mon, 28 Jan 2008 08:36:55 +0100 Subject: [ALSA] virtuoso: monitor external power on D2X On the Xonar D2X, monitor the GPIO pin that indicates whether external power is present. Signed-off-by: Clemens Ladisch Signed-off-by: Jaroslav Kysela --- sound/pci/oxygen/oxygen_lib.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'sound/pci/oxygen/oxygen_lib.c') diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c index 540e56b7579..6eb36dd1147 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) } if (status & OXYGEN_INT_GPIO) - ; + schedule_work(&chip->gpio_work); if ((status & OXYGEN_INT_MIDI) && chip->midi) snd_mpu401_uart_interrupt(0, chip->midi->private_data); @@ -157,6 +157,14 @@ static void oxygen_spdif_input_bits_changed(struct work_struct *work) } } +static void oxygen_gpio_changed(struct work_struct *work) +{ + struct oxygen *chip = container_of(work, struct oxygen, gpio_work); + + if (chip->model->gpio_changed) + chip->model->gpio_changed(chip); +} + #ifdef CONFIG_PROC_FS static void oxygen_proc_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer) @@ -413,6 +421,7 @@ int __devinit oxygen_pci_probe(struct pci_dev *pci, int index, char *id, mutex_init(&chip->mutex); INIT_WORK(&chip->spdif_input_bits_work, oxygen_spdif_input_bits_changed); + INIT_WORK(&chip->gpio_work, oxygen_gpio_changed); init_waitqueue_head(&chip->ac97_waitqueue); err = pci_enable_device(pci); -- cgit v1.2.3