diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-11-03 13:14:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-11-03 13:14:59 -0500 |
commit | 20ebc0073b0fb63ce4a27ca761418ecfdecaadb7 (patch) | |
tree | e536365120ae7ec3d8622e75d847c44460dc84f1 | |
parent | c8126cc6025972629044cde750cec97f175792f7 (diff) | |
parent | 7aeb6d7d20185b7cede1ce5f6bd8d762e49bda6d (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
ALSA: hda: make a STAC_DELL_EQ option
ALSA: emu10k1 - Add more invert_shared_spdif flag to Audigy models
ALSA: hda - Add a quirk for another Acer Aspire (1025:0090)
ALSA: remove direct access of dev->bus_id in sound/isa/*
sound: struct device - replace bus_id with dev_name(), dev_set_name()
ALSA: Fix PIT lockup on some chipsets when using the PC-Speaker
ALSA: rawmidi - Add open check in rawmidi callbacks
ALSA: hda - Add digital-mic for ALC269 auto-probe mode
ALSA: hda - Disable broken mic auto-muting in Realtek codes
-rw-r--r-- | sound/aoa/soundbus/core.c | 2 | ||||
-rw-r--r-- | sound/core/rawmidi.c | 8 | ||||
-rw-r--r-- | sound/drivers/ml403-ac97cr.c | 4 | ||||
-rw-r--r-- | sound/drivers/pcsp/pcsp_input.c | 4 | ||||
-rw-r--r-- | sound/isa/ad1848/ad1848.c | 6 | ||||
-rw-r--r-- | sound/isa/adlib.c | 12 | ||||
-rw-r--r-- | sound/isa/cs423x/cs4231.c | 8 | ||||
-rw-r--r-- | sound/isa/cs423x/cs4236.c | 8 | ||||
-rw-r--r-- | sound/isa/es1688/es1688.c | 9 | ||||
-rw-r--r-- | sound/isa/gus/gusclassic.c | 13 | ||||
-rw-r--r-- | sound/isa/gus/gusextreme.c | 19 | ||||
-rw-r--r-- | sound/isa/sb/sb8.c | 4 | ||||
-rw-r--r-- | sound/pci/emu10k1/emu10k1_main.c | 3 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 29 | ||||
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 16 | ||||
-rw-r--r-- | sound/soc/soc-core.c | 4 |
16 files changed, 89 insertions, 60 deletions
diff --git a/sound/aoa/soundbus/core.c b/sound/aoa/soundbus/core.c index f84f3e505788..fa8ab2815a98 100644 --- a/sound/aoa/soundbus/core.c +++ b/sound/aoa/soundbus/core.c | |||
@@ -176,7 +176,7 @@ int soundbus_add_one(struct soundbus_dev *dev) | |||
176 | return -EINVAL; | 176 | return -EINVAL; |
177 | } | 177 | } |
178 | 178 | ||
179 | snprintf(dev->ofdev.dev.bus_id, BUS_ID_SIZE, "soundbus:%x", ++devcount); | 179 | dev_set_name(&dev->ofdev.dev, "soundbus:%x", ++devcount); |
180 | dev->ofdev.dev.bus = &soundbus_bus_type; | 180 | dev->ofdev.dev.bus = &soundbus_bus_type; |
181 | return of_device_register(&dev->ofdev); | 181 | return of_device_register(&dev->ofdev); |
182 | } | 182 | } |
diff --git a/sound/core/rawmidi.c b/sound/core/rawmidi.c index c4995c9f5730..39672f68ce5d 100644 --- a/sound/core/rawmidi.c +++ b/sound/core/rawmidi.c | |||
@@ -148,6 +148,8 @@ static int snd_rawmidi_runtime_free(struct snd_rawmidi_substream *substream) | |||
148 | 148 | ||
149 | static inline void snd_rawmidi_output_trigger(struct snd_rawmidi_substream *substream,int up) | 149 | static inline void snd_rawmidi_output_trigger(struct snd_rawmidi_substream *substream,int up) |
150 | { | 150 | { |
151 | if (!substream->opened) | ||
152 | return; | ||
151 | if (up) { | 153 | if (up) { |
152 | tasklet_hi_schedule(&substream->runtime->tasklet); | 154 | tasklet_hi_schedule(&substream->runtime->tasklet); |
153 | } else { | 155 | } else { |
@@ -158,6 +160,8 @@ static inline void snd_rawmidi_output_trigger(struct snd_rawmidi_substream *subs | |||
158 | 160 | ||
159 | static void snd_rawmidi_input_trigger(struct snd_rawmidi_substream *substream, int up) | 161 | static void snd_rawmidi_input_trigger(struct snd_rawmidi_substream *substream, int up) |
160 | { | 162 | { |
163 | if (!substream->opened) | ||
164 | return; | ||
161 | substream->ops->trigger(substream, up); | 165 | substream->ops->trigger(substream, up); |
162 | if (!up && substream->runtime->event) | 166 | if (!up && substream->runtime->event) |
163 | tasklet_kill(&substream->runtime->tasklet); | 167 | tasklet_kill(&substream->runtime->tasklet); |
@@ -857,6 +861,8 @@ int snd_rawmidi_receive(struct snd_rawmidi_substream *substream, | |||
857 | int result = 0, count1; | 861 | int result = 0, count1; |
858 | struct snd_rawmidi_runtime *runtime = substream->runtime; | 862 | struct snd_rawmidi_runtime *runtime = substream->runtime; |
859 | 863 | ||
864 | if (!substream->opened) | ||
865 | return -EBADFD; | ||
860 | if (runtime->buffer == NULL) { | 866 | if (runtime->buffer == NULL) { |
861 | snd_printd("snd_rawmidi_receive: input is not active!!!\n"); | 867 | snd_printd("snd_rawmidi_receive: input is not active!!!\n"); |
862 | return -EINVAL; | 868 | return -EINVAL; |
@@ -1126,6 +1132,8 @@ int snd_rawmidi_transmit_ack(struct snd_rawmidi_substream *substream, int count) | |||
1126 | int snd_rawmidi_transmit(struct snd_rawmidi_substream *substream, | 1132 | int snd_rawmidi_transmit(struct snd_rawmidi_substream *substream, |
1127 | unsigned char *buffer, int count) | 1133 | unsigned char *buffer, int count) |
1128 | { | 1134 | { |
1135 | if (!substream->opened) | ||
1136 | return -EBADFD; | ||
1129 | count = snd_rawmidi_transmit_peek(substream, buffer, count); | 1137 | count = snd_rawmidi_transmit_peek(substream, buffer, count); |
1130 | if (count < 0) | 1138 | if (count < 0) |
1131 | return count; | 1139 | return count; |
diff --git a/sound/drivers/ml403-ac97cr.c b/sound/drivers/ml403-ac97cr.c index ecdbeb6d3603..7783843ca9ae 100644 --- a/sound/drivers/ml403-ac97cr.c +++ b/sound/drivers/ml403-ac97cr.c | |||
@@ -1153,7 +1153,7 @@ snd_ml403_ac97cr_create(struct snd_card *card, struct platform_device *pfdev, | |||
1153 | /* get irq */ | 1153 | /* get irq */ |
1154 | irq = platform_get_irq(pfdev, 0); | 1154 | irq = platform_get_irq(pfdev, 0); |
1155 | if (request_irq(irq, snd_ml403_ac97cr_irq, IRQF_DISABLED, | 1155 | if (request_irq(irq, snd_ml403_ac97cr_irq, IRQF_DISABLED, |
1156 | pfdev->dev.bus_id, (void *)ml403_ac97cr)) { | 1156 | dev_name(&pfdev->dev), (void *)ml403_ac97cr)) { |
1157 | snd_printk(KERN_ERR SND_ML403_AC97CR_DRIVER ": " | 1157 | snd_printk(KERN_ERR SND_ML403_AC97CR_DRIVER ": " |
1158 | "unable to grab IRQ %d\n", | 1158 | "unable to grab IRQ %d\n", |
1159 | irq); | 1159 | irq); |
@@ -1166,7 +1166,7 @@ snd_ml403_ac97cr_create(struct snd_card *card, struct platform_device *pfdev, | |||
1166 | ml403_ac97cr->irq); | 1166 | ml403_ac97cr->irq); |
1167 | irq = platform_get_irq(pfdev, 1); | 1167 | irq = platform_get_irq(pfdev, 1); |
1168 | if (request_irq(irq, snd_ml403_ac97cr_irq, IRQF_DISABLED, | 1168 | if (request_irq(irq, snd_ml403_ac97cr_irq, IRQF_DISABLED, |
1169 | pfdev->dev.bus_id, (void *)ml403_ac97cr)) { | 1169 | dev_name(&pfdev->dev), (void *)ml403_ac97cr)) { |
1170 | snd_printk(KERN_ERR SND_ML403_AC97CR_DRIVER ": " | 1170 | snd_printk(KERN_ERR SND_ML403_AC97CR_DRIVER ": " |
1171 | "unable to grab IRQ %d\n", | 1171 | "unable to grab IRQ %d\n", |
1172 | irq); | 1172 | irq); |
diff --git a/sound/drivers/pcsp/pcsp_input.c b/sound/drivers/pcsp/pcsp_input.c index cd9b83e7f7d1..0444cdeb4bec 100644 --- a/sound/drivers/pcsp/pcsp_input.c +++ b/sound/drivers/pcsp/pcsp_input.c | |||
@@ -24,13 +24,13 @@ static void pcspkr_do_sound(unsigned int count) | |||
24 | spin_lock_irqsave(&i8253_lock, flags); | 24 | spin_lock_irqsave(&i8253_lock, flags); |
25 | 25 | ||
26 | if (count) { | 26 | if (count) { |
27 | /* enable counter 2 */ | ||
28 | outb_p(inb_p(0x61) | 3, 0x61); | ||
29 | /* set command for counter 2, 2 byte write */ | 27 | /* set command for counter 2, 2 byte write */ |
30 | outb_p(0xB6, 0x43); | 28 | outb_p(0xB6, 0x43); |
31 | /* select desired HZ */ | 29 | /* select desired HZ */ |
32 | outb_p(count & 0xff, 0x42); | 30 | outb_p(count & 0xff, 0x42); |
33 | outb((count >> 8) & 0xff, 0x42); | 31 | outb((count >> 8) & 0xff, 0x42); |
32 | /* enable counter 2 */ | ||
33 | outb_p(inb_p(0x61) | 3, 0x61); | ||
34 | } else { | 34 | } else { |
35 | /* disable counter 2 */ | 35 | /* disable counter 2 */ |
36 | outb(inb_p(0x61) & 0xFC, 0x61); | 36 | outb(inb_p(0x61) & 0xFC, 0x61); |
diff --git a/sound/isa/ad1848/ad1848.c b/sound/isa/ad1848/ad1848.c index b68d20edc20f..223a6c038819 100644 --- a/sound/isa/ad1848/ad1848.c +++ b/sound/isa/ad1848/ad1848.c | |||
@@ -70,15 +70,15 @@ static int __devinit snd_ad1848_match(struct device *dev, unsigned int n) | |||
70 | return 0; | 70 | return 0; |
71 | 71 | ||
72 | if (port[n] == SNDRV_AUTO_PORT) { | 72 | if (port[n] == SNDRV_AUTO_PORT) { |
73 | snd_printk(KERN_ERR "%s: please specify port\n", dev->bus_id); | 73 | dev_err(dev, "please specify port\n"); |
74 | return 0; | 74 | return 0; |
75 | } | 75 | } |
76 | if (irq[n] == SNDRV_AUTO_IRQ) { | 76 | if (irq[n] == SNDRV_AUTO_IRQ) { |
77 | snd_printk(KERN_ERR "%s: please specify irq\n", dev->bus_id); | 77 | dev_err(dev, "please specify irq\n"); |
78 | return 0; | 78 | return 0; |
79 | } | 79 | } |
80 | if (dma1[n] == SNDRV_AUTO_DMA) { | 80 | if (dma1[n] == SNDRV_AUTO_DMA) { |
81 | snd_printk(KERN_ERR "%s: please specify dma1\n", dev->bus_id); | 81 | dev_err(dev, "please specify dma1\n"); |
82 | return 0; | 82 | return 0; |
83 | } | 83 | } |
84 | return 1; | 84 | return 1; |
diff --git a/sound/isa/adlib.c b/sound/isa/adlib.c index efa8c80d05b6..374b7177e111 100644 --- a/sound/isa/adlib.c +++ b/sound/isa/adlib.c | |||
@@ -36,7 +36,7 @@ static int __devinit snd_adlib_match(struct device *dev, unsigned int n) | |||
36 | return 0; | 36 | return 0; |
37 | 37 | ||
38 | if (port[n] == SNDRV_AUTO_PORT) { | 38 | if (port[n] == SNDRV_AUTO_PORT) { |
39 | snd_printk(KERN_ERR "%s: please specify port\n", dev->bus_id); | 39 | dev_err(dev, "please specify port\n"); |
40 | return 0; | 40 | return 0; |
41 | } | 41 | } |
42 | return 1; | 42 | return 1; |
@@ -55,13 +55,13 @@ static int __devinit snd_adlib_probe(struct device *dev, unsigned int n) | |||
55 | 55 | ||
56 | card = snd_card_new(index[n], id[n], THIS_MODULE, 0); | 56 | card = snd_card_new(index[n], id[n], THIS_MODULE, 0); |
57 | if (!card) { | 57 | if (!card) { |
58 | snd_printk(KERN_ERR "%s: could not create card\n", dev->bus_id); | 58 | dev_err(dev, "could not create card\n"); |
59 | return -EINVAL; | 59 | return -EINVAL; |
60 | } | 60 | } |
61 | 61 | ||
62 | card->private_data = request_region(port[n], 4, CRD_NAME); | 62 | card->private_data = request_region(port[n], 4, CRD_NAME); |
63 | if (!card->private_data) { | 63 | if (!card->private_data) { |
64 | snd_printk(KERN_ERR "%s: could not grab ports\n", dev->bus_id); | 64 | dev_err(dev, "could not grab ports\n"); |
65 | error = -EBUSY; | 65 | error = -EBUSY; |
66 | goto out; | 66 | goto out; |
67 | } | 67 | } |
@@ -73,13 +73,13 @@ static int __devinit snd_adlib_probe(struct device *dev, unsigned int n) | |||
73 | 73 | ||
74 | error = snd_opl3_create(card, port[n], port[n] + 2, OPL3_HW_AUTO, 1, &opl3); | 74 | error = snd_opl3_create(card, port[n], port[n] + 2, OPL3_HW_AUTO, 1, &opl3); |
75 | if (error < 0) { | 75 | if (error < 0) { |
76 | snd_printk(KERN_ERR "%s: could not create OPL\n", dev->bus_id); | 76 | dev_err(dev, "could not create OPL\n"); |
77 | goto out; | 77 | goto out; |
78 | } | 78 | } |
79 | 79 | ||
80 | error = snd_opl3_hwdep_new(opl3, 0, 0, NULL); | 80 | error = snd_opl3_hwdep_new(opl3, 0, 0, NULL); |
81 | if (error < 0) { | 81 | if (error < 0) { |
82 | snd_printk(KERN_ERR "%s: could not create FM\n", dev->bus_id); | 82 | dev_err(dev, "could not create FM\n"); |
83 | goto out; | 83 | goto out; |
84 | } | 84 | } |
85 | 85 | ||
@@ -87,7 +87,7 @@ static int __devinit snd_adlib_probe(struct device *dev, unsigned int n) | |||
87 | 87 | ||
88 | error = snd_card_register(card); | 88 | error = snd_card_register(card); |
89 | if (error < 0) { | 89 | if (error < 0) { |
90 | snd_printk(KERN_ERR "%s: could not register card\n", dev->bus_id); | 90 | dev_err(dev, "could not register card\n"); |
91 | goto out; | 91 | goto out; |
92 | } | 92 | } |
93 | 93 | ||
diff --git a/sound/isa/cs423x/cs4231.c b/sound/isa/cs423x/cs4231.c index ddd289120aa8..f019d449e2d6 100644 --- a/sound/isa/cs423x/cs4231.c +++ b/sound/isa/cs423x/cs4231.c | |||
@@ -74,15 +74,15 @@ static int __devinit snd_cs4231_match(struct device *dev, unsigned int n) | |||
74 | return 0; | 74 | return 0; |
75 | 75 | ||
76 | if (port[n] == SNDRV_AUTO_PORT) { | 76 | if (port[n] == SNDRV_AUTO_PORT) { |
77 | snd_printk(KERN_ERR "%s: please specify port\n", dev->bus_id); | 77 | dev_err(dev, "please specify port\n"); |
78 | return 0; | 78 | return 0; |
79 | } | 79 | } |
80 | if (irq[n] == SNDRV_AUTO_IRQ) { | 80 | if (irq[n] == SNDRV_AUTO_IRQ) { |
81 | snd_printk(KERN_ERR "%s: please specify irq\n", dev->bus_id); | 81 | dev_err(dev, "please specify irq\n"); |
82 | return 0; | 82 | return 0; |
83 | } | 83 | } |
84 | if (dma1[n] == SNDRV_AUTO_DMA) { | 84 | if (dma1[n] == SNDRV_AUTO_DMA) { |
85 | snd_printk(KERN_ERR "%s: please specify dma1\n", dev->bus_id); | 85 | dev_err(dev, "please specify dma1\n"); |
86 | return 0; | 86 | return 0; |
87 | } | 87 | } |
88 | return 1; | 88 | return 1; |
@@ -133,7 +133,7 @@ static int __devinit snd_cs4231_probe(struct device *dev, unsigned int n) | |||
133 | mpu_port[n], 0, mpu_irq[n], | 133 | mpu_port[n], 0, mpu_irq[n], |
134 | mpu_irq[n] >= 0 ? IRQF_DISABLED : 0, | 134 | mpu_irq[n] >= 0 ? IRQF_DISABLED : 0, |
135 | NULL) < 0) | 135 | NULL) < 0) |
136 | printk(KERN_WARNING "%s: MPU401 not detected\n", dev->bus_id); | 136 | dev_warn(dev, "MPU401 not detected\n"); |
137 | } | 137 | } |
138 | 138 | ||
139 | snd_card_set_dev(card, dev); | 139 | snd_card_set_dev(card, dev); |
diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c index 91f9c15d3e30..019c9401663e 100644 --- a/sound/isa/cs423x/cs4236.c +++ b/sound/isa/cs423x/cs4236.c | |||
@@ -488,19 +488,19 @@ static int __devinit snd_cs423x_isa_match(struct device *pdev, | |||
488 | return 0; | 488 | return 0; |
489 | 489 | ||
490 | if (port[dev] == SNDRV_AUTO_PORT) { | 490 | if (port[dev] == SNDRV_AUTO_PORT) { |
491 | snd_printk(KERN_ERR "%s: please specify port\n", pdev->bus_id); | 491 | dev_err(pdev, "please specify port\n"); |
492 | return 0; | 492 | return 0; |
493 | } | 493 | } |
494 | if (cport[dev] == SNDRV_AUTO_PORT) { | 494 | if (cport[dev] == SNDRV_AUTO_PORT) { |
495 | snd_printk(KERN_ERR "%s: please specify cport\n", pdev->bus_id); | 495 | dev_err(pdev, "please specify cport\n"); |
496 | return 0; | 496 | return 0; |
497 | } | 497 | } |
498 | if (irq[dev] == SNDRV_AUTO_IRQ) { | 498 | if (irq[dev] == SNDRV_AUTO_IRQ) { |
499 | snd_printk(KERN_ERR "%s: please specify irq\n", pdev->bus_id); | 499 | dev_err(pdev, "please specify irq\n"); |
500 | return 0; | 500 | return 0; |
501 | } | 501 | } |
502 | if (dma1[dev] == SNDRV_AUTO_DMA) { | 502 | if (dma1[dev] == SNDRV_AUTO_DMA) { |
503 | snd_printk(KERN_ERR "%s: please specify dma1\n", pdev->bus_id); | 503 | dev_err(pdev, "please specify dma1\n"); |
504 | return 0; | 504 | return 0; |
505 | } | 505 | } |
506 | return 1; | 506 | return 1; |
diff --git a/sound/isa/es1688/es1688.c b/sound/isa/es1688/es1688.c index f88639ea64b2..b46377139cf8 100644 --- a/sound/isa/es1688/es1688.c +++ b/sound/isa/es1688/es1688.c | |||
@@ -88,16 +88,14 @@ static int __devinit snd_es1688_legacy_create(struct snd_card *card, | |||
88 | if (irq[n] == SNDRV_AUTO_IRQ) { | 88 | if (irq[n] == SNDRV_AUTO_IRQ) { |
89 | irq[n] = snd_legacy_find_free_irq(possible_irqs); | 89 | irq[n] = snd_legacy_find_free_irq(possible_irqs); |
90 | if (irq[n] < 0) { | 90 | if (irq[n] < 0) { |
91 | snd_printk(KERN_ERR "%s: unable to find a free IRQ\n", | 91 | dev_err(dev, "unable to find a free IRQ\n"); |
92 | dev->bus_id); | ||
93 | return -EBUSY; | 92 | return -EBUSY; |
94 | } | 93 | } |
95 | } | 94 | } |
96 | if (dma8[n] == SNDRV_AUTO_DMA) { | 95 | if (dma8[n] == SNDRV_AUTO_DMA) { |
97 | dma8[n] = snd_legacy_find_free_dma(possible_dmas); | 96 | dma8[n] = snd_legacy_find_free_dma(possible_dmas); |
98 | if (dma8[n] < 0) { | 97 | if (dma8[n] < 0) { |
99 | snd_printk(KERN_ERR "%s: unable to find a free DMA\n", | 98 | dev_err(dev, "unable to find a free DMA\n"); |
100 | dev->bus_id); | ||
101 | return -EBUSY; | 99 | return -EBUSY; |
102 | } | 100 | } |
103 | } | 101 | } |
@@ -147,8 +145,7 @@ static int __devinit snd_es1688_probe(struct device *dev, unsigned int n) | |||
147 | 145 | ||
148 | if (snd_opl3_create(card, chip->port, chip->port + 2, | 146 | if (snd_opl3_create(card, chip->port, chip->port + 2, |
149 | OPL3_HW_OPL3, 0, &opl3) < 0) | 147 | OPL3_HW_OPL3, 0, &opl3) < 0) |
150 | printk(KERN_WARNING "%s: opl3 not detected at 0x%lx\n", | 148 | dev_warn(dev, "opl3 not detected at 0x%lx\n", chip->port); |
151 | dev->bus_id, chip->port); | ||
152 | else { | 149 | else { |
153 | error = snd_opl3_hwdep_new(opl3, 0, 1, NULL); | 150 | error = snd_opl3_hwdep_new(opl3, 0, 1, NULL); |
154 | if (error < 0) | 151 | if (error < 0) |
diff --git a/sound/isa/gus/gusclassic.c b/sound/isa/gus/gusclassic.c index 8f914b37bf89..426532a4d730 100644 --- a/sound/isa/gus/gusclassic.c +++ b/sound/isa/gus/gusclassic.c | |||
@@ -90,24 +90,21 @@ static int __devinit snd_gusclassic_create(struct snd_card *card, | |||
90 | if (irq[n] == SNDRV_AUTO_IRQ) { | 90 | if (irq[n] == SNDRV_AUTO_IRQ) { |
91 | irq[n] = snd_legacy_find_free_irq(possible_irqs); | 91 | irq[n] = snd_legacy_find_free_irq(possible_irqs); |
92 | if (irq[n] < 0) { | 92 | if (irq[n] < 0) { |
93 | snd_printk(KERN_ERR "%s: unable to find a free IRQ\n", | 93 | dev_err(dev, "unable to find a free IRQ\n"); |
94 | dev->bus_id); | ||
95 | return -EBUSY; | 94 | return -EBUSY; |
96 | } | 95 | } |
97 | } | 96 | } |
98 | if (dma1[n] == SNDRV_AUTO_DMA) { | 97 | if (dma1[n] == SNDRV_AUTO_DMA) { |
99 | dma1[n] = snd_legacy_find_free_dma(possible_dmas); | 98 | dma1[n] = snd_legacy_find_free_dma(possible_dmas); |
100 | if (dma1[n] < 0) { | 99 | if (dma1[n] < 0) { |
101 | snd_printk(KERN_ERR "%s: unable to find a free DMA1\n", | 100 | dev_err(dev, "unable to find a free DMA1\n"); |
102 | dev->bus_id); | ||
103 | return -EBUSY; | 101 | return -EBUSY; |
104 | } | 102 | } |
105 | } | 103 | } |
106 | if (dma2[n] == SNDRV_AUTO_DMA) { | 104 | if (dma2[n] == SNDRV_AUTO_DMA) { |
107 | dma2[n] = snd_legacy_find_free_dma(possible_dmas); | 105 | dma2[n] = snd_legacy_find_free_dma(possible_dmas); |
108 | if (dma2[n] < 0) { | 106 | if (dma2[n] < 0) { |
109 | snd_printk(KERN_ERR "%s: unable to find a free DMA2\n", | 107 | dev_err(dev, "unable to find a free DMA2\n"); |
110 | dev->bus_id); | ||
111 | return -EBUSY; | 108 | return -EBUSY; |
112 | } | 109 | } |
113 | } | 110 | } |
@@ -174,8 +171,8 @@ static int __devinit snd_gusclassic_probe(struct device *dev, unsigned int n) | |||
174 | 171 | ||
175 | error = -ENODEV; | 172 | error = -ENODEV; |
176 | if (gus->max_flag || gus->ess_flag) { | 173 | if (gus->max_flag || gus->ess_flag) { |
177 | snd_printk(KERN_ERR "%s: GUS Classic or ACE soundcard was " | 174 | dev_err(dev, "GUS Classic or ACE soundcard was " |
178 | "not detected at 0x%lx\n", dev->bus_id, gus->gf1.port); | 175 | "not detected at 0x%lx\n", gus->gf1.port); |
179 | goto out; | 176 | goto out; |
180 | } | 177 | } |
181 | 178 | ||
diff --git a/sound/isa/gus/gusextreme.c b/sound/isa/gus/gusextreme.c index da13185eb0a0..7ad4c3b41a84 100644 --- a/sound/isa/gus/gusextreme.c +++ b/sound/isa/gus/gusextreme.c | |||
@@ -106,16 +106,14 @@ static int __devinit snd_gusextreme_es1688_create(struct snd_card *card, | |||
106 | if (irq[n] == SNDRV_AUTO_IRQ) { | 106 | if (irq[n] == SNDRV_AUTO_IRQ) { |
107 | irq[n] = snd_legacy_find_free_irq(possible_irqs); | 107 | irq[n] = snd_legacy_find_free_irq(possible_irqs); |
108 | if (irq[n] < 0) { | 108 | if (irq[n] < 0) { |
109 | snd_printk(KERN_ERR "%s: unable to find a free IRQ " | 109 | dev_err(dev, "unable to find a free IRQ for ES1688\n"); |
110 | "for ES1688\n", dev->bus_id); | ||
111 | return -EBUSY; | 110 | return -EBUSY; |
112 | } | 111 | } |
113 | } | 112 | } |
114 | if (dma8[n] == SNDRV_AUTO_DMA) { | 113 | if (dma8[n] == SNDRV_AUTO_DMA) { |
115 | dma8[n] = snd_legacy_find_free_dma(possible_dmas); | 114 | dma8[n] = snd_legacy_find_free_dma(possible_dmas); |
116 | if (dma8[n] < 0) { | 115 | if (dma8[n] < 0) { |
117 | snd_printk(KERN_ERR "%s: unable to find a free DMA " | 116 | dev_err(dev, "unable to find a free DMA for ES1688\n"); |
118 | "for ES1688\n", dev->bus_id); | ||
119 | return -EBUSY; | 117 | return -EBUSY; |
120 | } | 118 | } |
121 | } | 119 | } |
@@ -143,16 +141,14 @@ static int __devinit snd_gusextreme_gus_card_create(struct snd_card *card, | |||
143 | if (gf1_irq[n] == SNDRV_AUTO_IRQ) { | 141 | if (gf1_irq[n] == SNDRV_AUTO_IRQ) { |
144 | gf1_irq[n] = snd_legacy_find_free_irq(possible_irqs); | 142 | gf1_irq[n] = snd_legacy_find_free_irq(possible_irqs); |
145 | if (gf1_irq[n] < 0) { | 143 | if (gf1_irq[n] < 0) { |
146 | snd_printk(KERN_ERR "%s: unable to find a free IRQ " | 144 | dev_err(dev, "unable to find a free IRQ for GF1\n"); |
147 | "for GF1\n", dev->bus_id); | ||
148 | return -EBUSY; | 145 | return -EBUSY; |
149 | } | 146 | } |
150 | } | 147 | } |
151 | if (dma1[n] == SNDRV_AUTO_DMA) { | 148 | if (dma1[n] == SNDRV_AUTO_DMA) { |
152 | dma1[n] = snd_legacy_find_free_dma(possible_dmas); | 149 | dma1[n] = snd_legacy_find_free_dma(possible_dmas); |
153 | if (dma1[n] < 0) { | 150 | if (dma1[n] < 0) { |
154 | snd_printk(KERN_ERR "%s: unable to find a free DMA " | 151 | dev_err(dev, "unable to find a free DMA for GF1\n"); |
155 | "for GF1\n", dev->bus_id); | ||
156 | return -EBUSY; | 152 | return -EBUSY; |
157 | } | 153 | } |
158 | } | 154 | } |
@@ -278,8 +274,8 @@ static int __devinit snd_gusextreme_probe(struct device *dev, unsigned int n) | |||
278 | 274 | ||
279 | error = -ENODEV; | 275 | error = -ENODEV; |
280 | if (!gus->ess_flag) { | 276 | if (!gus->ess_flag) { |
281 | snd_printk(KERN_ERR "%s: GUS Extreme soundcard was not " | 277 | dev_err(dev, "GUS Extreme soundcard was not " |
282 | "detected at 0x%lx\n", dev->bus_id, gus->gf1.port); | 278 | "detected at 0x%lx\n", gus->gf1.port); |
283 | goto out; | 279 | goto out; |
284 | } | 280 | } |
285 | gus->codec_flag = 1; | 281 | gus->codec_flag = 1; |
@@ -310,8 +306,7 @@ static int __devinit snd_gusextreme_probe(struct device *dev, unsigned int n) | |||
310 | 306 | ||
311 | if (snd_opl3_create(card, es1688->port, es1688->port + 2, | 307 | if (snd_opl3_create(card, es1688->port, es1688->port + 2, |
312 | OPL3_HW_OPL3, 0, &opl3) < 0) | 308 | OPL3_HW_OPL3, 0, &opl3) < 0) |
313 | printk(KERN_ERR "%s: opl3 not detected at 0x%lx\n", | 309 | dev_warn(dev, "opl3 not detected at 0x%lx\n", es1688->port); |
314 | dev->bus_id, es1688->port); | ||
315 | else { | 310 | else { |
316 | error = snd_opl3_hwdep_new(opl3, 0, 2, NULL); | 311 | error = snd_opl3_hwdep_new(opl3, 0, 2, NULL); |
317 | if (error < 0) | 312 | if (error < 0) |
diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c index 336a34277907..667eccc676a4 100644 --- a/sound/isa/sb/sb8.c +++ b/sound/isa/sb/sb8.c | |||
@@ -85,11 +85,11 @@ static int __devinit snd_sb8_match(struct device *pdev, unsigned int dev) | |||
85 | if (!enable[dev]) | 85 | if (!enable[dev]) |
86 | return 0; | 86 | return 0; |
87 | if (irq[dev] == SNDRV_AUTO_IRQ) { | 87 | if (irq[dev] == SNDRV_AUTO_IRQ) { |
88 | snd_printk(KERN_ERR "%s: please specify irq\n", pdev->bus_id); | 88 | dev_err(pdev, "please specify irq\n"); |
89 | return 0; | 89 | return 0; |
90 | } | 90 | } |
91 | if (dma8[dev] == SNDRV_AUTO_DMA) { | 91 | if (dma8[dev] == SNDRV_AUTO_DMA) { |
92 | snd_printk(KERN_ERR "%s: please specify dma8\n", pdev->bus_id); | 92 | dev_err(pdev, "please specify dma8\n"); |
93 | return 0; | 93 | return 0; |
94 | } | 94 | } |
95 | return 1; | 95 | return 1; |
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c index 2f283ea6ad9a..de5ee8f097f6 100644 --- a/sound/pci/emu10k1/emu10k1_main.c +++ b/sound/pci/emu10k1/emu10k1_main.c | |||
@@ -1464,6 +1464,7 @@ static struct snd_emu_chip_details emu_chip_details[] = { | |||
1464 | .ca0151_chip = 1, | 1464 | .ca0151_chip = 1, |
1465 | .spk71 = 1, | 1465 | .spk71 = 1, |
1466 | .spdif_bug = 1, | 1466 | .spdif_bug = 1, |
1467 | .invert_shared_spdif = 1, /* digital/analog switch swapped */ | ||
1467 | .ac97_chip = 1} , | 1468 | .ac97_chip = 1} , |
1468 | {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x20021102, | 1469 | {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x20021102, |
1469 | .driver = "Audigy2", .name = "Audigy 2 ZS [SB0350]", | 1470 | .driver = "Audigy2", .name = "Audigy 2 ZS [SB0350]", |
@@ -1473,6 +1474,7 @@ static struct snd_emu_chip_details emu_chip_details[] = { | |||
1473 | .ca0151_chip = 1, | 1474 | .ca0151_chip = 1, |
1474 | .spk71 = 1, | 1475 | .spk71 = 1, |
1475 | .spdif_bug = 1, | 1476 | .spdif_bug = 1, |
1477 | .invert_shared_spdif = 1, /* digital/analog switch swapped */ | ||
1476 | .ac97_chip = 1} , | 1478 | .ac97_chip = 1} , |
1477 | {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x20011102, | 1479 | {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x20011102, |
1478 | .driver = "Audigy2", .name = "Audigy 2 ZS [2001]", | 1480 | .driver = "Audigy2", .name = "Audigy 2 ZS [2001]", |
@@ -1482,6 +1484,7 @@ static struct snd_emu_chip_details emu_chip_details[] = { | |||
1482 | .ca0151_chip = 1, | 1484 | .ca0151_chip = 1, |
1483 | .spk71 = 1, | 1485 | .spk71 = 1, |
1484 | .spdif_bug = 1, | 1486 | .spdif_bug = 1, |
1487 | .invert_shared_spdif = 1, /* digital/analog switch swapped */ | ||
1485 | .ac97_chip = 1} , | 1488 | .ac97_chip = 1} , |
1486 | /* Audigy 2 */ | 1489 | /* Audigy 2 */ |
1487 | /* Tested by James@superbug.co.uk 3rd July 2005 */ | 1490 | /* Tested by James@superbug.co.uk 3rd July 2005 */ |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 4eceab9bd109..a4666c96a44f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -829,6 +829,7 @@ static void alc_sku_automute(struct hda_codec *codec) | |||
829 | spec->jack_present ? 0 : PIN_OUT); | 829 | spec->jack_present ? 0 : PIN_OUT); |
830 | } | 830 | } |
831 | 831 | ||
832 | #if 0 /* it's broken in some acses -- temporarily disabled */ | ||
832 | static void alc_mic_automute(struct hda_codec *codec) | 833 | static void alc_mic_automute(struct hda_codec *codec) |
833 | { | 834 | { |
834 | struct alc_spec *spec = codec->spec; | 835 | struct alc_spec *spec = codec->spec; |
@@ -849,6 +850,9 @@ static void alc_mic_automute(struct hda_codec *codec) | |||
849 | snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, capsrc_idx_fmic, | 850 | snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, capsrc_idx_fmic, |
850 | HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); | 851 | HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); |
851 | } | 852 | } |
853 | #else | ||
854 | #define alc_mic_automute(codec) /* NOP */ | ||
855 | #endif /* disabled */ | ||
852 | 856 | ||
853 | /* unsolicited event for HP jack sensing */ | 857 | /* unsolicited event for HP jack sensing */ |
854 | static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) | 858 | static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) |
@@ -1058,12 +1062,14 @@ do_sku: | |||
1058 | AC_VERB_SET_UNSOLICITED_ENABLE, | 1062 | AC_VERB_SET_UNSOLICITED_ENABLE, |
1059 | AC_USRSP_EN | ALC880_HP_EVENT); | 1063 | AC_USRSP_EN | ALC880_HP_EVENT); |
1060 | 1064 | ||
1065 | #if 0 /* it's broken in some acses -- temporarily disabled */ | ||
1061 | if (spec->autocfg.input_pins[AUTO_PIN_MIC] && | 1066 | if (spec->autocfg.input_pins[AUTO_PIN_MIC] && |
1062 | spec->autocfg.input_pins[AUTO_PIN_FRONT_MIC]) | 1067 | spec->autocfg.input_pins[AUTO_PIN_FRONT_MIC]) |
1063 | snd_hda_codec_write(codec, | 1068 | snd_hda_codec_write(codec, |
1064 | spec->autocfg.input_pins[AUTO_PIN_MIC], 0, | 1069 | spec->autocfg.input_pins[AUTO_PIN_MIC], 0, |
1065 | AC_VERB_SET_UNSOLICITED_ENABLE, | 1070 | AC_VERB_SET_UNSOLICITED_ENABLE, |
1066 | AC_USRSP_EN | ALC880_MIC_EVENT); | 1071 | AC_USRSP_EN | ALC880_MIC_EVENT); |
1072 | #endif /* disabled */ | ||
1067 | 1073 | ||
1068 | spec->unsol_event = alc_sku_unsol_event; | 1074 | spec->unsol_event = alc_sku_unsol_event; |
1069 | } | 1075 | } |
@@ -8408,6 +8414,7 @@ static const char *alc883_models[ALC883_MODEL_LAST] = { | |||
8408 | static struct snd_pci_quirk alc883_cfg_tbl[] = { | 8414 | static struct snd_pci_quirk alc883_cfg_tbl[] = { |
8409 | SND_PCI_QUIRK(0x1019, 0x6668, "ECS", ALC883_3ST_6ch_DIG), | 8415 | SND_PCI_QUIRK(0x1019, 0x6668, "ECS", ALC883_3ST_6ch_DIG), |
8410 | SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_ACER_ASPIRE), | 8416 | SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_ACER_ASPIRE), |
8417 | SND_PCI_QUIRK(0x1025, 0x0090, "Acer Aspire", ALC883_ACER_ASPIRE), | ||
8411 | SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_ACER_ASPIRE), | 8418 | SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_ACER_ASPIRE), |
8412 | SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_ACER_ASPIRE), | 8419 | SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_ACER_ASPIRE), |
8413 | SND_PCI_QUIRK(0x1025, 0x0121, "Acer Aspire 5920G", ALC883_ACER_ASPIRE), | 8420 | SND_PCI_QUIRK(0x1025, 0x0121, "Acer Aspire 5920G", ALC883_ACER_ASPIRE), |
@@ -12238,8 +12245,26 @@ static int alc269_auto_create_multi_out_ctls(struct alc_spec *spec, | |||
12238 | return 0; | 12245 | return 0; |
12239 | } | 12246 | } |
12240 | 12247 | ||
12241 | #define alc269_auto_create_analog_input_ctls \ | 12248 | static int alc269_auto_create_analog_input_ctls(struct alc_spec *spec, |
12242 | alc880_auto_create_analog_input_ctls | 12249 | const struct auto_pin_cfg *cfg) |
12250 | { | ||
12251 | int err; | ||
12252 | |||
12253 | err = alc880_auto_create_analog_input_ctls(spec, cfg); | ||
12254 | if (err < 0) | ||
12255 | return err; | ||
12256 | /* digital-mic input pin is excluded in alc880_auto_create..() | ||
12257 | * because it's under 0x18 | ||
12258 | */ | ||
12259 | if (cfg->input_pins[AUTO_PIN_MIC] == 0x12 || | ||
12260 | cfg->input_pins[AUTO_PIN_FRONT_MIC] == 0x12) { | ||
12261 | struct hda_input_mux *imux = &spec->private_imux; | ||
12262 | imux->items[imux->num_items].label = "Int Mic"; | ||
12263 | imux->items[imux->num_items].index = 0x05; | ||
12264 | imux->num_items++; | ||
12265 | } | ||
12266 | return 0; | ||
12267 | } | ||
12243 | 12268 | ||
12244 | #ifdef CONFIG_SND_HDA_POWER_SAVE | 12269 | #ifdef CONFIG_SND_HDA_POWER_SAVE |
12245 | #define alc269_loopbacks alc880_loopbacks | 12270 | #define alc269_loopbacks alc880_loopbacks |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index df9b0bc7f878..e6085915d86d 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -69,6 +69,7 @@ enum { | |||
69 | enum { | 69 | enum { |
70 | STAC_92HD73XX_REF, | 70 | STAC_92HD73XX_REF, |
71 | STAC_DELL_M6, | 71 | STAC_DELL_M6, |
72 | STAC_DELL_EQ, | ||
72 | STAC_92HD73XX_MODELS | 73 | STAC_92HD73XX_MODELS |
73 | }; | 74 | }; |
74 | 75 | ||
@@ -773,9 +774,7 @@ static struct hda_verb dell_eq_core_init[] = { | |||
773 | }; | 774 | }; |
774 | 775 | ||
775 | static struct hda_verb dell_m6_core_init[] = { | 776 | static struct hda_verb dell_m6_core_init[] = { |
776 | /* set master volume to max value without distortion | 777 | { 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, |
777 | * and direct control */ | ||
778 | { 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xec}, | ||
779 | /* setup audio connections */ | 778 | /* setup audio connections */ |
780 | { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00}, | 779 | { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00}, |
781 | { 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01}, | 780 | { 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01}, |
@@ -1600,11 +1599,13 @@ static unsigned int dell_m6_pin_configs[13] = { | |||
1600 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { | 1599 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { |
1601 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, | 1600 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, |
1602 | [STAC_DELL_M6] = dell_m6_pin_configs, | 1601 | [STAC_DELL_M6] = dell_m6_pin_configs, |
1602 | [STAC_DELL_EQ] = dell_m6_pin_configs, | ||
1603 | }; | 1603 | }; |
1604 | 1604 | ||
1605 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { | 1605 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { |
1606 | [STAC_92HD73XX_REF] = "ref", | 1606 | [STAC_92HD73XX_REF] = "ref", |
1607 | [STAC_DELL_M6] = "dell-m6", | 1607 | [STAC_DELL_M6] = "dell-m6", |
1608 | [STAC_DELL_EQ] = "dell-eq", | ||
1608 | }; | 1609 | }; |
1609 | 1610 | ||
1610 | static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { | 1611 | static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { |
@@ -4131,12 +4132,17 @@ again: | |||
4131 | sizeof(stac92hd73xx_dmux)); | 4132 | sizeof(stac92hd73xx_dmux)); |
4132 | 4133 | ||
4133 | switch (spec->board_config) { | 4134 | switch (spec->board_config) { |
4134 | case STAC_DELL_M6: | 4135 | case STAC_DELL_EQ: |
4135 | spec->init = dell_eq_core_init; | 4136 | spec->init = dell_eq_core_init; |
4137 | /* fallthru */ | ||
4138 | case STAC_DELL_M6: | ||
4136 | spec->num_smuxes = 0; | 4139 | spec->num_smuxes = 0; |
4137 | spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER]; | 4140 | spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER]; |
4138 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; | 4141 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; |
4139 | spec->num_amps = 1; | 4142 | spec->num_amps = 1; |
4143 | |||
4144 | if (!spec->init) | ||
4145 | spec->init = dell_m6_core_init; | ||
4140 | switch (codec->subsystem_id) { | 4146 | switch (codec->subsystem_id) { |
4141 | case 0x1028025e: /* Analog Mics */ | 4147 | case 0x1028025e: /* Analog Mics */ |
4142 | case 0x1028025f: | 4148 | case 0x1028025f: |
@@ -4146,8 +4152,6 @@ again: | |||
4146 | break; | 4152 | break; |
4147 | case 0x10280271: /* Digital Mics */ | 4153 | case 0x10280271: /* Digital Mics */ |
4148 | case 0x10280272: | 4154 | case 0x10280272: |
4149 | spec->init = dell_m6_core_init; | ||
4150 | /* fall-through */ | ||
4151 | case 0x10280254: | 4155 | case 0x10280254: |
4152 | case 0x10280255: | 4156 | case 0x10280255: |
4153 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); | 4157 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); |
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index a3adbf06b1e5..16c7453f4946 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
@@ -95,8 +95,8 @@ static int soc_ac97_dev_register(struct snd_soc_codec *codec) | |||
95 | codec->ac97->dev.parent = NULL; | 95 | codec->ac97->dev.parent = NULL; |
96 | codec->ac97->dev.release = soc_ac97_device_release; | 96 | codec->ac97->dev.release = soc_ac97_device_release; |
97 | 97 | ||
98 | snprintf(codec->ac97->dev.bus_id, BUS_ID_SIZE, "%d-%d:%s", | 98 | dev_set_name(&codec->ac97->dev, "%d-%d:%s", |
99 | codec->card->number, 0, codec->name); | 99 | codec->card->number, 0, codec->name); |
100 | err = device_register(&codec->ac97->dev); | 100 | err = device_register(&codec->ac97->dev); |
101 | if (err < 0) { | 101 | if (err < 0) { |
102 | snd_printk(KERN_ERR "Can't register ac97 bus\n"); | 102 | snd_printk(KERN_ERR "Can't register ac97 bus\n"); |