Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

platform/x86: alienware-wmi-wmax: Rename thermal related symbols

The "thermal" features of the WMAX WMI device are only present on the
host device if the ACPI _UID is "AWCC". Replace WMAX prefixes with
"AWCC" to reflect this relationship.

Thermal profiles with WMAX_PROFILE_BASIC prefix are also renamed to
WMAX_PROFILE_LEGACY because they are only supported in older versions
of this WMI device.

Finally, shorten enum defines for AWCC operations from WMAX_OPERATION_*
to AWCC_OP_*.

Reviewed-by: Armin Wolf <W_Armin@gmx.de>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Kurt Borja <kuurtb@gmail.com>
Link: https://lore.kernel.org/r/20250329-hwm-v7-1-a14ea39d8a94@gmail.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

authored by

Kurt Borja and committed by
Ilpo Järvinen
8a1a0fb5 70081121

+87 -86
+87 -86
drivers/platform/x86/dell/alienware-wmi-wmax.c
··· 24 24 #define WMAX_METHOD_DEEP_SLEEP_STATUS 0x0C 25 25 #define WMAX_METHOD_BRIGHTNESS 0x3 26 26 #define WMAX_METHOD_ZONE_CONTROL 0x4 27 - #define WMAX_METHOD_THERMAL_INFORMATION 0x14 28 - #define WMAX_METHOD_THERMAL_CONTROL 0x15 29 - #define WMAX_METHOD_GAME_SHIFT_STATUS 0x25 30 27 31 - #define WMAX_THERMAL_MODE_GMODE 0xAB 28 + #define AWCC_METHOD_THERMAL_INFORMATION 0x14 29 + #define AWCC_METHOD_THERMAL_CONTROL 0x15 30 + #define AWCC_METHOD_GAME_SHIFT_STATUS 0x25 32 31 33 - #define WMAX_FAILURE_CODE 0xFFFFFFFF 34 - #define WMAX_THERMAL_TABLE_MASK GENMASK(7, 4) 35 - #define WMAX_THERMAL_MODE_MASK GENMASK(3, 0) 36 - #define WMAX_SENSOR_ID_MASK BIT(8) 32 + #define AWCC_THERMAL_MODE_GMODE 0xAB 33 + 34 + #define AWCC_FAILURE_CODE 0xFFFFFFFF 35 + #define AWCC_THERMAL_TABLE_MASK GENMASK(7, 4) 36 + #define AWCC_THERMAL_MODE_MASK GENMASK(3, 0) 37 + #define AWCC_SENSOR_ID_MASK BIT(8) 37 38 38 39 static bool force_platform_profile; 39 40 module_param_unsafe(force_platform_profile, bool, 0); ··· 152 151 }, 153 152 }; 154 153 155 - enum WMAX_THERMAL_INFORMATION_OPERATIONS { 156 - WMAX_OPERATION_SYS_DESCRIPTION = 0x02, 157 - WMAX_OPERATION_LIST_IDS = 0x03, 158 - WMAX_OPERATION_CURRENT_PROFILE = 0x0B, 154 + enum AWCC_THERMAL_INFORMATION_OPERATIONS { 155 + AWCC_OP_GET_SYSTEM_DESCRIPTION = 0x02, 156 + AWCC_OP_GET_RESOURCE_ID = 0x03, 157 + AWCC_OP_GET_CURRENT_PROFILE = 0x0B, 159 158 }; 160 159 161 - enum WMAX_THERMAL_CONTROL_OPERATIONS { 162 - WMAX_OPERATION_ACTIVATE_PROFILE = 0x01, 160 + enum AWCC_THERMAL_CONTROL_OPERATIONS { 161 + AWCC_OP_ACTIVATE_PROFILE = 0x01, 163 162 }; 164 163 165 - enum WMAX_GAME_SHIFT_STATUS_OPERATIONS { 166 - WMAX_OPERATION_TOGGLE_GAME_SHIFT = 0x01, 167 - WMAX_OPERATION_GET_GAME_SHIFT_STATUS = 0x02, 164 + enum AWCC_GAME_SHIFT_STATUS_OPERATIONS { 165 + AWCC_OP_TOGGLE_GAME_SHIFT = 0x01, 166 + AWCC_OP_GET_GAME_SHIFT_STATUS = 0x02, 168 167 }; 169 168 170 - enum WMAX_THERMAL_TABLES { 171 - WMAX_THERMAL_TABLE_BASIC = 0x90, 172 - WMAX_THERMAL_TABLE_USTT = 0xA0, 169 + enum AWCC_THERMAL_TABLES { 170 + AWCC_THERMAL_TABLE_LEGACY = 0x90, 171 + AWCC_THERMAL_TABLE_USTT = 0xA0, 173 172 }; 174 173 175 - enum wmax_thermal_mode { 176 - THERMAL_MODE_USTT_BALANCED, 177 - THERMAL_MODE_USTT_BALANCED_PERFORMANCE, 178 - THERMAL_MODE_USTT_COOL, 179 - THERMAL_MODE_USTT_QUIET, 180 - THERMAL_MODE_USTT_PERFORMANCE, 181 - THERMAL_MODE_USTT_LOW_POWER, 182 - THERMAL_MODE_BASIC_QUIET, 183 - THERMAL_MODE_BASIC_BALANCED, 184 - THERMAL_MODE_BASIC_BALANCED_PERFORMANCE, 185 - THERMAL_MODE_BASIC_PERFORMANCE, 186 - THERMAL_MODE_LAST, 174 + enum awcc_thermal_profile { 175 + AWCC_PROFILE_USTT_BALANCED, 176 + AWCC_PROFILE_USTT_BALANCED_PERFORMANCE, 177 + AWCC_PROFILE_USTT_COOL, 178 + AWCC_PROFILE_USTT_QUIET, 179 + AWCC_PROFILE_USTT_PERFORMANCE, 180 + AWCC_PROFILE_USTT_LOW_POWER, 181 + AWCC_PROFILE_LEGACY_QUIET, 182 + AWCC_PROFILE_LEGACY_BALANCED, 183 + AWCC_PROFILE_LEGACY_BALANCED_PERFORMANCE, 184 + AWCC_PROFILE_LEGACY_PERFORMANCE, 185 + AWCC_PROFILE_LAST, 187 186 }; 188 187 189 188 struct wmax_led_args { ··· 211 210 struct awcc_priv { 212 211 struct wmi_device *wdev; 213 212 struct device *ppdev; 214 - enum wmax_thermal_mode supported_thermal_profiles[PLATFORM_PROFILE_LAST]; 213 + enum awcc_thermal_profile supported_thermal_profiles[PLATFORM_PROFILE_LAST]; 215 214 }; 216 215 217 - static const enum platform_profile_option wmax_mode_to_platform_profile[THERMAL_MODE_LAST] = { 218 - [THERMAL_MODE_USTT_BALANCED] = PLATFORM_PROFILE_BALANCED, 219 - [THERMAL_MODE_USTT_BALANCED_PERFORMANCE] = PLATFORM_PROFILE_BALANCED_PERFORMANCE, 220 - [THERMAL_MODE_USTT_COOL] = PLATFORM_PROFILE_COOL, 221 - [THERMAL_MODE_USTT_QUIET] = PLATFORM_PROFILE_QUIET, 222 - [THERMAL_MODE_USTT_PERFORMANCE] = PLATFORM_PROFILE_PERFORMANCE, 223 - [THERMAL_MODE_USTT_LOW_POWER] = PLATFORM_PROFILE_LOW_POWER, 224 - [THERMAL_MODE_BASIC_QUIET] = PLATFORM_PROFILE_QUIET, 225 - [THERMAL_MODE_BASIC_BALANCED] = PLATFORM_PROFILE_BALANCED, 226 - [THERMAL_MODE_BASIC_BALANCED_PERFORMANCE] = PLATFORM_PROFILE_BALANCED_PERFORMANCE, 227 - [THERMAL_MODE_BASIC_PERFORMANCE] = PLATFORM_PROFILE_PERFORMANCE, 216 + static const enum platform_profile_option awcc_mode_to_platform_profile[AWCC_PROFILE_LAST] = { 217 + [AWCC_PROFILE_USTT_BALANCED] = PLATFORM_PROFILE_BALANCED, 218 + [AWCC_PROFILE_USTT_BALANCED_PERFORMANCE] = PLATFORM_PROFILE_BALANCED_PERFORMANCE, 219 + [AWCC_PROFILE_USTT_COOL] = PLATFORM_PROFILE_COOL, 220 + [AWCC_PROFILE_USTT_QUIET] = PLATFORM_PROFILE_QUIET, 221 + [AWCC_PROFILE_USTT_PERFORMANCE] = PLATFORM_PROFILE_PERFORMANCE, 222 + [AWCC_PROFILE_USTT_LOW_POWER] = PLATFORM_PROFILE_LOW_POWER, 223 + [AWCC_PROFILE_LEGACY_QUIET] = PLATFORM_PROFILE_QUIET, 224 + [AWCC_PROFILE_LEGACY_BALANCED] = PLATFORM_PROFILE_BALANCED, 225 + [AWCC_PROFILE_LEGACY_BALANCED_PERFORMANCE] = PLATFORM_PROFILE_BALANCED_PERFORMANCE, 226 + [AWCC_PROFILE_LEGACY_PERFORMANCE] = PLATFORM_PROFILE_PERFORMANCE, 228 227 }; 229 228 230 229 static struct awcc_quirks *awcc; ··· 445 444 * Thermal Profile control 446 445 * - Provides thermal profile control through the Platform Profile API 447 446 */ 448 - static bool is_wmax_thermal_code(u32 code) 447 + static bool is_awcc_thermal_mode(u32 code) 449 448 { 450 - if (code & WMAX_SENSOR_ID_MASK) 449 + if (code & AWCC_SENSOR_ID_MASK) 451 450 return false; 452 451 453 - if ((code & WMAX_THERMAL_MODE_MASK) >= THERMAL_MODE_LAST) 452 + if ((code & AWCC_THERMAL_MODE_MASK) >= AWCC_PROFILE_LAST) 454 453 return false; 455 454 456 - if ((code & WMAX_THERMAL_TABLE_MASK) == WMAX_THERMAL_TABLE_BASIC && 457 - (code & WMAX_THERMAL_MODE_MASK) >= THERMAL_MODE_BASIC_QUIET) 455 + if ((code & AWCC_THERMAL_TABLE_MASK) == AWCC_THERMAL_TABLE_LEGACY && 456 + (code & AWCC_THERMAL_MODE_MASK) >= AWCC_PROFILE_LEGACY_QUIET) 458 457 return true; 459 458 460 - if ((code & WMAX_THERMAL_TABLE_MASK) == WMAX_THERMAL_TABLE_USTT && 461 - (code & WMAX_THERMAL_MODE_MASK) <= THERMAL_MODE_USTT_LOW_POWER) 459 + if ((code & AWCC_THERMAL_TABLE_MASK) == AWCC_THERMAL_TABLE_USTT && 460 + (code & AWCC_THERMAL_MODE_MASK) <= AWCC_PROFILE_USTT_LOW_POWER) 462 461 return true; 463 462 464 463 return false; 465 464 } 466 465 467 - static int wmax_thermal_information(struct wmi_device *wdev, u8 operation, 466 + static int awcc_thermal_information(struct wmi_device *wdev, u8 operation, 468 467 u8 arg, u32 *out_data) 469 468 { 470 469 struct wmax_u32_args in_args = { ··· 475 474 }; 476 475 int ret; 477 476 478 - ret = alienware_wmi_command(wdev, WMAX_METHOD_THERMAL_INFORMATION, 477 + ret = alienware_wmi_command(wdev, AWCC_METHOD_THERMAL_INFORMATION, 479 478 &in_args, sizeof(in_args), out_data); 480 479 if (ret < 0) 481 480 return ret; 482 481 483 - if (*out_data == WMAX_FAILURE_CODE) 482 + if (*out_data == AWCC_FAILURE_CODE) 484 483 return -EBADRQC; 485 484 486 485 return 0; 487 486 } 488 487 489 - static int wmax_thermal_control(struct wmi_device *wdev, u8 profile) 488 + static int awcc_thermal_control(struct wmi_device *wdev, u8 profile) 490 489 { 491 490 struct wmax_u32_args in_args = { 492 - .operation = WMAX_OPERATION_ACTIVATE_PROFILE, 491 + .operation = AWCC_OP_ACTIVATE_PROFILE, 493 492 .arg1 = profile, 494 493 .arg2 = 0, 495 494 .arg3 = 0, ··· 497 496 u32 out_data; 498 497 int ret; 499 498 500 - ret = alienware_wmi_command(wdev, WMAX_METHOD_THERMAL_CONTROL, 499 + ret = alienware_wmi_command(wdev, AWCC_METHOD_THERMAL_CONTROL, 501 500 &in_args, sizeof(in_args), &out_data); 502 501 if (ret) 503 502 return ret; 504 503 505 - if (out_data == WMAX_FAILURE_CODE) 504 + if (out_data == AWCC_FAILURE_CODE) 506 505 return -EBADRQC; 507 506 508 507 return 0; 509 508 } 510 509 511 - static int wmax_game_shift_status(struct wmi_device *wdev, u8 operation, 510 + static int awcc_game_shift_status(struct wmi_device *wdev, u8 operation, 512 511 u32 *out_data) 513 512 { 514 513 struct wmax_u32_args in_args = { ··· 519 518 }; 520 519 int ret; 521 520 522 - ret = alienware_wmi_command(wdev, WMAX_METHOD_GAME_SHIFT_STATUS, 521 + ret = alienware_wmi_command(wdev, AWCC_METHOD_GAME_SHIFT_STATUS, 523 522 &in_args, sizeof(in_args), out_data); 524 523 if (ret < 0) 525 524 return ret; 526 525 527 - if (*out_data == WMAX_FAILURE_CODE) 526 + if (*out_data == AWCC_FAILURE_CODE) 528 527 return -EOPNOTSUPP; 529 528 530 529 return 0; 531 530 } 532 531 533 - static int thermal_profile_get(struct device *dev, 534 - enum platform_profile_option *profile) 532 + static int awcc_platform_profile_get(struct device *dev, 533 + enum platform_profile_option *profile) 535 534 { 536 535 struct awcc_priv *priv = dev_get_drvdata(dev); 537 536 u32 out_data; 538 537 int ret; 539 538 540 - ret = wmax_thermal_information(priv->wdev, WMAX_OPERATION_CURRENT_PROFILE, 539 + ret = awcc_thermal_information(priv->wdev, AWCC_OP_GET_CURRENT_PROFILE, 541 540 0, &out_data); 542 541 543 542 if (ret < 0) 544 543 return ret; 545 544 546 - if (out_data == WMAX_THERMAL_MODE_GMODE) { 545 + if (out_data == AWCC_THERMAL_MODE_GMODE) { 547 546 *profile = PLATFORM_PROFILE_PERFORMANCE; 548 547 return 0; 549 548 } 550 549 551 - if (!is_wmax_thermal_code(out_data)) 550 + if (!is_awcc_thermal_mode(out_data)) 552 551 return -ENODATA; 553 552 554 - out_data &= WMAX_THERMAL_MODE_MASK; 555 - *profile = wmax_mode_to_platform_profile[out_data]; 553 + out_data &= AWCC_THERMAL_MODE_MASK; 554 + *profile = awcc_mode_to_platform_profile[out_data]; 556 555 557 556 return 0; 558 557 } 559 558 560 - static int thermal_profile_set(struct device *dev, 561 - enum platform_profile_option profile) 559 + static int awcc_platform_profile_set(struct device *dev, 560 + enum platform_profile_option profile) 562 561 { 563 562 struct awcc_priv *priv = dev_get_drvdata(dev); 564 563 ··· 566 565 u32 gmode_status; 567 566 int ret; 568 567 569 - ret = wmax_game_shift_status(priv->wdev, 570 - WMAX_OPERATION_GET_GAME_SHIFT_STATUS, 568 + ret = awcc_game_shift_status(priv->wdev, 569 + AWCC_OP_GET_GAME_SHIFT_STATUS, 571 570 &gmode_status); 572 571 573 572 if (ret < 0) ··· 575 574 576 575 if ((profile == PLATFORM_PROFILE_PERFORMANCE && !gmode_status) || 577 576 (profile != PLATFORM_PROFILE_PERFORMANCE && gmode_status)) { 578 - ret = wmax_game_shift_status(priv->wdev, 579 - WMAX_OPERATION_TOGGLE_GAME_SHIFT, 577 + ret = awcc_game_shift_status(priv->wdev, 578 + AWCC_OP_TOGGLE_GAME_SHIFT, 580 579 &gmode_status); 581 580 582 581 if (ret < 0) ··· 584 583 } 585 584 } 586 585 587 - return wmax_thermal_control(priv->wdev, 586 + return awcc_thermal_control(priv->wdev, 588 587 priv->supported_thermal_profiles[profile]); 589 588 } 590 589 591 - static int thermal_profile_probe(void *drvdata, unsigned long *choices) 590 + static int awcc_platform_profile_probe(void *drvdata, unsigned long *choices) 592 591 { 593 592 enum platform_profile_option profile; 594 593 struct awcc_priv *priv = drvdata; 595 - enum wmax_thermal_mode mode; 594 + enum awcc_thermal_profile mode; 596 595 u8 sys_desc[4]; 597 596 u32 first_mode; 598 597 u32 out_data; 599 598 int ret; 600 599 601 - ret = wmax_thermal_information(priv->wdev, WMAX_OPERATION_SYS_DESCRIPTION, 600 + ret = awcc_thermal_information(priv->wdev, AWCC_OP_GET_SYSTEM_DESCRIPTION, 602 601 0, (u32 *) &sys_desc); 603 602 if (ret < 0) 604 603 return ret; ··· 606 605 first_mode = sys_desc[0] + sys_desc[1]; 607 606 608 607 for (u32 i = 0; i < sys_desc[3]; i++) { 609 - ret = wmax_thermal_information(priv->wdev, WMAX_OPERATION_LIST_IDS, 608 + ret = awcc_thermal_information(priv->wdev, AWCC_OP_GET_RESOURCE_ID, 610 609 i + first_mode, &out_data); 611 610 612 611 if (ret == -EIO) ··· 615 614 if (ret == -EBADRQC) 616 615 break; 617 616 618 - if (!is_wmax_thermal_code(out_data)) 617 + if (!is_awcc_thermal_mode(out_data)) 619 618 continue; 620 619 621 - mode = out_data & WMAX_THERMAL_MODE_MASK; 622 - profile = wmax_mode_to_platform_profile[mode]; 620 + mode = out_data & AWCC_THERMAL_MODE_MASK; 621 + profile = awcc_mode_to_platform_profile[mode]; 623 622 priv->supported_thermal_profiles[profile] = out_data; 624 623 625 624 set_bit(profile, choices); ··· 630 629 631 630 if (awcc->gmode) { 632 631 priv->supported_thermal_profiles[PLATFORM_PROFILE_PERFORMANCE] = 633 - WMAX_THERMAL_MODE_GMODE; 632 + AWCC_THERMAL_MODE_GMODE; 634 633 635 634 set_bit(PLATFORM_PROFILE_PERFORMANCE, choices); 636 635 } ··· 639 638 } 640 639 641 640 static const struct platform_profile_ops awcc_platform_profile_ops = { 642 - .probe = thermal_profile_probe, 643 - .profile_get = thermal_profile_get, 644 - .profile_set = thermal_profile_set, 641 + .probe = awcc_platform_profile_probe, 642 + .profile_get = awcc_platform_profile_get, 643 + .profile_set = awcc_platform_profile_set, 645 644 }; 646 645 647 646 static int awcc_platform_profile_init(struct wmi_device *wdev)