static ssize_t show_fault(struct device *dev, struct device_attribute *devattr, char *buf) { int index = to_sensor_dev_attr(devattr)->index; struct tmp421_data *data = tmp421_update_device(dev); if (data->temp[index] & 0x01) return sprintf(buf, "1\n"); else return sprintf(buf, "0\n"); }
static ssize_t show_fault(struct device *dev, struct device_attribute *devattr, char *buf) { int index = to_sensor_dev_attr(devattr)->index; struct tmp421_data *data = tmp421_update_device(dev); /* * The OPEN bit signals a fault. This is bit 0 of the temperature * register (low byte). */ if (data->temp[index] & 0x01) return sprintf(buf, "1\n"); else return sprintf(buf, "0\n"); }
static ssize_t show_temp_value(struct device *dev, struct device_attribute *devattr, char *buf) { int index = to_sensor_dev_attr(devattr)->index; struct tmp421_data *data = tmp421_update_device(dev); int temp; mutex_lock(&data->update_lock); if (data->config & TMP421_CONFIG_RANGE) temp = temp_from_u16(data->temp[index]); else temp = temp_from_s16(data->temp[index]); mutex_unlock(&data->update_lock); return sprintf(buf, "%d\n", temp); }
static int tmp421_read(struct device *dev, enum hwmon_sensor_types type, u32 attr, int channel, long *val) { struct tmp421_data *tmp421 = tmp421_update_device(dev); switch (attr) { case hwmon_temp_input: if (tmp421->config & TMP421_CONFIG_RANGE) *val = temp_from_u16(tmp421->temp[channel]); else *val = temp_from_s16(tmp421->temp[channel]); return 0; case hwmon_temp_fault: /* * The OPEN bit signals a fault. This is bit 0 of the temperature * register (low byte). */ *val = tmp421->temp[channel] & 0x01; return 0; default: return -EOPNOTSUPP; } }