mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
platform/x86: alienware-wmi-wmax: Add appropriate labels to fans
Add known fan type IDs and match them to an appropriate label in awcc_hwmon_read_string(). Additionally, add the AWCC_TEMP_SENSOR_FRONT type, which was inferred from it's related fan type in supported systems. Signed-off-by: Kurt Borja <kuurtb@gmail.com> Reviewed-by: Armin Wolf <W_Armin@gmx.de> Link: https://lore.kernel.org/r/20250528-awcc-labels-v1-1-6aa39d8e4c3d@gmail.com Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
parent
19272b37aa
commit
844d8e4c7f
|
|
@ -273,9 +273,29 @@ enum AWCC_SPECIAL_THERMAL_CODES {
|
|||
|
||||
enum AWCC_TEMP_SENSOR_TYPES {
|
||||
AWCC_TEMP_SENSOR_CPU = 0x01,
|
||||
AWCC_TEMP_SENSOR_FRONT = 0x03,
|
||||
AWCC_TEMP_SENSOR_GPU = 0x06,
|
||||
};
|
||||
|
||||
enum AWCC_FAN_TYPES {
|
||||
AWCC_FAN_CPU_1 = 0x32,
|
||||
AWCC_FAN_GPU_1 = 0x33,
|
||||
AWCC_FAN_PCI = 0x34,
|
||||
AWCC_FAN_MID = 0x35,
|
||||
AWCC_FAN_TOP_1 = 0x36,
|
||||
AWCC_FAN_SIDE = 0x37,
|
||||
AWCC_FAN_U2_1 = 0x38,
|
||||
AWCC_FAN_U2_2 = 0x39,
|
||||
AWCC_FAN_FRONT_1 = 0x3A,
|
||||
AWCC_FAN_CPU_2 = 0x3B,
|
||||
AWCC_FAN_GPU_2 = 0x3C,
|
||||
AWCC_FAN_TOP_2 = 0x3D,
|
||||
AWCC_FAN_TOP_3 = 0x3E,
|
||||
AWCC_FAN_FRONT_2 = 0x3F,
|
||||
AWCC_FAN_BOTTOM_1 = 0x40,
|
||||
AWCC_FAN_BOTTOM_2 = 0x41,
|
||||
};
|
||||
|
||||
enum awcc_thermal_profile {
|
||||
AWCC_PROFILE_USTT_BALANCED,
|
||||
AWCC_PROFILE_USTT_BALANCED_PERFORMANCE,
|
||||
|
|
@ -314,7 +334,6 @@ struct wmax_u32_args {
|
|||
|
||||
struct awcc_fan_data {
|
||||
unsigned long auto_channels_temp;
|
||||
const char *label;
|
||||
u32 min_rpm;
|
||||
u32 max_rpm;
|
||||
u8 suspend_cache;
|
||||
|
|
@ -896,6 +915,9 @@ static int awcc_hwmon_read_string(struct device *dev, enum hwmon_sensor_types ty
|
|||
case AWCC_TEMP_SENSOR_CPU:
|
||||
*str = "CPU";
|
||||
break;
|
||||
case AWCC_TEMP_SENSOR_FRONT:
|
||||
*str = "Front";
|
||||
break;
|
||||
case AWCC_TEMP_SENSOR_GPU:
|
||||
*str = "GPU";
|
||||
break;
|
||||
|
|
@ -906,7 +928,46 @@ static int awcc_hwmon_read_string(struct device *dev, enum hwmon_sensor_types ty
|
|||
|
||||
break;
|
||||
case hwmon_fan:
|
||||
*str = priv->fan_data[channel]->label;
|
||||
switch (priv->fan_data[channel]->id) {
|
||||
case AWCC_FAN_CPU_1:
|
||||
case AWCC_FAN_CPU_2:
|
||||
*str = "CPU Fan";
|
||||
break;
|
||||
case AWCC_FAN_GPU_1:
|
||||
case AWCC_FAN_GPU_2:
|
||||
*str = "GPU Fan";
|
||||
break;
|
||||
case AWCC_FAN_PCI:
|
||||
*str = "PCI Fan";
|
||||
break;
|
||||
case AWCC_FAN_MID:
|
||||
*str = "Mid Fan";
|
||||
break;
|
||||
case AWCC_FAN_TOP_1:
|
||||
case AWCC_FAN_TOP_2:
|
||||
case AWCC_FAN_TOP_3:
|
||||
*str = "Top Fan";
|
||||
break;
|
||||
case AWCC_FAN_SIDE:
|
||||
*str = "Side Fan";
|
||||
break;
|
||||
case AWCC_FAN_U2_1:
|
||||
case AWCC_FAN_U2_2:
|
||||
*str = "U.2 Fan";
|
||||
break;
|
||||
case AWCC_FAN_FRONT_1:
|
||||
case AWCC_FAN_FRONT_2:
|
||||
*str = "Front Fan";
|
||||
break;
|
||||
case AWCC_FAN_BOTTOM_1:
|
||||
case AWCC_FAN_BOTTOM_2:
|
||||
*str = "Bottom Fan";
|
||||
break;
|
||||
default:
|
||||
*str = "Unknown Fan";
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
|
|
@ -1051,40 +1112,6 @@ static int awcc_hwmon_temps_init(struct wmi_device *wdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static char *awcc_get_fan_label(unsigned long *fan_temps)
|
||||
{
|
||||
unsigned int temp_count = bitmap_weight(fan_temps, AWCC_ID_BITMAP_SIZE);
|
||||
char *label;
|
||||
u8 temp_id;
|
||||
|
||||
switch (temp_count) {
|
||||
case 0:
|
||||
label = "Independent Fan";
|
||||
break;
|
||||
case 1:
|
||||
temp_id = find_first_bit(fan_temps, AWCC_ID_BITMAP_SIZE);
|
||||
|
||||
switch (temp_id) {
|
||||
case AWCC_TEMP_SENSOR_CPU:
|
||||
label = "Processor Fan";
|
||||
break;
|
||||
case AWCC_TEMP_SENSOR_GPU:
|
||||
label = "Video Fan";
|
||||
break;
|
||||
default:
|
||||
label = "Unknown Fan";
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
label = "Shared Fan";
|
||||
break;
|
||||
}
|
||||
|
||||
return label;
|
||||
}
|
||||
|
||||
static int awcc_hwmon_fans_init(struct wmi_device *wdev)
|
||||
{
|
||||
struct awcc_priv *priv = dev_get_drvdata(&wdev->dev);
|
||||
|
|
@ -1138,7 +1165,6 @@ static int awcc_hwmon_fans_init(struct wmi_device *wdev)
|
|||
fan_data->id = id;
|
||||
fan_data->min_rpm = min_rpm;
|
||||
fan_data->max_rpm = max_rpm;
|
||||
fan_data->label = awcc_get_fan_label(fan_temps);
|
||||
bitmap_gather(gather, fan_temps, priv->temp_sensors, AWCC_ID_BITMAP_SIZE);
|
||||
bitmap_copy(&fan_data->auto_channels_temp, gather, BITS_PER_LONG);
|
||||
priv->fan_data[i] = fan_data;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user