hwmon/f71882fg: Break out test for auto pwm's controlled by digital readings
authorHans de Goede <hdegoede@redhat.com>
Wed, 9 Mar 2011 19:57:13 +0000 (20:57 +0100)
committerGuenter Roeck <guenter.roeck@ericsson.com>
Tue, 15 Mar 2011 05:39:24 +0000 (22:39 -0700)
Putting this check in its own switch case rather then in the switch case
for adding pwm auto point sysfs attr is cleaner. This is a preparation patch
for adding support for more different models.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
drivers/hwmon/f71882fg.c

index 62352fd..4c17f12 100644 (file)
@@ -2075,6 +2075,27 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
                }
 
                switch (data->type) {
+               case f71889fg:
+                       for (i = 0; i < nr_fans; i++) {
+                               data->pwm_auto_point_mapping[i] =
+                                       f71882fg_read8(data,
+                                               F71882FG_REG_POINT_MAPPING(i));
+                               if (data->pwm_auto_point_mapping[i] & 0x80)
+                                       break;
+                       }
+                       if (i != nr_fans) {
+                               dev_warn(&pdev->dev,
+                                        "Auto pwm controlled by raw digital "
+                                        "data, disabling pwm auto_point "
+                                        "sysfs attributes\n");
+                               goto no_pwm_auto_point;
+                       }
+                       break;
+               default:
+                       break;
+               }
+
+               switch (data->type) {
                case f71862fg:
                        err = f71882fg_create_sysfs_files(pdev,
                                        f71862fg_auto_pwm_attr,
@@ -2090,23 +2111,7 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
                                        f8000_auto_pwm_attr,
                                        ARRAY_SIZE(f8000_auto_pwm_attr));
                        break;
-               case f71889fg:
-                       for (i = 0; i < nr_fans; i++) {
-                               data->pwm_auto_point_mapping[i] =
-                                       f71882fg_read8(data,
-                                               F71882FG_REG_POINT_MAPPING(i));
-                               if (data->pwm_auto_point_mapping[i] & 0x80)
-                                       break;
-                       }
-                       if (i != nr_fans) {
-                               dev_warn(&pdev->dev,
-                                        "Auto pwm controlled by raw digital "
-                                        "data, disabling pwm auto_point "
-                                        "sysfs attributes\n");
-                               break;
-                       }
-                       /* fall through */
-               default: /* f71858fg / f71882fg */
+               default:
                        err = f71882fg_create_sysfs_files(pdev,
                                &fxxxx_auto_pwm_attr[0][0],
                                ARRAY_SIZE(fxxxx_auto_pwm_attr[0]) * nr_fans);
@@ -2114,6 +2119,7 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
                if (err)
                        goto exit_unregister_sysfs;
 
+no_pwm_auto_point:
                for (i = 0; i < nr_fans; i++)
                        dev_info(&pdev->dev, "Fan: %d is in %s mode\n", i + 1,
                                 (data->pwm_enable & (1 << 2 * i)) ?