hwmon: (oxp-sensors) Move board detection to the init function
authorJoaquín Ignacio Aramendía <samsagax@gmail.com>
Mon, 17 Jul 2023 22:25:16 +0000 (19:25 -0300)
committerGuenter Roeck <linux@roeck-us.net>
Mon, 21 Aug 2023 13:04:29 +0000 (06:04 -0700)
Move detection logic to the start of init() function so we won't
instantiate the driver if the board is not compatible.

Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20230717222526.229984-3-samsagax@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/oxp-sensors.c

index 1e1cc67..ea96020 100644 (file)
@@ -434,23 +434,9 @@ static const struct hwmon_chip_info oxp_ec_chip_info = {
 /* Initialization logic */
 static int oxp_platform_probe(struct platform_device *pdev)
 {
-       const struct dmi_system_id *dmi_entry;
        struct device *dev = &pdev->dev;
        struct device *hwdev;
 
-       /*
-        * Have to check for AMD processor here because DMI strings are the
-        * same between Intel and AMD boards, the only way to tell them apart
-        * is the CPU.
-        * Intel boards seem to have different EC registers and values to
-        * read/write.
-        */
-       dmi_entry = dmi_first_match(dmi_table);
-       if (!dmi_entry || boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
-               return -ENODEV;
-
-       board = (enum oxp_board)(unsigned long)dmi_entry->driver_data;
-
        hwdev = devm_hwmon_device_register_with_info(dev, "oxpec", NULL,
                                                     &oxp_ec_chip_info, NULL);
 
@@ -469,6 +455,21 @@ static struct platform_device *oxp_platform_device;
 
 static int __init oxp_platform_init(void)
 {
+       const struct dmi_system_id *dmi_entry;
+
+       /*
+        * Have to check for AMD processor here because DMI strings are the
+        * same between Intel and AMD boards, the only way to tell them apart
+        * is the CPU.
+        * Intel boards seem to have different EC registers and values to
+        * read/write.
+        */
+       dmi_entry = dmi_first_match(dmi_table);
+       if (!dmi_entry || boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
+               return -ENODEV;
+
+       board = (enum oxp_board)(unsigned long)dmi_entry->driver_data;
+
        oxp_platform_device =
                platform_create_bundle(&oxp_platform_driver,
                                       oxp_platform_probe, NULL, 0, NULL, 0);