Update of /cvsroot/alsa/alsa-kernel/pci/rme9652
In directory sc8-pr-cvs1:/tmp/cvs-serv24006

Modified Files:
        hdsp.c 
Log Message:
fixes by Thomas Charbonnel <[EMAIL PROTECTED]>:

* Reenables the hdsp_check_for_iobox function Paul bypassed in his
previous patch. This function is needed for mobile setups. It handles the
cases where the iobox has been unplugged/replugged or lost power supply.
* Fixes the channel limit Mark has reported on the HDSP9652 (24 instead of
26).
* Fixes a locking issue reported by Joshua N Pritikin.



Index: hdsp.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/rme9652/hdsp.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- hdsp.c      3 Jul 2003 11:31:21 -0000       1.39
+++ hdsp.c      3 Jul 2003 11:41:50 -0000       1.40
@@ -76,8 +76,8 @@
 #define DIGIFACE_DS_CHANNELS     14
 #define MULTIFACE_SS_CHANNELS    18
 #define MULTIFACE_DS_CHANNELS    14
-#define H9652_DS_CHANNELS        24
-#define H9652_SS_CHANNELS        24
+#define H9652_DS_CHANNELS        26
+#define H9652_SS_CHANNELS        14
 
 /* Write registers. These are defined as byte-offsets from the iobase value.
  */
@@ -528,15 +528,15 @@
 
 static inline int hdsp_check_for_iobox (hdsp_t *hdsp)
 {
-       return 0;
-#if 0
+
+       if (hdsp->io_type == H9652) return 0;
        if (hdsp_read (hdsp, HDSP_statusRegister) & HDSP_ConfigError) {
                snd_printk ("Hammerfall-DSP: no Digiface or Multiface connected!\n");
                hdsp->state &= ~HDSP_FirmwareLoaded;
                return -EIO;
        }
        return 0;
-#endif
+
 }
 
 static int snd_hdsp_load_firmware_from_cache(hdsp_t *hdsp) {
@@ -866,6 +866,11 @@
        int current_rate;
        int rate_bits;
 
+       /* ASSUMPTION: hdsp->lock is either help, or
+          there is no need for it (e.g. during module
+          initialization).
+       */
+       
        if (!(hdsp->control_register & HDSP_ClockModeMaster)) { 
                if (called_internally) {
                        /* request from ctl or card initialization */
@@ -897,8 +902,6 @@
           exists for externally-driven rate changes. All we can do
           is to flag rate changes in the read/write routines.  */
 
-       spin_lock_irq(&hdsp->lock);
-
        switch (rate) {
        case 32000:
                if (current_rate > 48000) {
@@ -937,7 +940,6 @@
                rate_bits = HDSP_Frequency96KHz;
                break;
        default:
-               spin_unlock_irq(&hdsp->lock);
                return -EINVAL;
        }
 
@@ -945,7 +947,6 @@
                snd_printk ("cannot change between single- and double-speed mode 
(capture PID = %d, playback PID = %d)\n",
                            hdsp->capture_pid,
                            hdsp->playback_pid);
-               spin_unlock_irq(&hdsp->lock);
                return -EBUSY;
        }
 
@@ -976,7 +977,6 @@
                hdsp_update_simple_mixer_controls (hdsp);
        }
 
-       spin_unlock_irq(&hdsp->lock);
        return 0;
 }
 
@@ -3354,9 +3354,13 @@
        /* how to make sure that the rate matches an externally-set one ?
         */
 
+       spin_lock_irq(&hdsp->lock);
        if ((err = hdsp_set_rate(hdsp, params_rate(params), 0)) < 0) {
+               spin_unlock_irq(&hdsp->lock);
                _snd_pcm_hw_param_setempty(params, SNDRV_PCM_HW_PARAM_RATE);
                return err;
+       } else {
+               spin_unlock_irq(&hdsp->lock);
        }
 
        if ((err = hdsp_set_interrupt_interval(hdsp, params_period_size(params))) < 0) 
{



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to