ASoC: wm_adsp: Factor out parsing of firmware ID header
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Tue, 19 Mar 2019 11:52:11 +0000 (11:52 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 19 Mar 2019 12:40:25 +0000 (12:40 +0000)
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>
sound/soc/codecs/wm_adsp.c

index fb25276..acb57dd 100644 (file)
@@ -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)
 {
        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);
-       dsp->fw_id = be32_to_cpu(adsp1_id.fw.id);
-       adsp_info(dsp, "Firmware: %x v%d.%d.%d, %zu algorithms\n",
-                 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);
+
+       wmfw_parse_id_header(dsp, &adsp1_id.fw, n_algs);
 
        alg_region = wm_adsp_create_region(dsp, WMFW_ADSP1_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);
-       dsp->fw_id = be32_to_cpu(adsp2_id.fw.id);
-       dsp->fw_id_version = be32_to_cpu(adsp2_id.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,
-                 n_algs);
+
+       wmfw_parse_id_header(dsp, &adsp2_id.fw, n_algs);
 
        alg_region = wm_adsp_create_region(dsp, WMFW_ADSP2_XM,
                                           adsp2_id.fw.id, adsp2_id.xm);