]> Git Repo - linux.git/commitdiff
ALSA: hdsp: check for iobox and upload firmware during ioctl
authorTim Blechmann <[email protected]>
Sat, 8 Nov 2008 13:42:18 +0000 (14:42 +0100)
committerTakashi Iwai <[email protected]>
Sun, 9 Nov 2008 11:55:18 +0000 (12:55 +0100)
currently, the error message when trying to run hdspmixer or hdspconf
if the breakout box is not connected is somehow misleading, since it
asks the user to upload the firmware.

this patch adds a test, whether the breakout box is connected and
tries to upload the firmware in the case, that it is not present, e.g.
because of power failures of the breakout box.

[Minor coding-style fixes by tiwai]

Signed-off-by: Tim Blechmann <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
sound/pci/rme9652/hdsp.c

index d680114b3e442d305da97ac8fe9c542691925896..736246f98accb3e7e3d724da1d74c2ef17b34c4f 100644 (file)
@@ -4548,11 +4548,20 @@ static int snd_hdsp_hwdep_ioctl(struct snd_hwdep *hw, struct file *file, unsigne
 {
        struct hdsp *hdsp = (struct hdsp *)hw->private_data;    
        void __user *argp = (void __user *)arg;
+       int err;
 
        switch (cmd) {
        case SNDRV_HDSP_IOCTL_GET_PEAK_RMS: {
                struct hdsp_peak_rms __user *peak_rms = (struct hdsp_peak_rms __user *)arg;
 
+               err = hdsp_check_for_iobox(hdsp);
+               if (err < 0)
+                       return err;
+
+               err = hdsp_check_for_firmware(hdsp, 1);
+               if (err < 0)
+                       return err;
+
                if (!(hdsp->state & HDSP_FirmwareLoaded)) {
                        snd_printk(KERN_ERR "Hammerfall-DSP: firmware needs to be uploaded to the card.\n");
                        return -EINVAL;
@@ -4572,10 +4581,14 @@ static int snd_hdsp_hwdep_ioctl(struct snd_hwdep *hw, struct file *file, unsigne
                unsigned long flags;
                int i;
                
-               if (!(hdsp->state & HDSP_FirmwareLoaded)) {
-                       snd_printk(KERN_ERR "Hammerfall-DSP: Firmware needs to be uploaded to the card.\n");    
-                       return -EINVAL;
-               }
+               err = hdsp_check_for_iobox(hdsp);
+               if (err < 0)
+                       return err;
+
+               err = hdsp_check_for_firmware(hdsp, 1);
+               if (err < 0)
+                       return err;
+
                spin_lock_irqsave(&hdsp->lock, flags);
                info.pref_sync_ref = (unsigned char)hdsp_pref_sync_ref(hdsp);
                info.wordclock_sync_check = (unsigned char)hdsp_wc_sync_check(hdsp);
This page took 0.098655 seconds and 4 git commands to generate.