ASoC: wm_adsp: Factor out parsing of firmware ID header
There is no need to duplicate this code for both ADSP1 and 2 as the handling is exactly the same. Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
4049ce86fc
commit
a5dcb24d70
|
@ -1982,6 +1982,18 @@ static void wm_adsp_free_alg_regions(struct wm_adsp *dsp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void wmfw_parse_id_header(struct wm_adsp *dsp,
|
||||||
|
struct wmfw_id_hdr *fw, int nalgs)
|
||||||
|
{
|
||||||
|
dsp->fw_id = be32_to_cpu(fw->id);
|
||||||
|
dsp->fw_id_version = be32_to_cpu(fw->ver);
|
||||||
|
|
||||||
|
adsp_info(dsp, "Firmware: %x v%d.%d.%d, %zu algorithms\n",
|
||||||
|
dsp->fw_id, (dsp->fw_id_version & 0xff0000) >> 16,
|
||||||
|
(dsp->fw_id_version & 0xff00) >> 8, dsp->fw_id_version & 0xff,
|
||||||
|
nalgs);
|
||||||
|
}
|
||||||
|
|
||||||
static int wm_adsp1_setup_algs(struct wm_adsp *dsp)
|
static int wm_adsp1_setup_algs(struct wm_adsp *dsp)
|
||||||
{
|
{
|
||||||
struct wmfw_adsp1_id_hdr adsp1_id;
|
struct wmfw_adsp1_id_hdr adsp1_id;
|
||||||
|
@ -2005,13 +2017,8 @@ static int wm_adsp1_setup_algs(struct wm_adsp *dsp)
|
||||||
}
|
}
|
||||||
|
|
||||||
n_algs = be32_to_cpu(adsp1_id.n_algs);
|
n_algs = be32_to_cpu(adsp1_id.n_algs);
|
||||||
dsp->fw_id = be32_to_cpu(adsp1_id.fw.id);
|
|
||||||
adsp_info(dsp, "Firmware: %x v%d.%d.%d, %zu algorithms\n",
|
wmfw_parse_id_header(dsp, &adsp1_id.fw, n_algs);
|
||||||
dsp->fw_id,
|
|
||||||
(be32_to_cpu(adsp1_id.fw.ver) & 0xff0000) >> 16,
|
|
||||||
(be32_to_cpu(adsp1_id.fw.ver) & 0xff00) >> 8,
|
|
||||||
be32_to_cpu(adsp1_id.fw.ver) & 0xff,
|
|
||||||
n_algs);
|
|
||||||
|
|
||||||
alg_region = wm_adsp_create_region(dsp, WMFW_ADSP1_ZM,
|
alg_region = wm_adsp_create_region(dsp, WMFW_ADSP1_ZM,
|
||||||
adsp1_id.fw.id, adsp1_id.zm);
|
adsp1_id.fw.id, adsp1_id.zm);
|
||||||
|
@ -2111,14 +2118,8 @@ static int wm_adsp2_setup_algs(struct wm_adsp *dsp)
|
||||||
}
|
}
|
||||||
|
|
||||||
n_algs = be32_to_cpu(adsp2_id.n_algs);
|
n_algs = be32_to_cpu(adsp2_id.n_algs);
|
||||||
dsp->fw_id = be32_to_cpu(adsp2_id.fw.id);
|
|
||||||
dsp->fw_id_version = be32_to_cpu(adsp2_id.fw.ver);
|
wmfw_parse_id_header(dsp, &adsp2_id.fw, n_algs);
|
||||||
adsp_info(dsp, "Firmware: %x v%d.%d.%d, %zu algorithms\n",
|
|
||||||
dsp->fw_id,
|
|
||||||
(dsp->fw_id_version & 0xff0000) >> 16,
|
|
||||||
(dsp->fw_id_version & 0xff00) >> 8,
|
|
||||||
dsp->fw_id_version & 0xff,
|
|
||||||
n_algs);
|
|
||||||
|
|
||||||
alg_region = wm_adsp_create_region(dsp, WMFW_ADSP2_XM,
|
alg_region = wm_adsp_create_region(dsp, WMFW_ADSP2_XM,
|
||||||
adsp2_id.fw.id, adsp2_id.xm);
|
adsp2_id.fw.id, adsp2_id.xm);
|
||||||
|
|
Loading…
Reference in New Issue