Message ID | 20230329130525.15830-1-lujianhua000@gmail.com |
---|---|
State | New |
Headers | show |
Series | Asoc: wm_adsp: Add support for loading firmware with prefix name | expand |
On 29/3/23 14:05, Jianhua Lu wrote: > For platform using fdt, system_name is NULL, it doesn't provide > a way to load firmware with prefix name, so add it. This is intended behavior. To load per-amp tuning you must know the function of each amp. You only know that if you know what hardware platform you are running on. So if system_name is NULL it should fall back to generic firmware. > > Signed-off-by: Jianhua Lu <lujianhua000@gmail.com> > --- > sound/soc/codecs/wm_adsp.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c > index 216120b68b64..17481e42d440 100644 > --- a/sound/soc/codecs/wm_adsp.c > +++ b/sound/soc/codecs/wm_adsp.c > @@ -760,6 +760,10 @@ static int wm_adsp_request_firmware_file(struct wm_adsp *dsp, > *filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s.%s", dir, dsp->part, > dsp->fwf_name, wm_adsp_fw[dsp->fw].file, system_name, > filetype); > + else if (asoc_component_prefix) > + *filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s.%s", dir, dsp->part, > + dsp->fwf_name, wm_adsp_fw[dsp->fw].file, asoc_component_prefix, > + filetype); > else > *filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s.%s", dir, dsp->part, dsp->fwf_name, > wm_adsp_fw[dsp->fw].file, filetype); > @@ -831,6 +835,16 @@ static int wm_adsp_request_firmware_files(struct wm_adsp *dsp, > NULL, "bin"); > return 0; > } > + } else if (asoc_component_prefix) { > + if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, > + cirrus_dir, NULL, > + asoc_component_prefix, "wmfw")) { > + adsp_dbg(dsp, "Found '%s'\n", *wmfw_filename); > + wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, > + cirrus_dir, NULL, > + asoc_component_prefix, "bin"); > + return 0; > + } > } > > if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename,
On Wed, Mar 29, 2023 at 04:33:08PM +0100, Richard Fitzgerald wrote: > On 29/3/23 14:05, Jianhua Lu wrote: > > For platform using fdt, system_name is NULL, it doesn't provide > > a way to load firmware with prefix name, so add it. > > This is intended behavior. > > To load per-amp tuning you must know the function of each amp. > You only know that if you know what hardware platform you are running > on. > > So if system_name is NULL it should fall back to generic firmware. Make sense
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index 216120b68b64..17481e42d440 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -760,6 +760,10 @@ static int wm_adsp_request_firmware_file(struct wm_adsp *dsp, *filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s.%s", dir, dsp->part, dsp->fwf_name, wm_adsp_fw[dsp->fw].file, system_name, filetype); + else if (asoc_component_prefix) + *filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s.%s", dir, dsp->part, + dsp->fwf_name, wm_adsp_fw[dsp->fw].file, asoc_component_prefix, + filetype); else *filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s.%s", dir, dsp->part, dsp->fwf_name, wm_adsp_fw[dsp->fw].file, filetype); @@ -831,6 +835,16 @@ static int wm_adsp_request_firmware_files(struct wm_adsp *dsp, NULL, "bin"); return 0; } + } else if (asoc_component_prefix) { + if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, + cirrus_dir, NULL, + asoc_component_prefix, "wmfw")) { + adsp_dbg(dsp, "Found '%s'\n", *wmfw_filename); + wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, + cirrus_dir, NULL, + asoc_component_prefix, "bin"); + return 0; + } } if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename,
For platform using fdt, system_name is NULL, it doesn't provide a way to load firmware with prefix name, so add it. Signed-off-by: Jianhua Lu <lujianhua000@gmail.com> --- sound/soc/codecs/wm_adsp.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)