Hi,

could it be that there is some power management work in progress? I tried to
compile from the cvs tree, and compilation of pcm_native.c failed to to some
undefined functions/fields for power management. 

To get things working for me I added some quick & dirty #ifdef CONFIG_PM
around the affected sections. (in my config CONFIG_PM is of course unset).

Cheers,
Frank.

Index: alsa-driver/kernel/pcm_native.c
===================================================================
RCS file: /cvsroot/alsa/alsa-driver/kernel/pcm_native.c,v
retrieving revision 1.175
diff -u -r1.175 pcm_native.c
--- alsa-driver/kernel/pcm_native.c     2001/10/04 16:49:47     1.175
+++ alsa-driver/kernel/pcm_native.c     2001/10/07 01:31:34
@@ -888,6 +888,7 @@
        int res = 0;
        snd_pcm_substream_t *s;
        snd_card_t *card = substream->pcm->card;
+#ifdef CONFIG_PM
        snd_power_lock(card, 1);
        while (card->power_state != SNDRV_CTL_POWER_D0) {
                if (substream->ffile->f_flags & O_NONBLOCK) {
@@ -896,6 +897,7 @@
                }
                snd_power_wait(card, 1);
        }
+#endif
        spin_lock(&pcm_link_lock);
        s = substream;
        do {
@@ -934,8 +936,10 @@
        } while (s != substream);
        _end:
        spin_unlock(&pcm_link_lock);
+#ifdef CONFIG_PM
        _power_unlock:
        snd_power_unlock(card);
+#endif
        return res;
 }
 
@@ -1053,6 +1057,7 @@
        int res = 0;
        snd_pcm_substream_t *s;
        snd_card_t *card = substream->pcm->card;
+#ifdef CONFIG_PM
        snd_power_lock(card, 1);
        while (card->power_state != SNDRV_CTL_POWER_D0) {
                if (substream->ffile->f_flags & O_NONBLOCK) {
@@ -1061,6 +1066,7 @@
                }
                snd_power_wait(card, 1);
        }
+#endif
        spin_lock(&pcm_link_lock);
        s = substream;
        do {
@@ -1101,8 +1107,10 @@
        } while (s != substream);
        _end:
        spin_unlock(&pcm_link_lock);
+#ifdef CONFIG_PM
        _power_unlock:
        snd_power_unlock(card);
+#endif
        return res;
 }
 
@@ -1139,7 +1147,9 @@
        runtime = substream->runtime;
        card = substream->pcm->card;
 
+#ifdef CONFIG_PM
        snd_power_lock(card, 1);
+#endif
        spin_lock_irq(&runtime->lock);
        switch (runtime->status->state) {
        case SNDRV_PCM_STATE_PAUSED:
@@ -1149,6 +1159,7 @@
        case SNDRV_PCM_STATE_DRAINING:
                break;
        case SNDRV_PCM_STATE_SUSPENDED:
+#ifdef CONFIG_PM
                while (card->power_state != SNDRV_CTL_POWER_D0) {
                        if (substream->ffile->f_flags & O_NONBLOCK) {
                                result = -EAGAIN;
@@ -1159,6 +1170,9 @@
                        spin_lock_irq(&runtime->lock);
                }
                goto _xrun_recovery;
+#else
+               break;
+#endif
        case SNDRV_PCM_STATE_OPEN:
                result = -EBADFD;
                goto _end;
@@ -1233,7 +1247,9 @@
 
       _end:
        spin_unlock_irq(&runtime->lock);
+#ifdef CONFIG_PM
        snd_power_unlock(card);
+#endif
        return result;
 }
 
@@ -1242,7 +1258,9 @@
        snd_pcm_runtime_t *runtime = substream->runtime;
        snd_card_t *card = substream->pcm->card;
        int res = 0;
+#ifdef CONFIG_PM
        snd_power_lock(card, 1);
+#endif
        spin_lock_irq(&runtime->lock);
        switch (runtime->status->state) {
        case SNDRV_PCM_STATE_OPEN:
@@ -1266,6 +1284,7 @@
                snd_pcm_change_state(substream, SNDRV_PCM_STATE_SETUP);
                break;
        case SNDRV_PCM_STATE_SUSPENDED:
+#ifdef CONFIG_PM
                while (card->power_state != SNDRV_CTL_POWER_D0) {
                        if (substream->ffile->f_flags & O_NONBLOCK) {
                                res = -EAGAIN;
@@ -1276,11 +1295,16 @@
                        spin_lock_irq(&runtime->lock);
                }
                goto _xrun_recovery;
+#else
+               break;
+#endif
        }
        runtime->control->appl_ptr = runtime->status->hw_ptr;
        _end:
        spin_unlock_irq(&runtime->lock);
+#ifdef CONFIG_PM
        snd_power_unlock(card);
+#endif
        return res;
 }
 
@@ -1289,7 +1313,9 @@
        snd_pcm_runtime_t *runtime = substream->runtime;
        snd_card_t *card = substream->pcm->card;
        int res = 0;
+#ifdef CONFIG_PM
        snd_power_lock(card, 1);
+#endif
        spin_lock_irq(&runtime->lock);
        switch (runtime->status->state) {
        case SNDRV_PCM_STATE_OPEN:
@@ -1319,6 +1345,7 @@
                                     SNDRV_PCM_STATE_DRAINING : SNDRV_PCM_STATE_SETUP);
                break;
        case SNDRV_PCM_STATE_SUSPENDED:
+#ifdef CONFIG_PM
                while (card->power_state != SNDRV_CTL_POWER_D0) {
                        if (substream->ffile->f_flags & O_NONBLOCK) {
                                res = -EAGAIN;
@@ -1329,10 +1356,15 @@
                        spin_lock_irq(&runtime->lock);
                }
                goto _xrun_recovery;
+#else
+               break;
+#endif
        }
        _end:
        spin_unlock_irq(&runtime->lock);
+#ifdef CONFIG_PM
        snd_power_unlock(card);
+#endif
        return res;
 }
 
@@ -1341,7 +1373,9 @@
        snd_pcm_runtime_t *runtime = substream->runtime;
        snd_card_t *card = substream->pcm->card;
        int res = 0;
+#ifdef CONFIG_PM
        snd_power_lock(card, 1);
+#endif
        spin_lock_irq(&runtime->lock);
        switch (runtime->status->state) {
        case SNDRV_PCM_STATE_OPEN:
@@ -1356,6 +1390,7 @@
                snd_pcm_stop(substream, SNDRV_PCM_STATE_SETUP);
                break;
        case SNDRV_PCM_STATE_SUSPENDED:
+#ifdef CONFIG_PM
                while (card->power_state != SNDRV_CTL_POWER_D0) {
                        if (substream->ffile->f_flags & O_NONBLOCK) {
                                res = -EAGAIN;
@@ -1366,6 +1401,9 @@
                        spin_lock_irq(&runtime->lock);
                }
                /* Fall through */
+#else
+               break;
+#endif
        case SNDRV_PCM_STATE_PREPARED:
        case SNDRV_PCM_STATE_DRAINING:
        case SNDRV_PCM_STATE_XRUN:
@@ -1375,7 +1413,9 @@
        runtime->control->appl_ptr = runtime->status->hw_ptr;
        _end: 
        spin_unlock_irq(&runtime->lock);
+#ifdef CONFIG_PM
        snd_power_unlock(card);
+#endif
        return res;
 }
 


+---- --- -- -  -   -    - 
| Frank van de Pol                  -o)    A-L-S-A
| [EMAIL PROTECTED]                    /\\  Sounds good!
| http://www.alsa-project.org      _\_v
 Linux - Why use Windows if we have doors available?

_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to