Commit cc7d6ce9 authored by Charles Keepax's avatar Charles Keepax Committed by Mark Brown

ASoC: wm_adsp: Factor out stripping padding from ADSP data

In preparation for more refactoring add a helper function to strip the
padding from ADSP data.
Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent eb23dcd2
...@@ -3231,6 +3231,21 @@ static inline int wm_adsp_buffer_write(struct wm_adsp_compr_buf *buf, ...@@ -3231,6 +3231,21 @@ static inline int wm_adsp_buffer_write(struct wm_adsp_compr_buf *buf,
buf->host_buf_ptr + field_offset, data); buf->host_buf_ptr + field_offset, data);
} }
static void wm_adsp_remove_padding(u32 *buf, int nwords, int data_word_size)
{
u8 *pack_in = (u8 *)buf;
u8 *pack_out = (u8 *)buf;
int i, j;
/* Remove the padding bytes from the data read from the DSP */
for (i = 0; i < nwords; i++) {
for (j = 0; j < data_word_size; j++)
*pack_out++ = *pack_in++;
pack_in += sizeof(*buf) - data_word_size;
}
}
static int wm_adsp_legacy_host_buf_addr(struct wm_adsp_compr_buf *buf) static int wm_adsp_legacy_host_buf_addr(struct wm_adsp_compr_buf *buf)
{ {
struct wm_adsp_alg_region *alg_region; struct wm_adsp_alg_region *alg_region;
...@@ -3666,11 +3681,9 @@ EXPORT_SYMBOL_GPL(wm_adsp_compr_pointer); ...@@ -3666,11 +3681,9 @@ EXPORT_SYMBOL_GPL(wm_adsp_compr_pointer);
static int wm_adsp_buffer_capture_block(struct wm_adsp_compr *compr, int target) static int wm_adsp_buffer_capture_block(struct wm_adsp_compr *compr, int target)
{ {
struct wm_adsp_compr_buf *buf = compr->buf; struct wm_adsp_compr_buf *buf = compr->buf;
u8 *pack_in = (u8 *)compr->raw_buf;
u8 *pack_out = (u8 *)compr->raw_buf;
unsigned int adsp_addr; unsigned int adsp_addr;
int mem_type, nwords, max_read; int mem_type, nwords, max_read;
int i, j, ret; int i, ret;
/* Calculate read parameters */ /* Calculate read parameters */
for (i = 0; i < wm_adsp_fw[buf->dsp->fw].caps->num_regions; ++i) for (i = 0; i < wm_adsp_fw[buf->dsp->fw].caps->num_regions; ++i)
...@@ -3702,13 +3715,7 @@ static int wm_adsp_buffer_capture_block(struct wm_adsp_compr *compr, int target) ...@@ -3702,13 +3715,7 @@ static int wm_adsp_buffer_capture_block(struct wm_adsp_compr *compr, int target)
if (ret < 0) if (ret < 0)
return ret; return ret;
/* Remove the padding bytes from the data read from the DSP */ wm_adsp_remove_padding(compr->raw_buf, nwords, WM_ADSP_DATA_WORD_SIZE);
for (i = 0; i < nwords; i++) {
for (j = 0; j < WM_ADSP_DATA_WORD_SIZE; j++)
*pack_out++ = *pack_in++;
pack_in += sizeof(*(compr->raw_buf)) - WM_ADSP_DATA_WORD_SIZE;
}
/* update read index to account for words read */ /* update read index to account for words read */
buf->read_index += nwords; buf->read_index += nwords;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment