Commit 14197095 authored by Charles Keepax's avatar Charles Keepax Committed by Mark Brown
Browse files

ASoC: wm_adsp: Factor out finding the location of an algorithm region

parent 1d981e0a
Loading
Loading
Loading
Loading
+21 −14
Original line number Original line Diff line number Diff line
@@ -1365,6 +1365,19 @@ static void *wm_adsp_read_algs(struct wm_adsp *dsp, size_t n_algs,
	return alg;
	return alg;
}
}


static struct wm_adsp_alg_region *
	wm_adsp_find_alg_region(struct wm_adsp *dsp, int type, unsigned int id)
{
	struct wm_adsp_alg_region *alg_region;

	list_for_each_entry(alg_region, &dsp->alg_regions, list) {
		if (id == alg_region->alg && type == alg_region->type)
			return alg_region;
	}

	return NULL;
}

static struct wm_adsp_alg_region *wm_adsp_create_region(struct wm_adsp *dsp,
static struct wm_adsp_alg_region *wm_adsp_create_region(struct wm_adsp *dsp,
							int type, __be32 id,
							int type, __be32 id,
							__be32 base)
							__be32 base)
@@ -1737,22 +1750,16 @@ static int wm_adsp_load_coeff(struct wm_adsp *dsp)
				break;
				break;
			}
			}


			reg = 0;
			alg_region = wm_adsp_find_alg_region(dsp, type,
			list_for_each_entry(alg_region,
						le32_to_cpu(blk->id));
					    &dsp->alg_regions, list) {
			if (alg_region) {
				if (le32_to_cpu(blk->id) == alg_region->alg &&
				    type == alg_region->type) {
				reg = alg_region->base;
				reg = alg_region->base;
					reg = wm_adsp_region_to_reg(mem,
				reg = wm_adsp_region_to_reg(mem, reg);
								    reg);
				reg += offset;
				reg += offset;
					break;
			} else {
				}
			}

			if (reg == 0)
				adsp_err(dsp, "No %x for algorithm %x\n",
				adsp_err(dsp, "No %x for algorithm %x\n",
					 type, le32_to_cpu(blk->id));
					 type, le32_to_cpu(blk->id));
			}
			break;
			break;


		default:
		default: