diff options
-rw-r--r-- | drivers/hwmon/f71882fg.c | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/drivers/hwmon/f71882fg.c b/drivers/hwmon/f71882fg.c index 62352fd397df..4c17f12054a2 100644 --- a/drivers/hwmon/f71882fg.c +++ b/drivers/hwmon/f71882fg.c | |||
@@ -2075,6 +2075,27 @@ static int __devinit f71882fg_probe(struct platform_device *pdev) | |||
2075 | } | 2075 | } |
2076 | 2076 | ||
2077 | switch (data->type) { | 2077 | switch (data->type) { |
2078 | case f71889fg: | ||
2079 | for (i = 0; i < nr_fans; i++) { | ||
2080 | data->pwm_auto_point_mapping[i] = | ||
2081 | f71882fg_read8(data, | ||
2082 | F71882FG_REG_POINT_MAPPING(i)); | ||
2083 | if (data->pwm_auto_point_mapping[i] & 0x80) | ||
2084 | break; | ||
2085 | } | ||
2086 | if (i != nr_fans) { | ||
2087 | dev_warn(&pdev->dev, | ||
2088 | "Auto pwm controlled by raw digital " | ||
2089 | "data, disabling pwm auto_point " | ||
2090 | "sysfs attributes\n"); | ||
2091 | goto no_pwm_auto_point; | ||
2092 | } | ||
2093 | break; | ||
2094 | default: | ||
2095 | break; | ||
2096 | } | ||
2097 | |||
2098 | switch (data->type) { | ||
2078 | case f71862fg: | 2099 | case f71862fg: |
2079 | err = f71882fg_create_sysfs_files(pdev, | 2100 | err = f71882fg_create_sysfs_files(pdev, |
2080 | f71862fg_auto_pwm_attr, | 2101 | f71862fg_auto_pwm_attr, |
@@ -2090,23 +2111,7 @@ static int __devinit f71882fg_probe(struct platform_device *pdev) | |||
2090 | f8000_auto_pwm_attr, | 2111 | f8000_auto_pwm_attr, |
2091 | ARRAY_SIZE(f8000_auto_pwm_attr)); | 2112 | ARRAY_SIZE(f8000_auto_pwm_attr)); |
2092 | break; | 2113 | break; |
2093 | case f71889fg: | 2114 | default: |
2094 | for (i = 0; i < nr_fans; i++) { | ||
2095 | data->pwm_auto_point_mapping[i] = | ||
2096 | f71882fg_read8(data, | ||
2097 | F71882FG_REG_POINT_MAPPING(i)); | ||
2098 | if (data->pwm_auto_point_mapping[i] & 0x80) | ||
2099 | break; | ||
2100 | } | ||
2101 | if (i != nr_fans) { | ||
2102 | dev_warn(&pdev->dev, | ||
2103 | "Auto pwm controlled by raw digital " | ||
2104 | "data, disabling pwm auto_point " | ||
2105 | "sysfs attributes\n"); | ||
2106 | break; | ||
2107 | } | ||
2108 | /* fall through */ | ||
2109 | default: /* f71858fg / f71882fg */ | ||
2110 | err = f71882fg_create_sysfs_files(pdev, | 2115 | err = f71882fg_create_sysfs_files(pdev, |
2111 | &fxxxx_auto_pwm_attr[0][0], | 2116 | &fxxxx_auto_pwm_attr[0][0], |
2112 | ARRAY_SIZE(fxxxx_auto_pwm_attr[0]) * nr_fans); | 2117 | ARRAY_SIZE(fxxxx_auto_pwm_attr[0]) * nr_fans); |
@@ -2114,6 +2119,7 @@ static int __devinit f71882fg_probe(struct platform_device *pdev) | |||
2114 | if (err) | 2119 | if (err) |
2115 | goto exit_unregister_sysfs; | 2120 | goto exit_unregister_sysfs; |
2116 | 2121 | ||
2122 | no_pwm_auto_point: | ||
2117 | for (i = 0; i < nr_fans; i++) | 2123 | for (i = 0; i < nr_fans; i++) |
2118 | dev_info(&pdev->dev, "Fan: %d is in %s mode\n", i + 1, | 2124 | dev_info(&pdev->dev, "Fan: %d is in %s mode\n", i + 1, |
2119 | (data->pwm_enable & (1 << 2 * i)) ? | 2125 | (data->pwm_enable & (1 << 2 * i)) ? |