Lines Matching +full:input +full:- +full:value

1 // SPDX-License-Identifier: GPL-2.0
23 char input[20]; member
57 static void scpi_scale_reading(u64 *value, struct sensor_data *sensor) in scpi_scale_reading() argument
59 if (scpi_scale[sensor->info.class] != sensor->scale) { in scpi_scale_reading()
60 *value *= scpi_scale[sensor->info.class]; in scpi_scale_reading()
61 do_div(*value, sensor->scale); in scpi_scale_reading()
68 struct scpi_sensors *scpi_sensors = zone->scpi_sensors; in scpi_read_temp()
69 struct scpi_ops *scpi_ops = scpi_sensors->scpi_ops; in scpi_read_temp()
70 struct sensor_data *sensor = &scpi_sensors->data[zone->sensor_id]; in scpi_read_temp()
71 u64 value; in scpi_read_temp() local
74 ret = scpi_ops->sensor_get_value(sensor->info.sensor_id, &value); in scpi_read_temp()
78 scpi_scale_reading(&value, sensor); in scpi_read_temp()
80 *temp = value; in scpi_read_temp()
89 struct scpi_ops *scpi_ops = scpi_sensors->scpi_ops; in scpi_show_sensor()
91 u64 value; in scpi_show_sensor() local
96 ret = scpi_ops->sensor_get_value(sensor->info.sensor_id, &value); in scpi_show_sensor()
100 scpi_scale_reading(&value, sensor); in scpi_show_sensor()
108 if (sensor->info.class == TEMPERATURE) in scpi_show_sensor()
109 return sprintf(buf, "%lld\n", (s64)value); in scpi_show_sensor()
111 return sprintf(buf, "%llu\n", value); in scpi_show_sensor()
121 return sprintf(buf, "%s\n", sensor->info.name); in scpi_show_label()
129 {.compatible = "arm,scpi-sensors", .data = &scpi_scale},
130 {.compatible = "amlogic,meson-gxbb-scpi-sensors", .data = &gxbb_scpi_scale},
142 struct device *hwdev, *dev = &pdev->dev; in scpi_hwmon_probe()
149 return -EPROBE_DEFER; in scpi_hwmon_probe()
151 ret = scpi_ops->sensor_get_capability(&nr_sensors); in scpi_hwmon_probe()
156 return -ENODEV; in scpi_hwmon_probe()
160 return -ENOMEM; in scpi_hwmon_probe()
162 scpi_sensors->data = devm_kcalloc(dev, nr_sensors, in scpi_hwmon_probe()
163 sizeof(*scpi_sensors->data), GFP_KERNEL); in scpi_hwmon_probe()
164 if (!scpi_sensors->data) in scpi_hwmon_probe()
165 return -ENOMEM; in scpi_hwmon_probe()
167 scpi_sensors->attrs = devm_kcalloc(dev, (nr_sensors * 2) + 1, in scpi_hwmon_probe()
168 sizeof(*scpi_sensors->attrs), GFP_KERNEL); in scpi_hwmon_probe()
169 if (!scpi_sensors->attrs) in scpi_hwmon_probe()
170 return -ENOMEM; in scpi_hwmon_probe()
172 scpi_sensors->scpi_ops = scpi_ops; in scpi_hwmon_probe()
174 of_id = of_match_device(scpi_of_match, &pdev->dev); in scpi_hwmon_probe()
176 dev_err(&pdev->dev, "Unable to initialize scpi-hwmon data\n"); in scpi_hwmon_probe()
177 return -ENODEV; in scpi_hwmon_probe()
179 scale = of_id->data; in scpi_hwmon_probe()
182 struct sensor_data *sensor = &scpi_sensors->data[idx]; in scpi_hwmon_probe()
184 ret = scpi_ops->sensor_get_info(i, &sensor->info); in scpi_hwmon_probe()
188 switch (sensor->info.class) { in scpi_hwmon_probe()
190 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
192 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
197 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
199 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
204 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
206 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
211 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
213 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
218 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
220 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
228 sensor->scale = scale[sensor->info.class]; in scpi_hwmon_probe()
230 sensor->dev_attr_input.attr.mode = 0444; in scpi_hwmon_probe()
231 sensor->dev_attr_input.show = scpi_show_sensor; in scpi_hwmon_probe()
232 sensor->dev_attr_input.attr.name = sensor->input; in scpi_hwmon_probe()
234 sensor->dev_attr_label.attr.mode = 0444; in scpi_hwmon_probe()
235 sensor->dev_attr_label.show = scpi_show_label; in scpi_hwmon_probe()
236 sensor->dev_attr_label.attr.name = sensor->label; in scpi_hwmon_probe()
238 scpi_sensors->attrs[idx << 1] = &sensor->dev_attr_input.attr; in scpi_hwmon_probe()
239 scpi_sensors->attrs[(idx << 1) + 1] = &sensor->dev_attr_label.attr; in scpi_hwmon_probe()
241 sysfs_attr_init(scpi_sensors->attrs[idx << 1]); in scpi_hwmon_probe()
242 sysfs_attr_init(scpi_sensors->attrs[(idx << 1) + 1]); in scpi_hwmon_probe()
246 scpi_sensors->group.attrs = scpi_sensors->attrs; in scpi_hwmon_probe()
247 scpi_sensors->groups[0] = &scpi_sensors->group; in scpi_hwmon_probe()
252 "scpi_sensors", scpi_sensors, scpi_sensors->groups); in scpi_hwmon_probe()
265 INIT_LIST_HEAD(&scpi_sensors->thermal_zones); in scpi_hwmon_probe()
267 struct sensor_data *sensor = &scpi_sensors->data[i]; in scpi_hwmon_probe()
271 if (sensor->info.class != TEMPERATURE) in scpi_hwmon_probe()
276 return -ENOMEM; in scpi_hwmon_probe()
278 zone->sensor_id = i; in scpi_hwmon_probe()
279 zone->scpi_sensors = scpi_sensors; in scpi_hwmon_probe()
281 sensor->info.sensor_id, in scpi_hwmon_probe()
299 .name = "scpi-hwmon",