]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
hwmon: (k10temp): Use cpu_feature_enabled() for detecting zen
authorMario Limonciello <mario.limonciello@amd.com>
Tue, 20 Aug 2024 05:35:57 +0000 (00:35 -0500)
committerGuenter Roeck <linux@roeck-us.net>
Tue, 27 Aug 2024 15:11:15 +0000 (08:11 -0700)
This removes some boilerplate from the code and will allow adding
future CPUs by just device IDs.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Message-ID: <20240820053558.1052853-1-superm1@kernel.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/k10temp.c

index 543526bac04254974e4728d614d459b1f0a17d0a..85a7632f3b50a0fb3a112f5797b01db5f91d5ec4 100644 (file)
@@ -438,16 +438,21 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                data->disp_negative = true;
        }
 
-       if (boot_cpu_data.x86 == 0x15 &&
+       data->is_zen = cpu_feature_enabled(X86_FEATURE_ZEN);
+       if (data->is_zen) {
+               data->temp_adjust_mask = ZEN_CUR_TEMP_RANGE_SEL_MASK;
+               data->read_tempreg = read_tempreg_nb_zen;
+       } else if (boot_cpu_data.x86 == 0x15 &&
            ((boot_cpu_data.x86_model & 0xf0) == 0x60 ||
             (boot_cpu_data.x86_model & 0xf0) == 0x70)) {
                data->read_htcreg = read_htcreg_nb_f15;
                data->read_tempreg = read_tempreg_nb_f15;
-       } else if (boot_cpu_data.x86 == 0x17 || boot_cpu_data.x86 == 0x18) {
-               data->temp_adjust_mask = ZEN_CUR_TEMP_RANGE_SEL_MASK;
-               data->read_tempreg = read_tempreg_nb_zen;
-               data->is_zen = true;
+       } else {
+               data->read_htcreg = read_htcreg_pci;
+               data->read_tempreg = read_tempreg_pci;
+       }
 
+       if (boot_cpu_data.x86 == 0x17 || boot_cpu_data.x86 == 0x18) {
                switch (boot_cpu_data.x86_model) {
                case 0x1:       /* Zen */
                case 0x8:       /* Zen+ */
@@ -469,10 +474,6 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                        break;
                }
        } else if (boot_cpu_data.x86 == 0x19) {
-               data->temp_adjust_mask = ZEN_CUR_TEMP_RANGE_SEL_MASK;
-               data->read_tempreg = read_tempreg_nb_zen;
-               data->is_zen = true;
-
                switch (boot_cpu_data.x86_model) {
                case 0x0 ... 0x1:       /* Zen3 SP3/TR */
                case 0x8:               /* Zen3 TR Chagall */
@@ -496,13 +497,6 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                        k10temp_get_ccd_support(data, 12);
                        break;
                }
-       } else if (boot_cpu_data.x86 == 0x1a) {
-               data->temp_adjust_mask = ZEN_CUR_TEMP_RANGE_SEL_MASK;
-               data->read_tempreg = read_tempreg_nb_zen;
-               data->is_zen = true;
-       } else {
-               data->read_htcreg = read_htcreg_pci;
-               data->read_tempreg = read_tempreg_pci;
        }
 
        for (i = 0; i < ARRAY_SIZE(tctl_offset_table); i++) {