diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2014-11-21 12:53:52 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2014-11-21 13:17:50 -0500 |
commit | 1fc10044d76e86b71f724988c7cbd8205bb903a8 (patch) | |
tree | fc30631aebb95ea9f0f89c85dc1fdeb0315c66ea | |
parent | dee9cec42fc9cc4635ea2f45939e443210a638f8 (diff) |
ASoC: sigmadsp: Fix endianness conversion
Make sure to always convert the firmware data to local endianness before
using it.
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Fixes: a35daac77a03 ("ASoC: sigmadsp: Add support for fw v2")
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/codecs/sigmadsp.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sound/soc/codecs/sigmadsp.c b/sound/soc/codecs/sigmadsp.c index 55af596935d4..6abefd27b86c 100644 --- a/sound/soc/codecs/sigmadsp.c +++ b/sound/soc/codecs/sigmadsp.c | |||
@@ -235,7 +235,7 @@ static int sigma_fw_load_control(struct sigmadsp *sigmadsp, | |||
235 | 235 | ||
236 | ctrl->addr = le16_to_cpu(ctrl_chunk->addr); | 236 | ctrl->addr = le16_to_cpu(ctrl_chunk->addr); |
237 | ctrl->num_bytes = num_bytes; | 237 | ctrl->num_bytes = num_bytes; |
238 | ctrl->samplerates = chunk->samplerates; | 238 | ctrl->samplerates = le32_to_cpu(chunk->samplerates); |
239 | 239 | ||
240 | list_add_tail(&ctrl->head, &sigmadsp->ctrl_list); | 240 | list_add_tail(&ctrl->head, &sigmadsp->ctrl_list); |
241 | 241 | ||
@@ -266,7 +266,7 @@ static int sigma_fw_load_data(struct sigmadsp *sigmadsp, | |||
266 | 266 | ||
267 | data->addr = le16_to_cpu(data_chunk->addr); | 267 | data->addr = le16_to_cpu(data_chunk->addr); |
268 | data->length = length; | 268 | data->length = length; |
269 | data->samplerates = chunk->samplerates; | 269 | data->samplerates = le32_to_cpu(chunk->samplerates); |
270 | memcpy(data->data, data_chunk->data, length); | 270 | memcpy(data->data, data_chunk->data, length); |
271 | list_add_tail(&data->head, &sigmadsp->data_list); | 271 | list_add_tail(&data->head, &sigmadsp->data_list); |
272 | 272 | ||
@@ -329,7 +329,7 @@ static int sigmadsp_fw_load_v2(struct sigmadsp *sigmadsp, | |||
329 | if (length > fw->size - pos || length < sizeof(*chunk)) | 329 | if (length > fw->size - pos || length < sizeof(*chunk)) |
330 | return -EINVAL; | 330 | return -EINVAL; |
331 | 331 | ||
332 | switch (chunk->tag) { | 332 | switch (le32_to_cpu(chunk->tag)) { |
333 | case SIGMA_FW_CHUNK_TYPE_DATA: | 333 | case SIGMA_FW_CHUNK_TYPE_DATA: |
334 | ret = sigma_fw_load_data(sigmadsp, chunk, length); | 334 | ret = sigma_fw_load_data(sigmadsp, chunk, length); |
335 | break; | 335 | break; |