Lines Matching +full:sens +full:-

1 // SPDX-License-Identifier: GPL-2.0-only
54 struct wf_sensor sens; member
56 #define to_smu_ads(c) container_of(c, struct smu_ad_sensor, sens)
81 return -EIO; in smu_read_adc()
94 rc = smu_read_adc(ads->reg, &val); in smu_cputemp_get()
102 scaled = (s64)(((u64)val) * (u64)cpudiode->m_value); in smu_cputemp_get()
104 scaled += ((s64)cpudiode->b_value) << 9; in smu_cputemp_get()
116 rc = smu_read_adc(ads->reg, &val); in smu_cpuamp_get()
124 scaled = (s32)(val * (u32)cpuvcp->curr_scale); in smu_cpuamp_get()
125 scaled += (s32)cpuvcp->curr_offset; in smu_cpuamp_get()
137 rc = smu_read_adc(ads->reg, &val); in smu_cpuvolt_get()
145 scaled = (s32)(val * (u32)cpuvcp->volt_scale); in smu_cpuvolt_get()
146 scaled += (s32)cpuvcp->volt_offset; in smu_cpuvolt_get()
158 rc = smu_read_adc(ads->reg, &val); in smu_slotspow_get()
166 scaled = (s32)(val * (u32)slotspow->pow_scale); in smu_slotspow_get()
167 scaled += (s32)slotspow->pow_offset; in smu_slotspow_get()
210 * properties, while Darwin uses the sensor-id's. in smu_ads_create()
216 if (of_node_is_type(node, "temp-sensor") && in smu_ads_create()
217 !strcmp(l, "CPU T-Diode")) { in smu_ads_create()
218 ads->sens.ops = &smu_cputemp_ops; in smu_ads_create()
219 ads->sens.name = "cpu-temp"; in smu_ads_create()
225 } else if (of_node_is_type(node, "current-sensor") && in smu_ads_create()
227 ads->sens.ops = &smu_cpuamp_ops; in smu_ads_create()
228 ads->sens.name = "cpu-current"; in smu_ads_create()
234 } else if (of_node_is_type(node, "voltage-sensor") && in smu_ads_create()
236 ads->sens.ops = &smu_cpuvolt_ops; in smu_ads_create()
237 ads->sens.name = "cpu-voltage"; in smu_ads_create()
243 } else if (of_node_is_type(node, "power-sensor") && in smu_ads_create()
245 ads->sens.ops = &smu_slotspow_ops; in smu_ads_create()
246 ads->sens.name = "slots-power"; in smu_ads_create()
258 ads->reg = *v; in smu_ads_create()
260 if (wf_register_sensor(&ads->sens)) in smu_ads_create()
278 struct wf_sensor sens; member
280 #define to_smu_cpu_power(c) container_of(c, struct smu_cpu_power_sensor, sens)
288 if (pow->volts) in smu_cpu_power_release()
289 wf_put_sensor(pow->volts); in smu_cpu_power_release()
290 if (pow->amps) in smu_cpu_power_release()
291 wf_put_sensor(pow->amps); in smu_cpu_power_release()
302 rc = pow->amps->ops->get_value(pow->amps, &amps); in smu_cpu_power_get()
306 if (pow->fake_volts) { in smu_cpu_power_get()
307 *value = amps * 12 - 0x30000; in smu_cpu_power_get()
311 rc = pow->volts->ops->get_value(pow->volts, &volts); in smu_cpu_power_get()
316 if (!pow->quadratic) { in smu_cpu_power_get()
321 tmpa = ((u64)cpuvcp->power_quads[0]) * tmps; in smu_cpu_power_get()
322 tmpb = ((u64)cpuvcp->power_quads[1]) * ((u64)power); in smu_cpu_power_get()
323 *value = (tmpa >> 28) + (tmpb >> 28) + (cpuvcp->power_quads[2] >> 12); in smu_cpu_power_get()
343 pow->sens.ops = &smu_cpu_power_ops; in smu_cpu_power_create()
344 pow->sens.name = "cpu-power"; in smu_cpu_power_create()
347 pow->volts = volts; in smu_cpu_power_create()
349 pow->amps = amps; in smu_cpu_power_create()
355 pow->fake_volts = 1; in smu_cpu_power_create()
357 pow->fake_volts = 0; in smu_cpu_power_create()
367 pow->quadratic = 1; in smu_cpu_power_create()
370 pow->quadratic = 0; in smu_cpu_power_create()
372 if (wf_register_sensor(&pow->sens)) in smu_cpu_power_create()
389 cpuvcp_version = hdr->version; in smu_fetch_param_partitions()
414 return -ENODEV; in smu_sensors_init()
421 return -ENODEV; in smu_sensors_init()
438 list_add(&ads->link, &smu_ads); in smu_sensors_init()
440 if (!strcmp(ads->sens.name, "cpu-voltage")) in smu_sensors_init()
442 else if (!strcmp(ads->sens.name, "cpu-current")) in smu_sensors_init()
450 smu_cpu_power = smu_cpu_power_create(&volt_sensor->sens, in smu_sensors_init()
451 &curr_sensor->sens); in smu_sensors_init()
462 wf_unregister_sensor(&smu_cpu_power->sens); in smu_sensors_exit()
467 list_del(&ads->link); in smu_sensors_exit()
468 wf_unregister_sensor(&ads->sens); in smu_sensors_exit()