Source
133
133
1 << channel);
134
134
135
135
}
136
136
137
137
static int da9055_disable_auto_mode(struct da9055 *da9055, int channel)
138
138
{
139
139
140
140
return da9055_reg_update(da9055, DA9055_REG_ADC_CONT, 1 << channel, 0);
141
141
}
142
142
143
-
static ssize_t da9055_read_auto_ch(struct device *dev,
144
-
struct device_attribute *devattr, char *buf)
143
+
static ssize_t da9055_auto_ch_show(struct device *dev,
144
+
struct device_attribute *devattr,
145
+
char *buf)
145
146
{
146
147
struct da9055_hwmon *hwmon = dev_get_drvdata(dev);
147
148
int ret, adc;
148
149
int channel = to_sensor_dev_attr(devattr)->index;
149
150
150
151
mutex_lock(&hwmon->hwmon_lock);
151
152
152
153
ret = da9055_enable_auto_mode(hwmon->da9055, channel);
153
154
if (ret < 0)
154
155
goto hwmon_err;
169
170
170
171
return sprintf(buf, "%d\n", volt_reg_to_mv(adc, channel));
171
172
172
173
hwmon_err_release:
173
174
da9055_disable_auto_mode(hwmon->da9055, channel);
174
175
hwmon_err:
175
176
mutex_unlock(&hwmon->hwmon_lock);
176
177
return ret;
177
178
}
178
179
179
-
static ssize_t da9055_read_tjunc(struct device *dev,
180
+
static ssize_t da9055_tjunc_show(struct device *dev,
180
181
struct device_attribute *devattr, char *buf)
181
182
{
182
183
struct da9055_hwmon *hwmon = dev_get_drvdata(dev);
183
184
int tjunc;
184
185
int toffset;
185
186
186
187
tjunc = da9055_adc_manual_read(hwmon, DA9055_ADC_TJUNC);
187
188
if (tjunc < 0)
188
189
return tjunc;
189
190
192
193
return toffset;
193
194
194
195
/*
195
196
* Degrees celsius = -0.4084 * (ADC_RES - T_OFFSET) + 307.6332
196
197
* T_OFFSET is a trim value used to improve accuracy of the result
197
198
*/
198
199
return sprintf(buf, "%d\n", DIV_ROUND_CLOSEST(-4084 * (tjunc - toffset)
199
200
+ 3076332, 10000));
200
201
}
201
202
202
-
static ssize_t show_label(struct device *dev,
203
+
static ssize_t label_show(struct device *dev,
203
204
struct device_attribute *devattr, char *buf)
204
205
{
205
206
return sprintf(buf, "%s\n",
206
207
input_names[to_sensor_dev_attr(devattr)->index]);
207
208
}
208
209
209
-
static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, da9055_read_auto_ch, NULL,
210
-
DA9055_ADC_VSYS);
211
-
static SENSOR_DEVICE_ATTR(in0_label, S_IRUGO, show_label, NULL,
212
-
DA9055_ADC_VSYS);
213
-
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, da9055_read_auto_ch, NULL,
214
-
DA9055_ADC_ADCIN1);
215
-
static SENSOR_DEVICE_ATTR(in1_label, S_IRUGO, show_label, NULL,
216
-
DA9055_ADC_ADCIN1);
217
-
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, da9055_read_auto_ch, NULL,
218
-
DA9055_ADC_ADCIN2);
219
-
static SENSOR_DEVICE_ATTR(in2_label, S_IRUGO, show_label, NULL,
220
-
DA9055_ADC_ADCIN2);
221
-
static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, da9055_read_auto_ch, NULL,
222
-
DA9055_ADC_ADCIN3);
223
-
static SENSOR_DEVICE_ATTR(in3_label, S_IRUGO, show_label, NULL,
224
-
DA9055_ADC_ADCIN3);
225
-
226
-
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, da9055_read_tjunc, NULL,
227
-
DA9055_ADC_TJUNC);
228
-
static SENSOR_DEVICE_ATTR(temp1_label, S_IRUGO, show_label, NULL,
229
-
DA9055_ADC_TJUNC);
210
+
static SENSOR_DEVICE_ATTR_RO(in0_input, da9055_auto_ch, DA9055_ADC_VSYS);
211
+
static SENSOR_DEVICE_ATTR_RO(in0_label, label, DA9055_ADC_VSYS);
212
+
static SENSOR_DEVICE_ATTR_RO(in1_input, da9055_auto_ch, DA9055_ADC_ADCIN1);
213
+
static SENSOR_DEVICE_ATTR_RO(in1_label, label, DA9055_ADC_ADCIN1);
214
+
static SENSOR_DEVICE_ATTR_RO(in2_input, da9055_auto_ch, DA9055_ADC_ADCIN2);
215
+
static SENSOR_DEVICE_ATTR_RO(in2_label, label, DA9055_ADC_ADCIN2);
216
+
static SENSOR_DEVICE_ATTR_RO(in3_input, da9055_auto_ch, DA9055_ADC_ADCIN3);
217
+
static SENSOR_DEVICE_ATTR_RO(in3_label, label, DA9055_ADC_ADCIN3);
218
+
219
+
static SENSOR_DEVICE_ATTR_RO(temp1_input, da9055_tjunc, DA9055_ADC_TJUNC);
220
+
static SENSOR_DEVICE_ATTR_RO(temp1_label, label, DA9055_ADC_TJUNC);
230
221
231
222
static struct attribute *da9055_attrs[] = {
232
223
&sensor_dev_attr_in0_input.dev_attr.attr,
233
224
&sensor_dev_attr_in0_label.dev_attr.attr,
234
225
&sensor_dev_attr_in1_input.dev_attr.attr,
235
226
&sensor_dev_attr_in1_label.dev_attr.attr,
236
227
&sensor_dev_attr_in2_input.dev_attr.attr,
237
228
&sensor_dev_attr_in2_label.dev_attr.attr,
238
229
&sensor_dev_attr_in3_input.dev_attr.attr,
239
230
&sensor_dev_attr_in3_label.dev_attr.attr,