Lines Matching refs:data

64  * and extended mode. They are mostly compatible with LM90 except for a data
214 * Driver data (common to all clients)
249 .data = (void *)adm1032
253 .data = (void *)adt7461
257 .data = (void *)adt7461
261 .data = (void *)g781
265 .data = (void *)lm90
269 .data = (void *)lm86
273 .data = (void *)lm86
277 .data = (void *)lm99
281 .data = (void *)max6646
285 .data = (void *)max6646
289 .data = (void *)max6646
293 .data = (void *)max6654
297 .data = (void *)max6657
301 .data = (void *)max6657
305 .data = (void *)max6659
309 .data = (void *)max6680
313 .data = (void *)max6680
317 .data = (void *)max6696
321 .data = (void *)max6696
325 .data = (void *)adt7461
329 .data = (void *)w83l771
333 .data = (void *)sa56004
337 .data = (void *)tmp451
341 .data = (void *)tmp461
491 * Client data (each client gets its own)
592 static int lm90_update_confreg(struct lm90_data *data, u8 config)
594 if (data->config != config) {
597 err = i2c_smbus_write_byte_data(data->client,
602 data->config = config;
615 static int lm90_select_remote_channel(struct lm90_data *data, int channel)
619 if (data->kind == max6696) {
620 u8 config = data->config & ~0x08;
624 err = lm90_update_confreg(data, config);
629 static int lm90_write_convrate(struct lm90_data *data, int val)
631 u8 config = data->config;
635 if (data->flags & LM90_PAUSE_FOR_CONFIG) {
636 err = lm90_update_confreg(data, config | 0x40);
642 err = i2c_smbus_write_byte_data(data->client, LM90_REG_W_CONVRATE, val);
645 lm90_update_confreg(data, config);
655 static int lm90_set_convrate(struct i2c_client *client, struct lm90_data *data,
666 i < data->max_convrate; i++, update_interval >>= 1)
670 err = lm90_write_convrate(data, i);
671 data->update_interval = DIV_ROUND_CLOSEST(update_interval, 64);
677 struct lm90_data *data = dev_get_drvdata(dev);
678 struct i2c_client *client = data->client;
681 if (data->flags & LM90_HAVE_CRIT) {
685 data->temp8[LOCAL_CRIT] = val;
690 data->temp8[REMOTE_CRIT] = val;
695 data->temp_hyst = val;
701 data->temp11[REMOTE_LOW] = val << 8;
703 if (data->flags & LM90_HAVE_REM_LIMIT_EXT) {
707 data->temp11[REMOTE_LOW] |= val;
713 data->temp11[REMOTE_HIGH] = val << 8;
715 if (data->flags & LM90_HAVE_REM_LIMIT_EXT) {
719 data->temp11[REMOTE_HIGH] |= val;
722 if (data->flags & LM90_HAVE_OFFSET) {
727 data->temp11[REMOTE_OFFSET] = val;
730 if (data->flags & LM90_HAVE_EMERGENCY) {
734 data->temp8[LOCAL_EMERG] = val;
739 data->temp8[REMOTE_EMERG] = val;
742 if (data->kind == max6696) {
743 val = lm90_select_remote_channel(data, 1);
750 data->temp8[REMOTE2_CRIT] = val;
755 data->temp8[REMOTE2_EMERG] = val;
760 data->temp11[REMOTE2_LOW] = val << 8;
765 data->temp11[REMOTE2_HIGH] = val << 8;
767 lm90_select_remote_channel(data, 0);
775 struct lm90_data *data = dev_get_drvdata(dev);
776 struct i2c_client *client = data->client;
780 if (!data->valid) {
786 next_update = data->last_updated +
787 msecs_to_jiffies(data->update_interval);
788 if (time_after(jiffies, next_update) || !data->valid) {
789 dev_dbg(&client->dev, "Updating lm90 data.\n");
791 data->valid = false;
796 data->temp8[LOCAL_LOW] = val;
801 data->temp8[LOCAL_HIGH] = val;
803 if (data->reg_local_ext) {
805 data->reg_local_ext);
808 data->temp11[LOCAL_TEMP] = val;
813 data->temp11[LOCAL_TEMP] = val << 8;
819 data->temp11[REMOTE_TEMP] = val;
824 data->alarms = val & ~LM90_STATUS_BUSY;
826 if (data->kind == max6696) {
827 val = lm90_select_remote_channel(data, 1);
834 lm90_select_remote_channel(data, 0);
837 data->temp11[REMOTE2_TEMP] = val;
839 lm90_select_remote_channel(data, 0);
844 data->alarms |= val << 8;
851 if (!(data->config_orig & 0x80) &&
852 !(data->alarms & data->alert_alarms)) {
853 if (data->config & 0x80) {
855 lm90_update_confreg(data, data->config & ~0x80);
859 data->last_updated = jiffies;
860 data->valid = true;
943 static inline int temp_from_u8_adt7461(struct lm90_data *data, u8 val)
945 if (data->flags & LM90_FLAG_ADT7461_EXT)
950 static inline int temp_from_u16_adt7461(struct lm90_data *data, u16 val)
952 if (data->flags & LM90_FLAG_ADT7461_EXT)
957 static u8 temp_to_u8_adt7461(struct lm90_data *data, long val)
959 if (data->flags & LM90_FLAG_ADT7461_EXT) {
973 static u16 temp_to_u16_adt7461(struct lm90_data *data, long val)
975 if (data->flags & LM90_FLAG_ADT7461_EXT) {
1025 static int lm90_get_temp11(struct lm90_data *data, int index)
1027 s16 temp11 = data->temp11[index];
1030 if (data->flags & LM90_HAVE_EXTENDED_TEMP)
1031 temp = temp_from_u16_adt7461(data, temp11);
1032 else if (data->kind == max6646)
1038 if (data->kind == lm99 && index <= 2)
1044 static int lm90_set_temp11(struct lm90_data *data, int index, long val)
1056 struct i2c_client *client = data->client;
1061 if (data->kind == lm99 && index <= 2)
1064 if (data->flags & LM90_HAVE_EXTENDED_TEMP)
1065 data->temp11[index] = temp_to_u16_adt7461(data, val);
1066 else if (data->kind == max6646)
1067 data->temp11[index] = temp_to_u8(val) << 8;
1068 else if (data->flags & LM90_HAVE_REM_LIMIT_EXT)
1069 data->temp11[index] = temp_to_s16(val);
1071 data->temp11[index] = temp_to_s8(val) << 8;
1073 lm90_select_remote_channel(data, index >= 3);
1075 data->temp11[index] >> 8);
1078 if (data->flags & LM90_HAVE_REM_LIMIT_EXT)
1080 data->temp11[index] & 0xff);
1082 lm90_select_remote_channel(data, 0);
1086 static int lm90_get_temp8(struct lm90_data *data, int index)
1088 s8 temp8 = data->temp8[index];
1091 if (data->flags & LM90_HAVE_EXTENDED_TEMP)
1092 temp = temp_from_u8_adt7461(data, temp8);
1093 else if (data->kind == max6646)
1099 if (data->kind == lm99 && index == 3)
1105 static int lm90_set_temp8(struct lm90_data *data, int index, long val)
1117 struct i2c_client *client = data->client;
1121 if (data->kind == lm99 && index == 3)
1124 if (data->flags & LM90_HAVE_EXTENDED_TEMP)
1125 data->temp8[index] = temp_to_u8_adt7461(data, val);
1126 else if (data->kind == max6646)
1127 data->temp8[index] = temp_to_u8(val);
1129 data->temp8[index] = temp_to_s8(val);
1131 lm90_select_remote_channel(data, index >= 6);
1132 err = i2c_smbus_write_byte_data(client, reg[index], data->temp8[index]);
1133 lm90_select_remote_channel(data, 0);
1138 static int lm90_get_temphyst(struct lm90_data *data, int index)
1142 if (data->flags & LM90_HAVE_EXTENDED_TEMP)
1143 temp = temp_from_u8_adt7461(data, data->temp8[index]);
1144 else if (data->kind == max6646)
1145 temp = temp_from_u8(data->temp8[index]);
1147 temp = temp_from_s8(data->temp8[index]);
1150 if (data->kind == lm99 && index == 3)
1153 return temp - temp_from_s8(data->temp_hyst);
1156 static int lm90_set_temphyst(struct lm90_data *data, long val)
1158 struct i2c_client *client = data->client;
1162 if (data->flags & LM90_HAVE_EXTENDED_TEMP)
1163 temp = temp_from_u8_adt7461(data, data->temp8[LOCAL_CRIT]);
1164 else if (data->kind == max6646)
1165 temp = temp_from_u8(data->temp8[LOCAL_CRIT]);
1167 temp = temp_from_s8(data->temp8[LOCAL_CRIT]);
1169 data->temp_hyst = hyst_to_reg(temp - val);
1171 data->temp_hyst);
1204 struct lm90_data *data = dev_get_drvdata(dev);
1207 mutex_lock(&data->update_lock);
1209 mutex_unlock(&data->update_lock);
1215 *val = lm90_get_temp11(data, lm90_temp_index[channel]);
1218 *val = (data->alarms >> lm90_min_alarm_bits[channel]) & 1;
1221 *val = (data->alarms >> lm90_max_alarm_bits[channel]) & 1;
1224 if (data->flags & LM90_HAVE_CRIT_ALRM_SWP)
1225 *val = (data->alarms >> lm90_crit_alarm_bits_swapped[channel]) & 1;
1227 *val = (data->alarms >> lm90_crit_alarm_bits[channel]) & 1;
1230 *val = (data->alarms >> lm90_emergency_alarm_bits[channel]) & 1;
1233 *val = (data->alarms >> lm90_fault_bits[channel]) & 1;
1237 *val = lm90_get_temp8(data,
1240 *val = lm90_get_temp11(data,
1245 *val = lm90_get_temp8(data,
1248 *val = lm90_get_temp11(data,
1252 *val = lm90_get_temp8(data, lm90_temp_crit_index[channel]);
1255 *val = lm90_get_temphyst(data, lm90_temp_crit_index[channel]);
1258 *val = lm90_get_temp8(data, lm90_temp_emerg_index[channel]);
1261 *val = lm90_get_temphyst(data, lm90_temp_emerg_index[channel]);
1264 *val = lm90_get_temp11(data, REMOTE_OFFSET);
1274 struct lm90_data *data = dev_get_drvdata(dev);
1277 mutex_lock(&data->update_lock);
1286 err = lm90_set_temp8(data,
1290 err = lm90_set_temp11(data,
1296 err = lm90_set_temp8(data,
1300 err = lm90_set_temp11(data,
1305 err = lm90_set_temp8(data, lm90_temp_crit_index[channel], val);
1308 err = lm90_set_temphyst(data, val);
1311 err = lm90_set_temp8(data, lm90_temp_emerg_index[channel], val);
1314 err = lm90_set_temp11(data, REMOTE_OFFSET, val);
1321 mutex_unlock(&data->update_lock);
1326 static umode_t lm90_temp_is_visible(const void *data, u32 attr, int channel)
1354 struct lm90_data *data = dev_get_drvdata(dev);
1357 mutex_lock(&data->update_lock);
1359 mutex_unlock(&data->update_lock);
1365 *val = data->update_interval;
1368 *val = data->alarms;
1379 struct lm90_data *data = dev_get_drvdata(dev);
1380 struct i2c_client *client = data->client;
1383 mutex_lock(&data->update_lock);
1391 err = lm90_set_convrate(client, data,
1399 mutex_unlock(&data->update_lock);
1404 static umode_t lm90_chip_is_visible(const void *data, u32 attr, int channel)
1442 static umode_t lm90_is_visible(const void *data, enum hwmon_sensor_types type,
1447 return lm90_chip_is_visible(data, attr, channel);
1449 return lm90_temp_is_visible(data, attr, channel);
1689 struct lm90_data *data = _data;
1690 struct i2c_client *client = data->client;
1693 lm90_write_convrate(data, data->convrate_orig);
1695 data->config_orig);
1698 static int lm90_init_client(struct i2c_client *client, struct lm90_data *data)
1705 data->convrate_orig = convrate;
1713 data->config_orig = config;
1714 data->config = config;
1716 lm90_set_convrate(client, data, 500); /* 500ms; 2Hz conversion rate */
1719 if (data->flags & LM90_HAVE_EXTENDED_TEMP) {
1721 data->flags |= LM90_FLAG_ADT7461_EXT;
1729 if (data->kind == max6680)
1738 if (data->kind == max6654)
1744 if (data->kind == max6696)
1748 lm90_update_confreg(data, config);
1750 return devm_add_action_or_reset(&client->dev, lm90_restore_conf, data);
1755 struct lm90_data *data = i2c_get_clientdata(client);
1762 if (data->kind == max6696) {
1830 struct lm90_data *data;
1847 data = devm_kzalloc(dev, sizeof(struct lm90_data), GFP_KERNEL);
1848 if (!data)
1851 data->client = client;
1852 i2c_set_clientdata(client, data);
1853 mutex_init(&data->update_lock);
1857 data->kind = (enum chips)of_device_get_match_data(&client->dev);
1859 data->kind = i2c_match_id(lm90_id, client)->driver_data;
1860 if (data->kind == adm1032) {
1869 data->alert_alarms = lm90_params[data->kind].alert_alarms;
1872 data->flags = lm90_params[data->kind].flags;
1874 data->chip.ops = &lm90_ops;
1875 data->chip.info = data->info;
1877 data->info[0] = HWMON_CHANNEL_INFO(chip,
1879 data->info[1] = &data->temp_info;
1881 info = &data->temp_info;
1883 info->config = data->channel_config;
1885 data->channel_config[0] = HWMON_T_INPUT | HWMON_T_MIN | HWMON_T_MAX |
1887 data->channel_config[1] = HWMON_T_INPUT | HWMON_T_MIN | HWMON_T_MAX |
1890 if (data->flags & LM90_HAVE_CRIT) {
1891 data->channel_config[0] |= HWMON_T_CRIT | HWMON_T_CRIT_ALARM | HWMON_T_CRIT_HYST;
1892 data->channel_config[1] |= HWMON_T_CRIT | HWMON_T_CRIT_ALARM | HWMON_T_CRIT_HYST;
1895 if (data->flags & LM90_HAVE_OFFSET)
1896 data->channel_config[1] |= HWMON_T_OFFSET;
1898 if (data->flags & LM90_HAVE_EMERGENCY) {
1899 data->channel_config[0] |= HWMON_T_EMERGENCY |
1901 data->channel_config[1] |= HWMON_T_EMERGENCY |
1905 if (data->flags & LM90_HAVE_EMERGENCY_ALARM) {
1906 data->channel_config[0] |= HWMON_T_EMERGENCY_ALARM;
1907 data->channel_config[1] |= HWMON_T_EMERGENCY_ALARM;
1910 if (data->flags & LM90_HAVE_TEMP3) {
1911 data->channel_config[2] = HWMON_T_INPUT |
1920 data->reg_local_ext = lm90_params[data->kind].reg_local_ext;
1923 data->max_convrate = lm90_params[data->kind].max_convrate;
1926 err = lm90_init_client(client, data);
1946 data, &data->chip,
1980 struct lm90_data *data = i2c_get_clientdata(client);
1982 if ((data->flags & LM90_HAVE_BROKEN_ALERT) &&
1983 (alarms & data->alert_alarms)) {
1985 lm90_update_confreg(data, data->config | 0x80);