#include #include #include #include #if KERNEL_VERSION(3, 15, 0) >= LINUX_VERSION_CODE #define TEMPERATURE_DEVICE_NAME \ "/sys/devices/platform/coretemp.0/temp2_input" #else #define TEMPERATURE_DEVICE_NAME \ "/sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input" #endif #define TEMPERATURE_SENSOR_INDEX 0u static int cpu_temperature_callback(void *handle, void *context, int *value) { char buf[128]; long temperature; int err; if (WARN_ON(!value)) return -EINVAL; err = avm_read_from_file(TEMPERATURE_DEVICE_NAME, buf, sizeof(buf)); if (err <= 0) return err; err = kstrtol(buf, 10, &temperature); if (err) return err; *value = temperature / 100; return 0; } static int __init cpu_temperature_init(void) { if (!TemperaturSensorRegister("CPU", cpu_temperature_callback, TEMPERATURE_SENSOR_INDEX)) { pr_err("Could not register CPU Temperature sensor to AVM Power driver.\n"); } return 0; } arch_initcall(cpu_temperature_init);