Loading Documentation/hwmon/lm90.rst +9 −1 Original line number Diff line number Diff line Loading @@ -411,6 +411,14 @@ Supported chips: Datasheets: Publicly available at the Philips website * Philips NE1618 Prefix: 'ne1618' Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e Datasheets: Publicly available at the Philips website * Genesys Logic GL523SM Prefix: 'gl523sm' Loading Loading @@ -469,7 +477,7 @@ ADM1020, ADM1021, GL523SM, MAX1617, NE1617, NE1617A, THMC10: * 8 bit sensor resolution * Low temperature limits NCT210: NCT210, NE1618: * 11 bit sensor resolution for remote temperature sensor * Low temperature limits Loading drivers/hwmon/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -1367,7 +1367,7 @@ config SENSORS_LM90 MAX6696, ON Semiconductor NCT1008, NCT210, NCT72, NCT214, NCT218, Winbond/Nuvoton W83L771W/G/AWG/ASG, Philips SA56004, GMT G781, Texas Instruments TMP451 and TMP461 Philips NE1618, SA56004, GMT G781, Texas Instruments TMP451 and TMP461 sensor chips. This driver can also be built as a module. If so, the module Loading drivers/hwmon/lm90.c +32 −12 Original line number Diff line number Diff line Loading @@ -87,6 +87,9 @@ * This driver also supports MAX1617 and various clones such as G767 * and NE1617. Such clones will be detected as MAX1617. * * This driver also supports NE1618 from Philips. It is similar to NE1617 * but supports 11 bit external temperature values. * * Since the LM90 was the first chipset supported by this driver, most * comments will refer to this chipset, but are actually general and * concern all supported chipsets, unless mentioned otherwise. Loading Loading @@ -129,7 +132,7 @@ static const unsigned short normal_i2c[] = { enum chips { adm1023, adm1032, adt7461, adt7461a, adt7481, g781, lm84, lm90, lm99, max1617, max6642, max6646, max6648, max6654, max6657, max6659, max6680, max6696, nct210, nct72, sa56004, tmp451, tmp461, w83l771, nct210, nct72, ne1618, sa56004, tmp451, tmp461, w83l771, }; /* Loading Loading @@ -267,6 +270,7 @@ static const struct i2c_device_id lm90_id[] = { { "nct214", nct72 }, { "nct218", nct72 }, { "nct72", nct72 }, { "ne1618", ne1618 }, { "w83l771", w83l771 }, { "sa56004", sa56004 }, { "thmc10", max1617 }, Loading Loading @@ -572,6 +576,13 @@ static const struct lm90_params lm90_params[] = { .resolution = 11, .max_convrate = 7, }, [ne1618] = { .flags = LM90_PAUSE_FOR_CONFIG | LM90_HAVE_BROKEN_ALERT | LM90_HAVE_LOW | LM90_HAVE_CONVRATE | LM90_HAVE_REMOTE_EXT, .alert_alarms = 0x7c, .resolution = 11, .max_convrate = 7, }, [w83l771] = { .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT | LM90_HAVE_CRIT | LM90_HAVE_ALARMS | LM90_HAVE_LOW | LM90_HAVE_CONVRATE Loading Loading @@ -2151,20 +2162,29 @@ static const char *lm90_detect_nuvoton(struct i2c_client *client, int chip_id, return name; } static const char *lm90_detect_nxp(struct i2c_client *client, int chip_id, int config1, int convrate) static const char *lm90_detect_nxp(struct i2c_client *client, bool common_address, int chip_id, int config1, int convrate) { int config2 = i2c_smbus_read_byte_data(client, LM90_REG_CONFIG2); int address = client->addr; const char *name = NULL; int config2; switch (chip_id) { case 0x00: config2 = i2c_smbus_read_byte_data(client, LM90_REG_CONFIG2); if (config2 < 0) return NULL; if (address >= 0x48 && address <= 0x4f && chip_id == 0x00 && if (address >= 0x48 && address <= 0x4f && !(config1 & 0x2a) && !(config2 & 0xfe) && convrate <= 0x09) name = "sa56004"; break; case 0x80: if (common_address && !(config1 & 0x3f) && convrate <= 0x07) name = "ne1618"; break; default: break; } return name; } Loading Loading @@ -2337,7 +2357,7 @@ static int lm90_detect(struct i2c_client *client, struct i2c_board_info *info) name = lm90_detect_nuvoton(client, chip_id, config1, convrate); break; case 0xa1: /* NXP Semiconductor/Philips */ name = lm90_detect_nxp(client, chip_id, config1, convrate); name = lm90_detect_nxp(client, common_address, chip_id, config1, convrate); break; case 0xff: /* MAX1617, G767, NE1617 */ if (common_address && chip_id == 0xff && convrate < 8) Loading Loading
Documentation/hwmon/lm90.rst +9 −1 Original line number Diff line number Diff line Loading @@ -411,6 +411,14 @@ Supported chips: Datasheets: Publicly available at the Philips website * Philips NE1618 Prefix: 'ne1618' Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e Datasheets: Publicly available at the Philips website * Genesys Logic GL523SM Prefix: 'gl523sm' Loading Loading @@ -469,7 +477,7 @@ ADM1020, ADM1021, GL523SM, MAX1617, NE1617, NE1617A, THMC10: * 8 bit sensor resolution * Low temperature limits NCT210: NCT210, NE1618: * 11 bit sensor resolution for remote temperature sensor * Low temperature limits Loading
drivers/hwmon/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -1367,7 +1367,7 @@ config SENSORS_LM90 MAX6696, ON Semiconductor NCT1008, NCT210, NCT72, NCT214, NCT218, Winbond/Nuvoton W83L771W/G/AWG/ASG, Philips SA56004, GMT G781, Texas Instruments TMP451 and TMP461 Philips NE1618, SA56004, GMT G781, Texas Instruments TMP451 and TMP461 sensor chips. This driver can also be built as a module. If so, the module Loading
drivers/hwmon/lm90.c +32 −12 Original line number Diff line number Diff line Loading @@ -87,6 +87,9 @@ * This driver also supports MAX1617 and various clones such as G767 * and NE1617. Such clones will be detected as MAX1617. * * This driver also supports NE1618 from Philips. It is similar to NE1617 * but supports 11 bit external temperature values. * * Since the LM90 was the first chipset supported by this driver, most * comments will refer to this chipset, but are actually general and * concern all supported chipsets, unless mentioned otherwise. Loading Loading @@ -129,7 +132,7 @@ static const unsigned short normal_i2c[] = { enum chips { adm1023, adm1032, adt7461, adt7461a, adt7481, g781, lm84, lm90, lm99, max1617, max6642, max6646, max6648, max6654, max6657, max6659, max6680, max6696, nct210, nct72, sa56004, tmp451, tmp461, w83l771, nct210, nct72, ne1618, sa56004, tmp451, tmp461, w83l771, }; /* Loading Loading @@ -267,6 +270,7 @@ static const struct i2c_device_id lm90_id[] = { { "nct214", nct72 }, { "nct218", nct72 }, { "nct72", nct72 }, { "ne1618", ne1618 }, { "w83l771", w83l771 }, { "sa56004", sa56004 }, { "thmc10", max1617 }, Loading Loading @@ -572,6 +576,13 @@ static const struct lm90_params lm90_params[] = { .resolution = 11, .max_convrate = 7, }, [ne1618] = { .flags = LM90_PAUSE_FOR_CONFIG | LM90_HAVE_BROKEN_ALERT | LM90_HAVE_LOW | LM90_HAVE_CONVRATE | LM90_HAVE_REMOTE_EXT, .alert_alarms = 0x7c, .resolution = 11, .max_convrate = 7, }, [w83l771] = { .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT | LM90_HAVE_CRIT | LM90_HAVE_ALARMS | LM90_HAVE_LOW | LM90_HAVE_CONVRATE Loading Loading @@ -2151,20 +2162,29 @@ static const char *lm90_detect_nuvoton(struct i2c_client *client, int chip_id, return name; } static const char *lm90_detect_nxp(struct i2c_client *client, int chip_id, int config1, int convrate) static const char *lm90_detect_nxp(struct i2c_client *client, bool common_address, int chip_id, int config1, int convrate) { int config2 = i2c_smbus_read_byte_data(client, LM90_REG_CONFIG2); int address = client->addr; const char *name = NULL; int config2; switch (chip_id) { case 0x00: config2 = i2c_smbus_read_byte_data(client, LM90_REG_CONFIG2); if (config2 < 0) return NULL; if (address >= 0x48 && address <= 0x4f && chip_id == 0x00 && if (address >= 0x48 && address <= 0x4f && !(config1 & 0x2a) && !(config2 & 0xfe) && convrate <= 0x09) name = "sa56004"; break; case 0x80: if (common_address && !(config1 & 0x3f) && convrate <= 0x07) name = "ne1618"; break; default: break; } return name; } Loading Loading @@ -2337,7 +2357,7 @@ static int lm90_detect(struct i2c_client *client, struct i2c_board_info *info) name = lm90_detect_nuvoton(client, chip_id, config1, convrate); break; case 0xa1: /* NXP Semiconductor/Philips */ name = lm90_detect_nxp(client, chip_id, config1, convrate); name = lm90_detect_nxp(client, common_address, chip_id, config1, convrate); break; case 0xff: /* MAX1617, G767, NE1617 */ if (common_address && chip_id == 0xff && convrate < 8) Loading