浏览代码

hwmon/f71882fg: Break out test for auto pwm's controlled by digital readings

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>
Hans de Goede 14 年之前
父节点
当前提交
e48a7f1a71
共有 1 个文件被更改,包括 23 次插入17 次删除
  1. 23 17
      drivers/hwmon/f71882fg.c

+ 23 - 17
drivers/hwmon/f71882fg.c

@@ -2074,6 +2074,27 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
 				goto exit_unregister_sysfs;
 				goto exit_unregister_sysfs;
 		}
 		}
 
 
+		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) {
 		switch (data->type) {
 		case f71862fg:
 		case f71862fg:
 			err = f71882fg_create_sysfs_files(pdev,
 			err = f71882fg_create_sysfs_files(pdev,
@@ -2090,23 +2111,7 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
 					f8000_auto_pwm_attr,
 					f8000_auto_pwm_attr,
 					ARRAY_SIZE(f8000_auto_pwm_attr));
 					ARRAY_SIZE(f8000_auto_pwm_attr));
 			break;
 			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,
 			err = f71882fg_create_sysfs_files(pdev,
 				&fxxxx_auto_pwm_attr[0][0],
 				&fxxxx_auto_pwm_attr[0][0],
 				ARRAY_SIZE(fxxxx_auto_pwm_attr[0]) * nr_fans);
 				ARRAY_SIZE(fxxxx_auto_pwm_attr[0]) * nr_fans);
@@ -2114,6 +2119,7 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
 		if (err)
 		if (err)
 			goto exit_unregister_sysfs;
 			goto exit_unregister_sysfs;
 
 
+no_pwm_auto_point:
 		for (i = 0; i < nr_fans; i++)
 		for (i = 0; i < nr_fans; i++)
 			dev_info(&pdev->dev, "Fan: %d is in %s mode\n", i + 1,
 			dev_info(&pdev->dev, "Fan: %d is in %s mode\n", i + 1,
 				 (data->pwm_enable & (1 << 2 * i)) ?
 				 (data->pwm_enable & (1 << 2 * i)) ?