ASoC: wm_adsp: Factor out calculation of memory base addresses
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
Родитель
db40517c75
Коммит
45b9ee72d0
|
@ -156,6 +156,26 @@ static struct wm_adsp_region const *wm_adsp_find_region(struct wm_adsp *dsp,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int wm_adsp_region_to_reg(struct wm_adsp_region const *region,
|
||||||
|
unsigned int offset)
|
||||||
|
{
|
||||||
|
switch (region->type) {
|
||||||
|
case WMFW_ADSP1_PM:
|
||||||
|
return region->base + (offset * 3);
|
||||||
|
case WMFW_ADSP1_DM:
|
||||||
|
return region->base + (offset * 2);
|
||||||
|
case WMFW_ADSP2_XM:
|
||||||
|
return region->base + (offset * 2);
|
||||||
|
case WMFW_ADSP2_YM:
|
||||||
|
return region->base + (offset * 2);
|
||||||
|
case WMFW_ADSP1_ZM:
|
||||||
|
return region->base + (offset * 2);
|
||||||
|
default:
|
||||||
|
WARN_ON(NULL != "Unknown memory region type");
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int wm_adsp_load(struct wm_adsp *dsp)
|
static int wm_adsp_load(struct wm_adsp *dsp)
|
||||||
{
|
{
|
||||||
const struct firmware *firmware;
|
const struct firmware *firmware;
|
||||||
|
@ -282,27 +302,27 @@ static int wm_adsp_load(struct wm_adsp *dsp)
|
||||||
case WMFW_ADSP1_PM:
|
case WMFW_ADSP1_PM:
|
||||||
BUG_ON(!mem);
|
BUG_ON(!mem);
|
||||||
region_name = "PM";
|
region_name = "PM";
|
||||||
reg = mem->base + (offset * 3);
|
reg = wm_adsp_region_to_reg(mem, offset);
|
||||||
break;
|
break;
|
||||||
case WMFW_ADSP1_DM:
|
case WMFW_ADSP1_DM:
|
||||||
BUG_ON(!mem);
|
BUG_ON(!mem);
|
||||||
region_name = "DM";
|
region_name = "DM";
|
||||||
reg = mem->base + (offset * 2);
|
reg = wm_adsp_region_to_reg(mem, offset);
|
||||||
break;
|
break;
|
||||||
case WMFW_ADSP2_XM:
|
case WMFW_ADSP2_XM:
|
||||||
BUG_ON(!mem);
|
BUG_ON(!mem);
|
||||||
region_name = "XM";
|
region_name = "XM";
|
||||||
reg = mem->base + (offset * 2);
|
reg = wm_adsp_region_to_reg(mem, offset);
|
||||||
break;
|
break;
|
||||||
case WMFW_ADSP2_YM:
|
case WMFW_ADSP2_YM:
|
||||||
BUG_ON(!mem);
|
BUG_ON(!mem);
|
||||||
region_name = "YM";
|
region_name = "YM";
|
||||||
reg = mem->base + (offset * 2);
|
reg = wm_adsp_region_to_reg(mem, offset);
|
||||||
break;
|
break;
|
||||||
case WMFW_ADSP1_ZM:
|
case WMFW_ADSP1_ZM:
|
||||||
BUG_ON(!mem);
|
BUG_ON(!mem);
|
||||||
region_name = "ZM";
|
region_name = "ZM";
|
||||||
reg = mem->base + (offset * 2);
|
reg = wm_adsp_region_to_reg(mem, offset);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
adsp_warn(dsp,
|
adsp_warn(dsp,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче