[Alsa-devel] Re: [PlanetCCRMA] Help! HDSP firmware suddenly fails to load...

Takashi Iwai tiwai@suse.de
Wed Jan 26 10:04:01 2005


--Multipart_Wed_Jan_26_10:32:47_2005-1
Content-Type: text/plain; charset=US-ASCII

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

--Multipart_Wed_Jan_26_10:32:47_2005-1
Content-Type: text/plain; charset=US-ASCII

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) {

--Multipart_Wed_Jan_26_10:32:47_2005-1--