hwmon: (gpio-fan) move fan_alarm_init after devm_hwmon_device_register_with_groups
authorChristian Schneider <cschneider@radiodata.biz>
Tue, 2 Jul 2019 13:23:37 +0000 (15:23 +0200)
committerGuenter Roeck <linux@roeck-us.net>
Tue, 9 Jul 2019 01:11:31 +0000 (18:11 -0700)
This makes it possible to use the hwmon_dev in fan_alarm_notify(). Otherwise
it would be possible, that a interupt arrives and fan_alarm_notify() is
executed, before hwmon_dev is initialized.

Signed-off-by: Christian Schneider <cschneider@radiodata.biz>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/gpio-fan.c

index 54c27e683ee10cf96b6cc7260f9cab6bb3c515f0..5f9b406134b5f5b659865f9d613591d101469c25 100644 (file)
@@ -510,13 +510,6 @@ static int gpio_fan_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, fan_data);
        mutex_init(&fan_data->lock);
 
-       /* Configure alarm GPIO if available. */
-       if (fan_data->alarm_gpio) {
-               err = fan_alarm_init(fan_data);
-               if (err)
-                       return err;
-       }
-
        /* Configure control GPIOs if available. */
        if (fan_data->gpios && fan_data->num_gpios > 0) {
                if (!fan_data->speed || fan_data->num_speed <= 1)
@@ -537,6 +530,13 @@ static int gpio_fan_probe(struct platform_device *pdev)
        if (IS_ERR(fan_data->hwmon_dev))
                return PTR_ERR(fan_data->hwmon_dev);
 
+       /* Configure alarm GPIO if available. */
+       if (fan_data->alarm_gpio) {
+               err = fan_alarm_init(fan_data);
+               if (err)
+                       return err;
+       }
+
        /* Optional cooling device register for Device tree platforms */
        fan_data->cdev = devm_thermal_of_cooling_device_register(dev, np,
                                "gpio-fan", fan_data, &gpio_fan_cool_ops);