[PATCH} hwmon: (jc42) Properly detect TSE2004-compliant devices again

Commit b3e992f69c ("hwmon: (jc42)  Strengthen detect function")
attempted to make the detect function more robust for
TSE2004-compliant devices by checking capability bits which, according
to the JEDEC 21-C specification, should always be set. Unfortunately,
not all real-world implementations fully adhere to this specification,
so this change caused a regression.

Stop testing bit 7 (EVSD) of the Capabilities register, as it was
found to be 0 on one real-world device.

Also stop testing bits 0 (EVENT) and 2 (RANGE) as vendor datasheets
(Renesas TSE2004GB2B0, ST STTS2004) suggest that they may not always
be set either.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Message-ID: <20241014141204.026f4641@endymion.delvare>
Fixes: b3e992f69c ("hwmon: (jc42)  Strengthen detect function")
Message-ID: <20241014220426.0c8f4d9c@endymion.delvare>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Jean Delvare 2024-10-14 22:04:26 +02:00 committed by Guenter Roeck
parent 8e929cb546
commit eabb038101

View File

@ -417,7 +417,7 @@ static int jc42_detect(struct i2c_client *client, struct i2c_board_info *info)
return -ENODEV; return -ENODEV;
if ((devid & TSE2004_DEVID_MASK) == TSE2004_DEVID && if ((devid & TSE2004_DEVID_MASK) == TSE2004_DEVID &&
(cap & 0x00e7) != 0x00e7) (cap & 0x0062) != 0x0062)
return -ENODEV; return -ENODEV;
for (i = 0; i < ARRAY_SIZE(jc42_chips); i++) { for (i = 0; i < ARRAY_SIZE(jc42_chips); i++) {