hwmon: (asus-ec-sensors) add ROG Crosshair X670E Hero.
authorMichael Carns <mike@carns.com>
Wed, 26 Apr 2023 20:03:44 +0000 (22:03 +0200)
committerGuenter Roeck <linux@roeck-us.net>
Thu, 8 Jun 2023 13:41:16 +0000 (06:41 -0700)
Only the temp sensors that I can verify are present.  HWINFO in
Windows shows other accumulated data and statistics (time since
installed, total power used, etc) that I have not attempted to find.

Signed-off-by: Michael Carns <mike@carns.com>
Signed-off-by: Eugene Shalygin <eugene.shalygin@gmail.com>
Link: https://lore.kernel.org/r/20230426200345.65765-1-eugene.shalygin@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Documentation/hwmon/asus_ec_sensors.rst
drivers/hwmon/asus-ec-sensors.c

index c92c1d3..7e3cd5b 100644 (file)
@@ -14,6 +14,7 @@ Supported boards:
  * ROG CROSSHAIR VIII FORMULA
  * ROG CROSSHAIR VIII HERO
  * ROG CROSSHAIR VIII IMPACT
+ * ROG CROSSHAIR X670E HERO
  * ROG MAXIMUS XI HERO
  * ROG MAXIMUS XI HERO (WI-FI)
  * ROG STRIX B550-E GAMING
index e5be0cf..f52a539 100644 (file)
@@ -101,6 +101,8 @@ enum ec_sensors {
        ec_sensor_temp_chipset,
        /* CPU temperature [℃] */
        ec_sensor_temp_cpu,
+       /* CPU package temperature [℃] */
+       ec_sensor_temp_cpu_package,
        /* motherboard temperature [℃] */
        ec_sensor_temp_mb,
        /* "T_Sensor" temperature sensor reading [℃] */
@@ -139,6 +141,7 @@ enum ec_sensors {
 
 #define SENSOR_TEMP_CHIPSET BIT(ec_sensor_temp_chipset)
 #define SENSOR_TEMP_CPU BIT(ec_sensor_temp_cpu)
+#define SENSOR_TEMP_CPU_PACKAGE BIT(ec_sensor_temp_cpu_package)
 #define SENSOR_TEMP_MB BIT(ec_sensor_temp_mb)
 #define SENSOR_TEMP_T_SENSOR BIT(ec_sensor_temp_t_sensor)
 #define SENSOR_TEMP_VRM BIT(ec_sensor_temp_vrm)
@@ -161,6 +164,7 @@ enum board_family {
        family_unknown,
        family_amd_400_series,
        family_amd_500_series,
+       family_amd_600_series,
        family_intel_300_series,
        family_intel_600_series
 };
@@ -233,6 +237,19 @@ static const struct ec_sensor_info sensors_family_amd_500[] = {
                EC_SENSOR("Extra_3", hwmon_temp, 1, 0x01, 0x0c),
 };
 
+static const struct ec_sensor_info sensors_family_amd_600[] = {
+       [ec_sensor_temp_cpu] = EC_SENSOR("CPU", hwmon_temp, 1, 0x00, 0x30),
+       [ec_sensor_temp_cpu_package] = EC_SENSOR("CPU Package", hwmon_temp, 1, 0x00, 0x31),
+       [ec_sensor_temp_mb] =
+       EC_SENSOR("Motherboard", hwmon_temp, 1, 0x00, 0x32),
+       [ec_sensor_temp_vrm] =
+               EC_SENSOR("VRM", hwmon_temp, 1, 0x00, 0x33),
+       [ec_sensor_temp_water_in] =
+               EC_SENSOR("Water_In", hwmon_temp, 1, 0x01, 0x00),
+       [ec_sensor_temp_water_out] =
+               EC_SENSOR("Water_Out", hwmon_temp, 1, 0x01, 0x01),
+};
+
 static const struct ec_sensor_info sensors_family_intel_300[] = {
        [ec_sensor_temp_chipset] =
                EC_SENSOR("Chipset", hwmon_temp, 1, 0x00, 0x3a),
@@ -319,6 +336,14 @@ static const struct ec_board_info board_info_pro_ws_x570_ace = {
        .family = family_amd_500_series,
 };
 
+static const struct ec_board_info board_info_crosshair_x670e_hero = {
+       .sensors = SENSOR_TEMP_CPU | SENSOR_TEMP_CPU_PACKAGE |
+               SENSOR_TEMP_MB | SENSOR_TEMP_VRM |
+               SENSOR_SET_TEMP_WATER,
+       .mutex_path = ASUS_HW_ACCESS_MUTEX_RMTW_ASMX,
+       .family = family_amd_600_series,
+};
+
 static const struct ec_board_info board_info_crosshair_viii_dark_hero = {
        .sensors = SENSOR_SET_TEMP_CHIPSET_CPU_MB |
                SENSOR_TEMP_T_SENSOR |
@@ -463,6 +488,8 @@ static const struct dmi_system_id dmi_table[] = {
                                        &board_info_crosshair_viii_hero),
        DMI_EXACT_MATCH_ASUS_BOARD_NAME("ROG CROSSHAIR VIII HERO (WI-FI)",
                                        &board_info_crosshair_viii_hero),
+       DMI_EXACT_MATCH_ASUS_BOARD_NAME("ROG CROSSHAIR X670E HERO",
+                                       &board_info_crosshair_x670e_hero),
        DMI_EXACT_MATCH_ASUS_BOARD_NAME("ROG MAXIMUS XI HERO",
                                        &board_info_maximus_xi_hero),
        DMI_EXACT_MATCH_ASUS_BOARD_NAME("ROG MAXIMUS XI HERO (WI-FI)",
@@ -946,6 +973,9 @@ static int asus_ec_probe(struct platform_device *pdev)
        case family_amd_500_series:
                ec_data->sensors_info = sensors_family_amd_500;
                break;
+       case family_amd_600_series:
+               ec_data->sensors_info = sensors_family_amd_600;
+               break;
        case family_intel_300_series:
                ec_data->sensors_info = sensors_family_intel_300;
                break;