ASoC: cs-amp-lib: Check for no firmware controls when writing calibration
authorSimon Trimmer <simont@opensource.cirrus.com>
Mon, 25 Mar 2024 14:44:50 +0000 (14:44 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 25 Mar 2024 16:37:09 +0000 (16:37 +0000)
When a wmfw file has not been loaded the firmware control descriptions
necessary to write a stored calibration are not present. In this case
print a more descriptive error message.

The message is logged at info level because it is not fatal, and does
not necessarily imply that anything is broken.

Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://msgid.link/r/20240325144450.293630-1-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs-amp-lib.c

index 01ef4db5407da52cc04c6813ba07970c24d91541..287ac01a387357beffe2a8f76ab5f3ec15dc7b3d 100644 (file)
@@ -56,6 +56,11 @@ static int _cs_amp_write_cal_coeffs(struct cs_dsp *dsp,
        dev_dbg(dsp->dev, "Calibration: Ambient=%#x, Status=%#x, CalR=%d\n",
                data->calAmbient, data->calStatus, data->calR);
 
+       if (list_empty(&dsp->ctl_list)) {
+               dev_info(dsp->dev, "Calibration disabled due to missing firmware controls\n");
+               return -ENOENT;
+       }
+
        ret = cs_amp_write_cal_coeff(dsp, controls, controls->ambient, data->calAmbient);
        if (ret)
                return ret;