git.samba.org
/
sfrench
/
cifs-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
[sfrench/cifs-2.6.git]
/
drivers
/
media
/
video
/
saa7134
/
saa7134-alsa.c
diff --git
a/drivers/media/video/saa7134/saa7134-alsa.c
b/drivers/media/video/saa7134/saa7134-alsa.c
index bb3e0ba946d34b2eb2b854a25b8b44f1a4a06e55..4abf5c03a740f14c035d771349bd3ea82159772f 100644
(file)
--- a/
drivers/media/video/saa7134/saa7134-alsa.c
+++ b/
drivers/media/video/saa7134/saa7134-alsa.c
@@
-212,7
+212,7
@@
static void saa7134_irq_alsa_done(struct saa7134_dev *dev,
*
*/
*
*/
-static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id
, struct pt_regs *regs
)
+static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id)
{
struct saa7134_dmasound *dmasound = dev_id;
struct saa7134_dev *dev = dmasound->priv_data;
{
struct saa7134_dmasound *dmasound = dev_id;
struct saa7134_dev *dev = dmasound->priv_data;
@@
-590,6
+590,11
@@
static int snd_card_saa7134_hw_free(struct snd_pcm_substream * substream)
static int snd_card_saa7134_capture_close(struct snd_pcm_substream * substream)
{
static int snd_card_saa7134_capture_close(struct snd_pcm_substream * substream)
{
+ snd_card_saa7134_t *saa7134 = snd_pcm_substream_chip(substream);
+ struct saa7134_dev *dev = saa7134->dev;
+
+ dev->ctl_mute = 1;
+ saa7134_tvaudio_setmute(dev);
return 0;
}
return 0;
}
@@
-631,6
+636,9
@@
static int snd_card_saa7134_capture_open(struct snd_pcm_substream * substream)
runtime->private_free = snd_card_saa7134_runtime_free;
runtime->hw = snd_card_saa7134_capture;
runtime->private_free = snd_card_saa7134_runtime_free;
runtime->hw = snd_card_saa7134_capture;
+ dev->ctl_mute = 0;
+ saa7134_tvaudio_setmute(dev);
+
if ((err = snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS)) < 0)
return err;
if ((err = snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS)) < 0)
return err;
@@
-818,7
+826,7
@@
static int snd_saa7134_capsrc_put(struct snd_kcontrol * kcontrol,
break;
}
break;
}
- /* output xbar always main channel */
+ /* output xbar always main channel */
saa_dsp_writel(dev, SAA7133_DIGITAL_OUTPUT_SEL1, 0xbbbb10);
if (left || right) { // We've got data, turn the input on
saa_dsp_writel(dev, SAA7133_DIGITAL_OUTPUT_SEL1, 0xbbbb10);
if (left || right) { // We've got data, turn the input on
@@
-929,7
+937,7
@@
static int alsa_card_saa7134_create(struct saa7134_dev *dev, int devnum)
err = request_irq(dev->pci->irq, saa7134_alsa_irq,
err = request_irq(dev->pci->irq, saa7134_alsa_irq,
-
SA_SHIRQ | SA_INTERRUPT
, dev->name,
+
IRQF_SHARED | IRQF_DISABLED
, dev->name,
(void*) &dev->dmasound);
if (err < 0) {
(void*) &dev->dmasound);
if (err < 0) {
@@
-997,9
+1005,9
@@
static int saa7134_alsa_init(void)
struct saa7134_dev *dev = NULL;
struct list_head *list;
struct saa7134_dev *dev = NULL;
struct list_head *list;
- if (!
dmasound_init && !
dmasound_exit) {
- dmasound_init = alsa_device_init;
- dmasound_exit = alsa_device_exit;
+ if (!
saa7134_dmasound_init && !saa7134_
dmasound_exit) {
+
saa7134_
dmasound_init = alsa_device_init;
+
saa7134_
dmasound_exit = alsa_device_exit;
} else {
printk(KERN_WARNING "saa7134 ALSA: can't load, DMA sound handler already assigned (probably to OSS)\n");
return -EBUSY;
} else {
printk(KERN_WARNING "saa7134 ALSA: can't load, DMA sound handler already assigned (probably to OSS)\n");
return -EBUSY;
@@
-1036,8
+1044,8
@@
static void saa7134_alsa_exit(void)
snd_card_free(snd_saa7134_cards[idx]);
}
snd_card_free(snd_saa7134_cards[idx]);
}
- dmasound_init = NULL;
- dmasound_exit = NULL;
+
saa7134_
dmasound_init = NULL;
+
saa7134_
dmasound_exit = NULL;
printk(KERN_INFO "saa7134 ALSA driver for DMA sound unloaded\n");
return;
printk(KERN_INFO "saa7134 ALSA driver for DMA sound unloaded\n");
return;