ASoC: cs530x: Check the DEVID matches the devtype

If the read device ID is not the expected devtype derived from the
compatible device match then fail the probe as other configuration
details may be incorrect.

Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com>
Link: https://patch.msgid.link/20251023090327.58275-9-vitalyr@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Simon Trimmer 2025-10-23 10:03:16 +01:00 committed by Mark Brown
parent 3941abb26f
commit c37c3e5e39
2 changed files with 13 additions and 7 deletions

View File

@ -1181,6 +1181,12 @@ static int cs530x_check_device_id(struct cs530x_priv *cs530x)
dev_id);
}
if (cs530x->devtype != dev_id) {
dev_err(dev, "Read device ID 0x%x is not the expected devtype 0x%x\n",
dev_id, cs530x->devtype);
return -EINVAL;
}
dev_dbg(dev, "Device ID 0x%x Rev ID 0x%x (%d in %d out)\n", dev_id, rev,
cs530x->num_adcs, cs530x->num_dacs);

View File

@ -211,13 +211,13 @@
#define CS530X_NUM_SUPPLIES 2
enum cs530x_type {
CS4282,
CS4302,
CS4304,
CS4308,
CS5302,
CS5304,
CS5308,
CS4282 = CS530X_2CH_CODEC_DEV_ID,
CS4302 = CS530X_2CH_DAC_DEV_ID,
CS4304 = CS530X_4CH_DAC_DEV_ID,
CS4308 = CS530X_8CH_DAC_DEV_ID,
CS5302 = CS530X_2CH_ADC_DEV_ID,
CS5304 = CS530X_4CH_ADC_DEV_ID,
CS5308 = CS530X_8CH_ADC_DEV_ID,
};
/* codec private data */