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()
102 return sprintf(buf, "%llu\n", value); in scpi_show_sensor()
112 return sprintf(buf, "%s\n", sensor->info.name); in scpi_show_label()
120 {.compatible = "arm,scpi-sensors", .data = &scpi_scale},
121 {.compatible = "amlogic,meson-gxbb-scpi-sensors", .data = &gxbb_scpi_scale},
133 struct device *hwdev, *dev = &pdev->dev; in scpi_hwmon_probe()
140 return -EPROBE_DEFER; in scpi_hwmon_probe()
142 ret = scpi_ops->sensor_get_capability(&nr_sensors); in scpi_hwmon_probe()
147 return -ENODEV; in scpi_hwmon_probe()
151 return -ENOMEM; in scpi_hwmon_probe()
153 scpi_sensors->data = devm_kcalloc(dev, nr_sensors, in scpi_hwmon_probe()
154 sizeof(*scpi_sensors->data), GFP_KERNEL); in scpi_hwmon_probe()
155 if (!scpi_sensors->data) in scpi_hwmon_probe()
156 return -ENOMEM; in scpi_hwmon_probe()
158 scpi_sensors->attrs = devm_kcalloc(dev, (nr_sensors * 2) + 1, in scpi_hwmon_probe()
159 sizeof(*scpi_sensors->attrs), GFP_KERNEL); in scpi_hwmon_probe()
160 if (!scpi_sensors->attrs) in scpi_hwmon_probe()
161 return -ENOMEM; in scpi_hwmon_probe()
163 scpi_sensors->scpi_ops = scpi_ops; in scpi_hwmon_probe()
165 of_id = of_match_device(scpi_of_match, &pdev->dev); in scpi_hwmon_probe()
167 dev_err(&pdev->dev, "Unable to initialize scpi-hwmon data\n"); in scpi_hwmon_probe()
168 return -ENODEV; in scpi_hwmon_probe()
170 scale = of_id->data; in scpi_hwmon_probe()
173 struct sensor_data *sensor = &scpi_sensors->data[idx]; in scpi_hwmon_probe()
175 ret = scpi_ops->sensor_get_info(i, &sensor->info); in scpi_hwmon_probe()
179 switch (sensor->info.class) { in scpi_hwmon_probe()
181 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
183 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
188 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
190 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
195 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
197 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
202 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
204 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
209 snprintf(sensor->input, sizeof(sensor->input), in scpi_hwmon_probe()
211 snprintf(sensor->label, sizeof(sensor->input), in scpi_hwmon_probe()
219 sensor->scale = scale[sensor->info.class]; in scpi_hwmon_probe()
221 sensor->dev_attr_input.attr.mode = 0444; in scpi_hwmon_probe()
222 sensor->dev_attr_input.show = scpi_show_sensor; in scpi_hwmon_probe()
223 sensor->dev_attr_input.attr.name = sensor->input; in scpi_hwmon_probe()
225 sensor->dev_attr_label.attr.mode = 0444; in scpi_hwmon_probe()
226 sensor->dev_attr_label.show = scpi_show_label; in scpi_hwmon_probe()
227 sensor->dev_attr_label.attr.name = sensor->label; in scpi_hwmon_probe()
229 scpi_sensors->attrs[idx << 1] = &sensor->dev_attr_input.attr; in scpi_hwmon_probe()
230 scpi_sensors->attrs[(idx << 1) + 1] = &sensor->dev_attr_label.attr; in scpi_hwmon_probe()
232 sysfs_attr_init(scpi_sensors->attrs[idx << 1]); in scpi_hwmon_probe()
233 sysfs_attr_init(scpi_sensors->attrs[(idx << 1) + 1]); in scpi_hwmon_probe()
237 scpi_sensors->group.attrs = scpi_sensors->attrs; in scpi_hwmon_probe()
238 scpi_sensors->groups[0] = &scpi_sensors->group; in scpi_hwmon_probe()
243 "scpi_sensors", scpi_sensors, scpi_sensors->groups); in scpi_hwmon_probe()
256 INIT_LIST_HEAD(&scpi_sensors->thermal_zones); in scpi_hwmon_probe()
258 struct sensor_data *sensor = &scpi_sensors->data[i]; in scpi_hwmon_probe()
262 if (sensor->info.class != TEMPERATURE) in scpi_hwmon_probe()
267 return -ENOMEM; in scpi_hwmon_probe()
269 zone->sensor_id = i; in scpi_hwmon_probe()
270 zone->scpi_sensors = scpi_sensors; in scpi_hwmon_probe()
272 sensor->info.sensor_id, in scpi_hwmon_probe()
290 .name = "scpi-hwmon",