ALSA: isight: add AudioEnable register write

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>
diff --git a/sound/firewire/isight.c b/sound/firewire/isight.c
index 10a9b9b..1a8da26 100644
--- a/sound/firewire/isight.c
+++ b/sound/firewire/isight.c
@@ -345,7 +345,7 @@
 
 static int isight_start_streaming(struct isight *isight)
 {
-	__be32 sample_rate;
+	__be32 value;
 	unsigned int i;
 	int err;
 
@@ -356,10 +356,10 @@
 			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 @@
 	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 @@
 	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;