ASoC: cs35l56: Fix misuse of wm_adsp 'part' string for silicon revision
Put the silicon revision and secured flag in the wm_adsp fwf_name string instead of including them in the part string. This changes the format of the firmware name string from cs35l56[s]-rev-misc[-system_name] to cs35l56-rev[-s]-misc[-system_name] No firmware files have been published, so this doesn't cause a compatibility break. Silicon revision and secured flag are included in the firmware filename to pick a firmware compatible with the part. These strings were being added to the part string, but that is a misuse of the string. The correct place for these is the fwf_name string, which is specifically intended to select between multiple firmware files for the same part. Backport note: This won't apply to kernels older than v6.6. Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Fixes: 608f1b0dbdde ("ASoC: cs35l56: Move DSP part string generation so that it is done only once") Link: https://msgid.link/r/20240129162737.497-12-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
07f7d6e7a1
commit
f6c967941c
@ -907,6 +907,18 @@ static void cs35l56_dsp_work(struct work_struct *work)
|
||||
|
||||
pm_runtime_get_sync(cs35l56->base.dev);
|
||||
|
||||
/* Populate fw file qualifier with the revision and security state */
|
||||
if (!cs35l56->dsp.fwf_name) {
|
||||
cs35l56->dsp.fwf_name = kasprintf(GFP_KERNEL, "%02x%s-dsp1",
|
||||
cs35l56->base.rev,
|
||||
cs35l56->base.secured ? "-s" : "");
|
||||
if (!cs35l56->dsp.fwf_name)
|
||||
goto err;
|
||||
}
|
||||
|
||||
dev_dbg(cs35l56->base.dev, "DSP fwf name: '%s' system name: '%s'\n",
|
||||
cs35l56->dsp.fwf_name, cs35l56->dsp.system_name);
|
||||
|
||||
/*
|
||||
* When the device is running in secure mode the firmware files can
|
||||
* only contain insecure tunings and therefore we do not need to
|
||||
@ -926,7 +938,7 @@ static void cs35l56_dsp_work(struct work_struct *work)
|
||||
* on the DAPM mutex.
|
||||
*/
|
||||
queue_work(cs35l56->dsp_wq, &cs35l56->mux_init_work);
|
||||
|
||||
err:
|
||||
pm_runtime_mark_last_busy(cs35l56->base.dev);
|
||||
pm_runtime_put_autosuspend(cs35l56->base.dev);
|
||||
}
|
||||
@ -979,6 +991,9 @@ static void cs35l56_component_remove(struct snd_soc_component *component)
|
||||
|
||||
wm_adsp2_component_remove(&cs35l56->dsp, component);
|
||||
|
||||
kfree(cs35l56->dsp.fwf_name);
|
||||
cs35l56->dsp.fwf_name = NULL;
|
||||
|
||||
cs35l56->component = NULL;
|
||||
}
|
||||
|
||||
@ -1330,12 +1345,6 @@ int cs35l56_init(struct cs35l56_private *cs35l56)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Populate the DSP information with the revision and security state */
|
||||
cs35l56->dsp.part = devm_kasprintf(cs35l56->base.dev, GFP_KERNEL, "cs35l56%s-%02x",
|
||||
cs35l56->base.secured ? "s" : "", cs35l56->base.rev);
|
||||
if (!cs35l56->dsp.part)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!cs35l56->base.reset_gpio) {
|
||||
dev_dbg(cs35l56->base.dev, "No reset gpio: using soft reset\n");
|
||||
cs35l56->soft_resetting = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user