rk3588 temperature

This commit is contained in:
Robin Appelman 2024-05-09 14:45:11 +02:00
commit 318af5a187
2 changed files with 14 additions and 4 deletions

View file

@ -70,7 +70,8 @@ impl Device {
pub fn sensors(&self) -> impl Iterator<Item = io::Result<Sensor>> {
// determine early to avoid borrowing &self in iterator
let is_cpu_thermal = self.name == "cpu_thermal";
let is_cpu_thermal = self.name == "cpu_thermal" || self.name == "soc_thermal";
let is_gpu_thermal = self.name == "gpu_thermal";
let sensors = read_dir(&self.base_path).into_iter().flatten();
sensors
@ -91,13 +92,19 @@ impl Device {
let input_name = path.file_name().unwrap().to_str().unwrap();
// rpi cpu_thermal doesn't have labels, so we hardcode one
// rpi/rk3588 cpu_thermal doesn't have labels, so we hardcode one
if is_cpu_thermal && input_name == "temp1_input" {
return Ok(Sensor {
input_path: path,
name: "Tdie".into(),
});
}
if is_gpu_thermal && input_name == "temp1_input" {
return Ok(Sensor {
input_path: path,
name: "edge".into(),
});
}
let base_name = input_name.trim_end_matches("_input");

View file

@ -17,7 +17,10 @@ impl TemperatureSource {
let mut gpu_sensors = Vec::new();
for device in Device::list().flatten() {
if device.name() == "k10temp" || device.name() == "coretemp" {
if device.name() == "k10temp"
|| device.name() == "coretemp"
|| device.name() == "soc_thermal"
{
for sensor in device.sensors().flatten() {
if sensor.name() == "Tdie" || sensor.name().starts_with("Core ") {
cpu_sensors.push(sensor.reader()?);
@ -25,7 +28,7 @@ impl TemperatureSource {
}
}
if device.name() == "amdgpu" {
if device.name() == "amdgpu" || device.name() == "gpu_thermal" {
for sensor in device.sensors().flatten() {
if sensor.name() == "edge" {
gpu_sensors.push(sensor.reader()?);