[Alsa-devel] Re: [PlanetCCRMA] Help! HDSP firmware suddenly fails to load...
Takashi Iwai
tiwai at suse.de
Wed Jan 26 10:04:01 PST 2005
At 25 Jan 2005 17:31:30 -0800,
Fernando Lopez-Lezcano wrote:
>
> On Mon, 2005-01-24 at 22:36, Fernando Lopez-Lezcano wrote:
> > On Mon, 2005-01-24 at 18:47, Michael E. Smith wrote:
> > > [MUNCH]
> > > Both machines refuse to load the firmware similarly, but not quite the
> > > same. To wit, the laptop (cardbus/digiface) consistantly produces the
> > > above error, while the desktop (pci/digiface) does it once and then
> > > doesn't see a card at all.
> > >
> > > It does, however, show up (on both machines) on an lspci listing. Also,
> > > snd-hdsp shows up in lsmod.
> > >
> > > dmesg snippet:
> > >
> > > ALSA /usr/src/rpm/BUILD/alsa-driver-1.0.8/alsa-kernel/pci/rme9652/hdsp.c:647:
> > > Hammerfall-DSP: no Digiface or Multiface connected!
> > > ALSA /usr/src/rpm/BUILD/alsa-driver-1.0.8/alsa-kernel/pci/rme9652/hdsp.c:5086:
> > > card initialization pending : waiting for firmware
> > >
> > > It would appear as though the firmware is attempting to be loaded
> > > automatically at some point during user login (I can see from the lights
> > > on the digiface), resulting in the error even before I attempt to load
> > > it using hdsploader.
> [MUNCH]
> > I think it is alsa 1.0.8. From what I've read it has changed the way in
> > which it loads (surprise!) firmware. It now uses the hotplug subsystem.
> > Darn!. I thought it was working fine as some people have reported
> > success with echoaudio cards (which now have a driver included in 1.0.8
> > and also require firmware downloads). Apparently not.
>
> Did you manage to do more tests? And/or get more information from dmesg
> or /var/log/messages regarding the firmware load?
>
> I just installed a 9652 + DigiFace on a test machine and while I had
> some problems the firmware was loaded and eventually the card worked
> fine. This is, regretfully, on fc3 so there may be problems that are
> specific to fc2 then.
>
> On the first try after a reboot the card, for some reason, does not come
> up. I suspect a problem with udev... this is what I find in
> /var/log/messages on that first try:
>
> =====
> eth0: VIA Networking Velocity Family Gigabit Ethernet Adapter
> eth0: Ethernet Address: 00:50:8D:E9:46:F5
> ACPI: PCI interrupt 0000:00:09.0[A] -> GSI 17 (level, low) -> IRQ 17
> hm: ioapic cache empty for irq 17 (e:00000000/d:00010000) 0001a9b1
> ALSA
> /usr/src/rpm/BUILD/alsa-driver-1.0.8/pci/rme9652/../../alsa-kernel/pci/rme9652/hdsp.c:662: loading firmware
> ALSA
> /usr/src/rpm/BUILD/alsa-driver-1.0.8/pci/rme9652/../../alsa-kernel/pci/rme9652/hdsp.c:700: finished firmware loading
> ALSA
> /usr/src/rpm/BUILD/alsa-driver-1.0.8/pci/rme9652/../../alsa-kernel/pci/rme9652/hdsp.c:5110: Firmware already loaded, initializing card.
> ALSA /usr/src/rpm/BUILD/alsa-driver-1.0.8/acore/control.c:322: control
> 3:0:0:IEC958 Playback Default:0 is already present
> ALSA
> /usr/src/rpm/BUILD/alsa-driver-1.0.8/pci/rme9652/../../alsa-kernel/pci/rme9652/hdsp.c:4879: Error creating ctl interface
> RME Hammerfall DSP: probe of 0000:00:09.0 failed with error -16
> =====
Could you try the attached patch?
Takashi
-------------- next part --------------
Index: alsa-kernel/pci/rme9652/hdsp.c
===================================================================
RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/pci/rme9652/hdsp.c,v
retrieving revision 1.81
diff -u -r1.81 hdsp.c
--- alsa-kernel/pci/rme9652/hdsp.c 14 Jan 2005 19:50:48 -0000 1.81
+++ alsa-kernel/pci/rme9652/hdsp.c 26 Jan 2005 09:31:43 -0000
@@ -4974,15 +4974,7 @@
if ((err = snd_hdsp_load_firmware_from_cache(hdsp)) < 0)
return err;
-
- if (!(hdsp->state & HDSP_InitializationComplete)) {
- snd_hdsp_initialize_channels(hdsp);
- snd_hdsp_initialize_midi_flush(hdsp);
- if ((err = snd_hdsp_create_alsa_devices(hdsp->card, hdsp)) < 0) {
- snd_printk("error creating alsa devices\n");
- return err;
- }
- }
+
return 0;
}
#endif
@@ -5082,12 +5074,19 @@
}
if (!is_9652 && !is_9632 && hdsp_check_for_iobox (hdsp)) {
+#ifdef HDSP_FW_LOADER
+ if ((err = hdsp_request_fw_loader(hdsp)) < 0) {
+ snd_printk(KERN_ERR "hdsp: can't load firmware\n");
+ return err;
+ }
+#else
/* no iobox connected, we defer initialization */
snd_printk("card initialization pending : waiting for firmware\n");
if ((err = snd_hdsp_create_hwdep(card, hdsp)) < 0) {
return err;
}
return 0;
+#endif
}
if ((err = snd_hdsp_enable_io(hdsp)) != 0) {
@@ -5096,8 +5095,10 @@
if ((hdsp_read (hdsp, HDSP_statusRegister) & HDSP_DllError) != 0) {
#ifdef HDSP_FW_LOADER
- if ((err = hdsp_request_fw_loader(hdsp)) < 0)
+ if ((err = hdsp_request_fw_loader(hdsp)) < 0) {
+ snd_printk(KERN_ERR "hdsp: can't load firmware\n");
return err;
+ }
#else
snd_printk("card initialization pending : waiting for firmware\n");
if ((err = snd_hdsp_create_hwdep(card, hdsp)) < 0) {
More information about the PlanetCCRMA
mailing list