Lines Matching +full:surface +full:- +full:sam
1 // SPDX-License-Identifier: GPL-2.0+
3 * Thermal sensor subsystem driver for Surface System Aggregator Module (SSAM).
5 * Copyright (C) 2022-2023 Maximilian Luz <[email protected]>
17 /* -- SAM interface. -------------------------------------------------------- */
20 * Available sensors are indicated by a 16-bit bitfield, where a 1 marks the
28 * the maximum zero-padded space observed in the returned buffer.
73 status = __ssam_tmp_get_temperature(sdev->ctrl, sdev->uid.target, iid, &temp_le); in ssam_tmp_get_temperature()
78 *temperature = (le16_to_cpu(temp_le) - 2731) * 100L; in ssam_tmp_get_temperature()
87 status = __ssam_tmp_get_name(sdev->ctrl, sdev->uid.target, iid, &name_rsp); in ssam_tmp_get_name()
93 * null-terminated or someone changed something in the struct in ssam_tmp_get_name()
97 * null-terminated, we might have received garbage (as opposed to just in ssam_tmp_get_name()
102 dev_err(&sdev->dev, "received non-null-terminated sensor name string\n"); in ssam_tmp_get_name()
109 /* -- Driver.---------------------------------------------------------------- */
123 if (!(ssam_temp->sensors & BIT(channel))) in ssam_temp_hwmon_is_visible()
135 return ssam_tmp_get_temperature(ssam_temp->sdev, channel + 1, value); in ssam_temp_hwmon_read()
144 *str = ssam_temp->names[channel]; in ssam_temp_hwmon_read_string()
194 ssam_temp = devm_kzalloc(&sdev->dev, sizeof(*ssam_temp), GFP_KERNEL); in ssam_temp_probe()
196 return -ENOMEM; in ssam_temp_probe()
198 ssam_temp->sdev = sdev; in ssam_temp_probe()
199 ssam_temp->sensors = sensors; in ssam_temp_probe()
206 status = ssam_tmp_get_name(sdev, channel + 1, ssam_temp->names[channel], in ssam_temp_probe()
212 hwmon_dev = devm_hwmon_device_register_with_info(&sdev->dev, "surface_thermal", ssam_temp, in ssam_temp_probe()
218 { SSAM_SDEV(TMP, SAM, 0x00, 0x02) },
234 MODULE_DESCRIPTION("Thermal sensor subsystem driver for Surface System Aggregator Module");