From: Simon Trimmer Date: Thu, 23 Oct 2025 09:03:16 +0000 (+0100) Subject: ASoC: cs530x: Check the DEVID matches the devtype X-Git-Tag: v6.19-rc1~156^2~3^2~83^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c37c3e5e390dcd52cbe6178ac53f5a6131ef6f8c;p=thirdparty%2Fkernel%2Flinux.git 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 Signed-off-by: Vitaly Rodionov Link: https://patch.msgid.link/20251023090327.58275-9-vitalyr@opensource.cirrus.com Signed-off-by: Mark Brown --- diff --git a/sound/soc/codecs/cs530x.c b/sound/soc/codecs/cs530x.c index abe3fe3654254..6552bef0577b0 100644 --- a/sound/soc/codecs/cs530x.c +++ b/sound/soc/codecs/cs530x.c @@ -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); diff --git a/sound/soc/codecs/cs530x.h b/sound/soc/codecs/cs530x.h index 52fb148df36ae..d11711715ba80 100644 --- a/sound/soc/codecs/cs530x.h +++ b/sound/soc/codecs/cs530x.h @@ -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 */