Unverified Commit ebc1a540 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Mark Brown
Browse files

ASoC: codecs: lpass-macro: Gracefully handle unknown version



Qualcomm LPASS macro codec driver parses registers in order to
detect version of the codec.  It recognizes codecs v2.0 - v2.8, however
we know that there are earlier versions and 'enum lpass_codec_version'
has also v1.0, v1.1 and v1.2.  If by any chance we run on unrecognized
version, driver will use random value from the stack as the codec
version.

Fix it by mapping such cases to an enum of value 0:
LPASS_CODEC_VERSION_UNKNOWN.

Fixes: 378918d5 ("ASoC: codecs: lpass-macro: add helpers to get codec version")
Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://patch.msgid.link/20240625165736.722106-1-krzysztof.kozlowski@linaro.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 727de4fb
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -19,7 +19,8 @@ enum lpass_version {
};

enum lpass_codec_version {
	LPASS_CODEC_VERSION_1_0 = 1,
	LPASS_CODEC_VERSION_UNKNOWN,
	LPASS_CODEC_VERSION_1_0,
	LPASS_CODEC_VERSION_1_1,
	LPASS_CODEC_VERSION_1_2,
	LPASS_CODEC_VERSION_2_0,
+2 −1
Original line number Diff line number Diff line
@@ -1463,7 +1463,8 @@ static int va_macro_validate_dmic_sample_rate(u32 dmic_sample_rate,

static void va_macro_set_lpass_codec_version(struct va_macro *va)
{
	int core_id_0 = 0, core_id_1 = 0, core_id_2 = 0, version;
	int core_id_0 = 0, core_id_1 = 0, core_id_2 = 0;
	int version = LPASS_CODEC_VERSION_UNKNOWN;

	regmap_read(va->regmap, CDC_VA_TOP_CSR_CORE_ID_0, &core_id_0);
	regmap_read(va->regmap, CDC_VA_TOP_CSR_CORE_ID_1, &core_id_1);