OSDN Git Service

ALSA: isight: add AudioEnable register write
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Wed, 11 May 2011 08:49:58 +0000 (10:49 +0200)
committerTakashi Iwai <tiwai@suse.de>
Wed, 11 May 2011 12:51:20 +0000 (14:51 +0200)
which is needed to get the iSight to talk.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/isight.c

index 10a9b9b..1a8da26 100644 (file)
@@ -345,7 +345,7 @@ static int isight_hw_free(struct snd_pcm_substream *substream)
 
 static int isight_start_streaming(struct isight *isight)
 {
-       __be32 sample_rate;
+       __be32 value;
        unsigned int i;
        int err;
 
@@ -356,10 +356,10 @@ static int isight_start_streaming(struct isight *isight)
                        return 0;
        }
 
-       sample_rate = cpu_to_be32(RATE_48000);
+       value = cpu_to_be32(RATE_48000);
        err = snd_fw_transaction(isight->unit, TCODE_WRITE_QUADLET_REQUEST,
                                 isight->audio_base + REG_SAMPLE_RATE,
-                                &sample_rate, 4);
+                                &value, 4);
        if (err < 0)
                return err;
 
@@ -367,6 +367,13 @@ static int isight_start_streaming(struct isight *isight)
        if (err < 0)
                goto error;
 
+       value = cpu_to_be32(AUDIO_ENABLE);
+       err = snd_fw_transaction(isight->unit, TCODE_WRITE_QUADLET_REQUEST,
+                                isight->audio_base + REG_AUDIO_ENABLE,
+                                &value, 4);
+       if (err < 0)
+               goto err_resources;
+
        isight->context = fw_iso_context_create(isight->device->card,
                                                FW_ISO_CONTEXT_RECEIVE,
                                                isight->resources.channel,
@@ -400,6 +407,10 @@ err_context:
        fw_iso_context_destroy(isight->context);
        isight->context = NULL;
 err_resources:
+       value = 0;
+       snd_fw_transaction(isight->unit, TCODE_WRITE_QUADLET_REQUEST,
+                          isight->audio_base + REG_AUDIO_ENABLE,
+                          &value, 4);
        fw_iso_resources_free(&isight->resources);
 error:
        return err;