]> www.infradead.org Git - users/hch/misc.git/commitdiff
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platfo...
authorStephen Rothwell <sfr@canb.auug.org.au>
Tue, 13 May 2025 07:45:39 +0000 (17:45 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 13 May 2025 07:45:39 +0000 (17:45 +1000)
# Conflicts:
# drivers/platform/x86/asus-wmi.c
# drivers/platform/x86/dell/alienware-wmi-wmax.c
# drivers/platform/x86/intel/speed_select_if/isst_if_common.c

14 files changed:
1  2 
Documentation/ABI/testing/sysfs-class-power
Documentation/hwmon/index.rst
MAINTAINERS
drivers/hwmon/Kconfig
drivers/hwmon/Makefile
drivers/platform/x86/asus-wmi.c
drivers/platform/x86/dell/alienware-wmi-wmax.c
drivers/platform/x86/intel/pmc/core.c
drivers/platform/x86/intel/speed_select_if/isst_if_common.c
drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
drivers/platform/x86/thinkpad_acpi.c
drivers/power/supply/power_supply_sysfs.c
drivers/power/supply/test_power.c
include/linux/power_supply.h

Simple merge
diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
index 47cc766624d7bb6c49f8f700b38cc2c54bc90369,27f11643a00d958ef1de01b47a7ed8b991ee733c..7eda56f7713c651fa7829a84cff171ba569a4ef8
@@@ -4724,9 -4780,6 +4781,7 @@@ static int asus_wmi_add(struct platform
        asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU);
        asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU);
        asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE);
-       asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE)
-                                               && dmi_check_system(asus_ally_mcu_quirk);
 +      asus->oobe_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_OOBE);
  
        if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE))
                asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE;
index 08b82c151e07103885dbe3354542f18776fe0b2e,f0e6a36abc278d95059dfc007414894dee79b587..c42f9228b0b255fe962b735ac96486824e83945f
@@@ -197,48 -177,61 +225,69 @@@ static const struct dmi_system_id awcc_
                },
                .driver_data = &g_series_quirks,
        },
 +      {
 +              .ident = "Dell Inc. G5 5505",
 +              .matches = {
 +                      DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
 +                      DMI_MATCH(DMI_PRODUCT_NAME, "G5 5505"),
 +              },
 +              .driver_data = &g_series_quirks,
 +      },
  };
  
- enum WMAX_THERMAL_INFORMATION_OPERATIONS {
-       WMAX_OPERATION_SYS_DESCRIPTION          = 0x02,
-       WMAX_OPERATION_LIST_IDS                 = 0x03,
-       WMAX_OPERATION_CURRENT_PROFILE          = 0x0B,
+ enum AWCC_GET_FAN_SENSORS_OPERATIONS {
+       AWCC_OP_GET_TOTAL_FAN_TEMPS             = 0x01,
+       AWCC_OP_GET_FAN_TEMP_ID                 = 0x02,
+ };
+ enum AWCC_THERMAL_INFORMATION_OPERATIONS {
+       AWCC_OP_GET_SYSTEM_DESCRIPTION          = 0x02,
+       AWCC_OP_GET_RESOURCE_ID                 = 0x03,
+       AWCC_OP_GET_TEMPERATURE                 = 0x04,
+       AWCC_OP_GET_FAN_RPM                     = 0x05,
+       AWCC_OP_GET_FAN_MIN_RPM                 = 0x08,
+       AWCC_OP_GET_FAN_MAX_RPM                 = 0x09,
+       AWCC_OP_GET_CURRENT_PROFILE             = 0x0B,
+       AWCC_OP_GET_FAN_BOOST                   = 0x0C,
+ };
+ enum AWCC_THERMAL_CONTROL_OPERATIONS {
+       AWCC_OP_ACTIVATE_PROFILE                = 0x01,
+       AWCC_OP_SET_FAN_BOOST                   = 0x02,
  };
  
- enum WMAX_THERMAL_CONTROL_OPERATIONS {
-       WMAX_OPERATION_ACTIVATE_PROFILE         = 0x01,
+ enum AWCC_GAME_SHIFT_STATUS_OPERATIONS {
+       AWCC_OP_TOGGLE_GAME_SHIFT               = 0x01,
+       AWCC_OP_GET_GAME_SHIFT_STATUS           = 0x02,
  };
  
- enum WMAX_GAME_SHIFT_STATUS_OPERATIONS {
-       WMAX_OPERATION_TOGGLE_GAME_SHIFT        = 0x01,
-       WMAX_OPERATION_GET_GAME_SHIFT_STATUS    = 0x02,
+ enum AWCC_THERMAL_TABLES {
+       AWCC_THERMAL_TABLE_LEGACY               = 0x9,
+       AWCC_THERMAL_TABLE_USTT                 = 0xA,
  };
  
- enum WMAX_THERMAL_TABLES {
-       WMAX_THERMAL_TABLE_BASIC                = 0x90,
-       WMAX_THERMAL_TABLE_USTT                 = 0xA0,
+ enum AWCC_SPECIAL_THERMAL_CODES {
+       AWCC_SPECIAL_PROFILE_CUSTOM             = 0x00,
+       AWCC_SPECIAL_PROFILE_GMODE              = 0xAB,
  };
  
- enum wmax_thermal_mode {
-       THERMAL_MODE_USTT_BALANCED,
-       THERMAL_MODE_USTT_BALANCED_PERFORMANCE,
-       THERMAL_MODE_USTT_COOL,
-       THERMAL_MODE_USTT_QUIET,
-       THERMAL_MODE_USTT_PERFORMANCE,
-       THERMAL_MODE_USTT_LOW_POWER,
-       THERMAL_MODE_BASIC_QUIET,
-       THERMAL_MODE_BASIC_BALANCED,
-       THERMAL_MODE_BASIC_BALANCED_PERFORMANCE,
-       THERMAL_MODE_BASIC_PERFORMANCE,
-       THERMAL_MODE_LAST,
+ enum AWCC_TEMP_SENSOR_TYPES {
+       AWCC_TEMP_SENSOR_CPU                    = 0x01,
+       AWCC_TEMP_SENSOR_GPU                    = 0x06,
+ };
+ enum awcc_thermal_profile {
+       AWCC_PROFILE_USTT_BALANCED,
+       AWCC_PROFILE_USTT_BALANCED_PERFORMANCE,
+       AWCC_PROFILE_USTT_COOL,
+       AWCC_PROFILE_USTT_QUIET,
+       AWCC_PROFILE_USTT_PERFORMANCE,
+       AWCC_PROFILE_USTT_LOW_POWER,
+       AWCC_PROFILE_LEGACY_QUIET,
+       AWCC_PROFILE_LEGACY_BALANCED,
+       AWCC_PROFILE_LEGACY_BALANCED_PERFORMANCE,
+       AWCC_PROFILE_LEGACY_PERFORMANCE,
+       AWCC_PROFILE_LAST,
  };
  
  struct wmax_led_args {
@@@ -647,35 -1228,38 +1284,38 @@@ static int awcc_platform_profile_probe(
  {
        enum platform_profile_option profile;
        struct awcc_priv *priv = drvdata;
-       enum wmax_thermal_mode mode;
-       u8 sys_desc[4];
-       u32 first_mode;
-       u32 out_data;
+       enum awcc_thermal_profile mode;
+       u8 id, offset = 0;
        int ret;
  
-       ret = wmax_thermal_information(priv->wdev, WMAX_OPERATION_SYS_DESCRIPTION,
-                                      0, (u32 *) &sys_desc);
-       if (ret < 0)
-               return ret;
-       first_mode = sys_desc[0] + sys_desc[1];
-       for (u32 i = 0; i < sys_desc[3]; i++) {
-               ret = wmax_thermal_information(priv->wdev, WMAX_OPERATION_LIST_IDS,
-                                              i + first_mode, &out_data);
+       /*
+        * Thermal profile IDs are listed last at offset
+        *      fan_count + temp_count + unknown_count
+        */
+       for (unsigned int i = 0; i < ARRAY_SIZE(priv->res_count) - 1; i++)
+               offset += priv->res_count[i];
+       for (unsigned int i = 0; i < priv->profile_count; i++) {
+               ret = awcc_op_get_resource_id(priv->wdev, i + offset, &id);
 -              if (ret == -EIO)
 -                      return ret;
+               /*
+                * Some devices report an incorrect number of thermal profiles
+                * so the resource ID list may end prematurely
+                */
                if (ret == -EBADRQC)
                        break;
 +              if (ret)
 +                      return ret;
  
-               if (!is_wmax_thermal_code(out_data))
+               if (!is_awcc_thermal_profile_id(id)) {
+                       dev_dbg(&priv->wdev->dev, "Unmapped thermal profile ID 0x%02x\n", id);
                        continue;
+               }
  
-               mode = out_data & WMAX_THERMAL_MODE_MASK;
-               profile = wmax_mode_to_platform_profile[mode];
-               priv->supported_thermal_profiles[profile] = out_data;
+               mode = FIELD_GET(AWCC_THERMAL_MODE_MASK, id);
+               profile = awcc_mode_to_platform_profile[mode];
+               priv->supported_profiles[profile] = id;
  
-               set_bit(profile, choices);
+               __set_bit(profile, choices);
        }
  
        if (bitmap_empty(choices, PLATFORM_PROFILE_LAST))
Simple merge
Simple merge
index b5f148081c5103dacd9d6bcf03d5c5cc7ec835ef,958e0c0cf28769d20d8ffef4440ba0b2e80576b1..5bfdfcf6013b7f4119335f69cc017577a84f1c64
@@@ -228,9 -214,8 +228,10 @@@ static const struct power_supply_desc t
                .property_is_writeable = test_power_battery_property_is_writeable,
                .charge_behaviours = BIT(POWER_SUPPLY_CHARGE_BEHAVIOUR_AUTO)
                                   | BIT(POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE)
+                                  | BIT(POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE_AWAKE)
                                   | BIT(POWER_SUPPLY_CHARGE_BEHAVIOUR_FORCE_DISCHARGE),
 +              .charge_types = BIT(POWER_SUPPLY_CHARGE_TYPE_STANDARD)
 +                                 | BIT(POWER_SUPPLY_CHARGE_TYPE_LONGLIFE)
        },
        [TEST_USB] = {
                .name = "test_usb",
Simple merge