forked from Minki/linux
ASoC: wm_adsp: Interpret ADSP memory region lengths as 32 bit words
Pad the ADSP word (3 bytes) to 4 bytes in the kernel and calculate lengths based on padded ADSP words instead of treating them as bytes Signed-off-by: Nariman Poushin <nariman@opensource.wolfsonmicro.com> Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@linaro.org> Cc: stable@vger.kernel.org
This commit is contained in:
parent
5e01dc7b26
commit
c01422a4a1
@ -1062,6 +1062,7 @@ static int wm_adsp_setup_algs(struct wm_adsp *dsp)
|
||||
if (i + 1 < algs) {
|
||||
region->len = be32_to_cpu(adsp1_alg[i + 1].dm);
|
||||
region->len -= be32_to_cpu(adsp1_alg[i].dm);
|
||||
region->len *= 4;
|
||||
wm_adsp_create_control(dsp, region);
|
||||
} else {
|
||||
adsp_warn(dsp, "Missing length info for region DM with ID %x\n",
|
||||
@ -1079,6 +1080,7 @@ static int wm_adsp_setup_algs(struct wm_adsp *dsp)
|
||||
if (i + 1 < algs) {
|
||||
region->len = be32_to_cpu(adsp1_alg[i + 1].zm);
|
||||
region->len -= be32_to_cpu(adsp1_alg[i].zm);
|
||||
region->len *= 4;
|
||||
wm_adsp_create_control(dsp, region);
|
||||
} else {
|
||||
adsp_warn(dsp, "Missing length info for region ZM with ID %x\n",
|
||||
@ -1108,6 +1110,7 @@ static int wm_adsp_setup_algs(struct wm_adsp *dsp)
|
||||
if (i + 1 < algs) {
|
||||
region->len = be32_to_cpu(adsp2_alg[i + 1].xm);
|
||||
region->len -= be32_to_cpu(adsp2_alg[i].xm);
|
||||
region->len *= 4;
|
||||
wm_adsp_create_control(dsp, region);
|
||||
} else {
|
||||
adsp_warn(dsp, "Missing length info for region XM with ID %x\n",
|
||||
@ -1125,6 +1128,7 @@ static int wm_adsp_setup_algs(struct wm_adsp *dsp)
|
||||
if (i + 1 < algs) {
|
||||
region->len = be32_to_cpu(adsp2_alg[i + 1].ym);
|
||||
region->len -= be32_to_cpu(adsp2_alg[i].ym);
|
||||
region->len *= 4;
|
||||
wm_adsp_create_control(dsp, region);
|
||||
} else {
|
||||
adsp_warn(dsp, "Missing length info for region YM with ID %x\n",
|
||||
@ -1142,6 +1146,7 @@ static int wm_adsp_setup_algs(struct wm_adsp *dsp)
|
||||
if (i + 1 < algs) {
|
||||
region->len = be32_to_cpu(adsp2_alg[i + 1].zm);
|
||||
region->len -= be32_to_cpu(adsp2_alg[i].zm);
|
||||
region->len *= 4;
|
||||
wm_adsp_create_control(dsp, region);
|
||||
} else {
|
||||
adsp_warn(dsp, "Missing length info for region ZM with ID %x\n",
|
||||
|
Loading…
Reference in New Issue
Block a user