c8b198ed31
Many of the older Cirrus devices share very similar code for reading the device ID, and frequently this code is generating cppcheck warnings such as: sound/soc/codecs/cs42l42.c:1886:6: style: Variable 'ret' is reassigned a value before the old one has been used. [redundantAssignment] ret = regmap_read(cs42l42->regmap, CS42L42_DEVID_CD, ®); Add a small helper function that older Cirrus devices can use to read the device ID, which should help correct these issues. Reported-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210510131357.17170-2-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
22 lines
530 B
C
22 lines
530 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Some small helpers for older Cirrus Logic parts.
|
|
*
|
|
* Copyright (C) 2021 Cirrus Logic, Inc. and
|
|
* Cirrus Logic International Semiconductor Ltd.
|
|
*/
|
|
|
|
static inline int cirrus_read_device_id(struct regmap *regmap, unsigned int reg)
|
|
{
|
|
u8 devid[3];
|
|
int ret;
|
|
|
|
ret = regmap_bulk_read(regmap, reg, devid, ARRAY_SIZE(devid));
|
|
if (ret < 0)
|
|
return ret;
|
|
|
|
return ((devid[0] & 0xFF) << 12) |
|
|
((devid[1] & 0xFF) << 4) |
|
|
((devid[2] & 0xF0) >> 4);
|
|
}
|