aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/soc/codecs/wm_adsp.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
index 68eda929fbde..a793c7d951ce 100644
--- a/sound/soc/codecs/wm_adsp.c
+++ b/sound/soc/codecs/wm_adsp.c
@@ -565,6 +565,22 @@ static int wm_adsp_setup_algs(struct wm_adsp *dsp)
565 be32_to_cpu(adsp1_id.fw.ver) & 0xff, 565 be32_to_cpu(adsp1_id.fw.ver) & 0xff,
566 algs); 566 algs);
567 567
568 region = kzalloc(sizeof(*region), GFP_KERNEL);
569 if (!region)
570 return -ENOMEM;
571 region->type = WMFW_ADSP1_ZM;
572 region->alg = be32_to_cpu(adsp1_id.fw.id);
573 region->base = be32_to_cpu(adsp1_id.zm);
574 list_add_tail(&region->list, &dsp->alg_regions);
575
576 region = kzalloc(sizeof(*region), GFP_KERNEL);
577 if (!region)
578 return -ENOMEM;
579 region->type = WMFW_ADSP1_DM;
580 region->alg = be32_to_cpu(adsp1_id.fw.id);
581 region->base = be32_to_cpu(adsp1_id.dm);
582 list_add_tail(&region->list, &dsp->alg_regions);
583
568 pos = sizeof(adsp1_id) / 2; 584 pos = sizeof(adsp1_id) / 2;
569 term = pos + ((sizeof(*adsp1_alg) * algs) / 2); 585 term = pos + ((sizeof(*adsp1_alg) * algs) / 2);
570 break; 586 break;
@@ -590,6 +606,30 @@ static int wm_adsp_setup_algs(struct wm_adsp *dsp)
590 be32_to_cpu(adsp2_id.fw.ver) & 0xff, 606 be32_to_cpu(adsp2_id.fw.ver) & 0xff,
591 algs); 607 algs);
592 608
609 region = kzalloc(sizeof(*region), GFP_KERNEL);
610 if (!region)
611 return -ENOMEM;
612 region->type = WMFW_ADSP2_XM;
613 region->alg = be32_to_cpu(adsp2_id.fw.id);
614 region->base = be32_to_cpu(adsp2_id.xm);
615 list_add_tail(&region->list, &dsp->alg_regions);
616
617 region = kzalloc(sizeof(*region), GFP_KERNEL);
618 if (!region)
619 return -ENOMEM;
620 region->type = WMFW_ADSP2_YM;
621 region->alg = be32_to_cpu(adsp2_id.fw.id);
622 region->base = be32_to_cpu(adsp2_id.ym);
623 list_add_tail(&region->list, &dsp->alg_regions);
624
625 region = kzalloc(sizeof(*region), GFP_KERNEL);
626 if (!region)
627 return -ENOMEM;
628 region->type = WMFW_ADSP2_ZM;
629 region->alg = be32_to_cpu(adsp2_id.fw.id);
630 region->base = be32_to_cpu(adsp2_id.zm);
631 list_add_tail(&region->list, &dsp->alg_regions);
632
593 pos = sizeof(adsp2_id) / 2; 633 pos = sizeof(adsp2_id) / 2;
594 term = pos + ((sizeof(*adsp2_alg) * algs) / 2); 634 term = pos + ((sizeof(*adsp2_alg) * algs) / 2);
595 break; 635 break;