[alsa-devel] [PATCH 1/1] ALSA: CA0132 - Ensure SCP packet is little-endian format
ian_minett at creativelabs.com
Thu Sep 27 03:23:59 CEST 2012
From: Ian Minett <ian_minett at creativelabs.com>
Great - good to hear the previous DSP loader patches are now living in the
hda-ca0132-dsp branch. This patch is based on that branch, and addresses
the SCP packet endianness.
>> The firmware does need to be reloaded when the chip loses power, so it
>> doesn't survive S3.
>OK, we need suspend/resume hooks, too.
Do we need to do anything specific to handle this? The firmware is already
restored upon S3 by the current caching code.
The DSP firmware expects the SCP data to be in little-endian
format regardless of the host architecture.
Signed-off-by: Ian Minett <ian_minett at creativelabs.com>
diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
index 2fd3121..4d7cda4 100644
@@ -28,6 +28,7 @@
@@ -701,9 +702,13 @@ static int dspio_send(struct hda_codec *codec, unsigned int reg,
unsigned int res;
int retry = 50;
+ /* Handling for Big Endian machine */
+ unsigned int val;
+ put_unaligned_le32(data, &val);
/* send bits of data specified by reg to dsp */
- res = snd_hda_codec_read(codec, WIDGET_DSP_CTRL, 0, reg, data);
+ res = snd_hda_codec_read(codec, WIDGET_DSP_CTRL, 0, reg, val);
if ((res >= 0) && (res != VENDOR_STATUS_DSPIO_BUSY))
} while (--retry);
More information about the Alsa-devel