hwmon: (pmbus/ibm-cffps) Use MFR_ID to choose version
There are multiple power supplies that will indicate CFFPS_CCIN_VERSION_1, use the manufacturer ID to determine if it should be treated as version cffps1 or version cffps2. Signed-off-by: Brandon Wyman <bjwyman@gmail.com> Link: https://lore.kernel.org/r/20211004144339.2634330-2-bjwyman@gmail.com [groeck: Fixed continuation line alignment] Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Родитель
a111ec399c
Коммит
8a5cfcfa94
|
@ -508,16 +508,27 @@ static int ibm_cffps_probe(struct i2c_client *client)
|
|||
u16 ccin_revision = 0;
|
||||
u16 ccin_version = CFFPS_CCIN_VERSION_1;
|
||||
int ccin = i2c_smbus_read_word_swapped(client, CFFPS_CCIN_CMD);
|
||||
char mfg_id[I2C_SMBUS_BLOCK_MAX + 2] = { 0 };
|
||||
|
||||
if (ccin > 0) {
|
||||
ccin_revision = FIELD_GET(CFFPS_CCIN_REVISION, ccin);
|
||||
ccin_version = FIELD_GET(CFFPS_CCIN_VERSION, ccin);
|
||||
}
|
||||
|
||||
rc = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, mfg_id);
|
||||
if (rc < 0) {
|
||||
dev_err(&client->dev, "Failed to read Manufacturer ID\n");
|
||||
return rc;
|
||||
}
|
||||
|
||||
switch (ccin_version) {
|
||||
default:
|
||||
case CFFPS_CCIN_VERSION_1:
|
||||
vs = cffps1;
|
||||
if ((strncmp(mfg_id, "ACBE", 4) == 0) ||
|
||||
(strncmp(mfg_id, "ARTE", 4) == 0))
|
||||
vs = cffps1;
|
||||
else
|
||||
vs = cffps2;
|
||||
break;
|
||||
case CFFPS_CCIN_VERSION_2:
|
||||
vs = cffps2;
|
||||
|
|
Загрузка…
Ссылка в новой задаче