diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-02 17:48:26 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-02 17:48:26 -0400 |
commit | 19127af9d81f0fcecc3e54fab64b7a7f2f91a92b (patch) | |
tree | 95f4f3746d26e177583ad125d0f9a9c78646865d | |
parent | 799b63a4b058c6a48dc6805daad81ba66002c48c (diff) | |
parent | 347d7e45bd09ce09cbc30d5cea9de377eb22f55c (diff) |
Merge tag 'hwmon-for-linus-v4.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
Pull hwmon fixes from Guenter Roeck:
"Two patches headed for stable:
- Fix broken output scaling in mcp3021 driver
- Fix attribute visibility in nct7802 driver
One regression:
- Fix name attribute in dell-smm-hwmon driver"
* tag 'hwmon-for-linus-v4.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
hwmon: (mcp3021) Fix broken output scaling
hwmon: (nct7802) fix visibility of temp3
hwmon: (dell-smm-hwmon) Use a valid name attribute
-rw-r--r-- | drivers/hwmon/dell-smm-hwmon.c | 2 | ||||
-rw-r--r-- | drivers/hwmon/mcp3021.c | 14 | ||||
-rw-r--r-- | drivers/hwmon/nct7802.c | 2 |
3 files changed, 3 insertions, 15 deletions
diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c index 2a808822af21..37c16afe007a 100644 --- a/drivers/hwmon/dell-smm-hwmon.c +++ b/drivers/hwmon/dell-smm-hwmon.c | |||
@@ -777,7 +777,7 @@ static int __init i8k_init_hwmon(void) | |||
777 | if (err >= 0) | 777 | if (err >= 0) |
778 | i8k_hwmon_flags |= I8K_HWMON_HAVE_FAN2; | 778 | i8k_hwmon_flags |= I8K_HWMON_HAVE_FAN2; |
779 | 779 | ||
780 | i8k_hwmon_dev = hwmon_device_register_with_groups(NULL, "dell-smm", | 780 | i8k_hwmon_dev = hwmon_device_register_with_groups(NULL, "dell_smm", |
781 | NULL, i8k_groups); | 781 | NULL, i8k_groups); |
782 | if (IS_ERR(i8k_hwmon_dev)) { | 782 | if (IS_ERR(i8k_hwmon_dev)) { |
783 | err = PTR_ERR(i8k_hwmon_dev); | 783 | err = PTR_ERR(i8k_hwmon_dev); |
diff --git a/drivers/hwmon/mcp3021.c b/drivers/hwmon/mcp3021.c index d219c06a857b..972444a14cca 100644 --- a/drivers/hwmon/mcp3021.c +++ b/drivers/hwmon/mcp3021.c | |||
@@ -31,14 +31,11 @@ | |||
31 | /* output format */ | 31 | /* output format */ |
32 | #define MCP3021_SAR_SHIFT 2 | 32 | #define MCP3021_SAR_SHIFT 2 |
33 | #define MCP3021_SAR_MASK 0x3ff | 33 | #define MCP3021_SAR_MASK 0x3ff |
34 | |||
35 | #define MCP3021_OUTPUT_RES 10 /* 10-bit resolution */ | 34 | #define MCP3021_OUTPUT_RES 10 /* 10-bit resolution */ |
36 | #define MCP3021_OUTPUT_SCALE 4 | ||
37 | 35 | ||
38 | #define MCP3221_SAR_SHIFT 0 | 36 | #define MCP3221_SAR_SHIFT 0 |
39 | #define MCP3221_SAR_MASK 0xfff | 37 | #define MCP3221_SAR_MASK 0xfff |
40 | #define MCP3221_OUTPUT_RES 12 /* 12-bit resolution */ | 38 | #define MCP3221_OUTPUT_RES 12 /* 12-bit resolution */ |
41 | #define MCP3221_OUTPUT_SCALE 1 | ||
42 | 39 | ||
43 | enum chips { | 40 | enum chips { |
44 | mcp3021, | 41 | mcp3021, |
@@ -54,7 +51,6 @@ struct mcp3021_data { | |||
54 | u16 sar_shift; | 51 | u16 sar_shift; |
55 | u16 sar_mask; | 52 | u16 sar_mask; |
56 | u8 output_res; | 53 | u8 output_res; |
57 | u8 output_scale; | ||
58 | }; | 54 | }; |
59 | 55 | ||
60 | static int mcp3021_read16(struct i2c_client *client) | 56 | static int mcp3021_read16(struct i2c_client *client) |
@@ -84,13 +80,7 @@ static int mcp3021_read16(struct i2c_client *client) | |||
84 | 80 | ||
85 | static inline u16 volts_from_reg(struct mcp3021_data *data, u16 val) | 81 | static inline u16 volts_from_reg(struct mcp3021_data *data, u16 val) |
86 | { | 82 | { |
87 | if (val == 0) | 83 | return DIV_ROUND_CLOSEST(data->vdd * val, 1 << data->output_res); |
88 | return 0; | ||
89 | |||
90 | val = val * data->output_scale - data->output_scale / 2; | ||
91 | |||
92 | return val * DIV_ROUND_CLOSEST(data->vdd, | ||
93 | (1 << data->output_res) * data->output_scale); | ||
94 | } | 84 | } |
95 | 85 | ||
96 | static ssize_t show_in_input(struct device *dev, struct device_attribute *attr, | 86 | static ssize_t show_in_input(struct device *dev, struct device_attribute *attr, |
@@ -132,14 +122,12 @@ static int mcp3021_probe(struct i2c_client *client, | |||
132 | data->sar_shift = MCP3021_SAR_SHIFT; | 122 | data->sar_shift = MCP3021_SAR_SHIFT; |
133 | data->sar_mask = MCP3021_SAR_MASK; | 123 | data->sar_mask = MCP3021_SAR_MASK; |
134 | data->output_res = MCP3021_OUTPUT_RES; | 124 | data->output_res = MCP3021_OUTPUT_RES; |
135 | data->output_scale = MCP3021_OUTPUT_SCALE; | ||
136 | break; | 125 | break; |
137 | 126 | ||
138 | case mcp3221: | 127 | case mcp3221: |
139 | data->sar_shift = MCP3221_SAR_SHIFT; | 128 | data->sar_shift = MCP3221_SAR_SHIFT; |
140 | data->sar_mask = MCP3221_SAR_MASK; | 129 | data->sar_mask = MCP3221_SAR_MASK; |
141 | data->output_res = MCP3221_OUTPUT_RES; | 130 | data->output_res = MCP3221_OUTPUT_RES; |
142 | data->output_scale = MCP3221_OUTPUT_SCALE; | ||
143 | break; | 131 | break; |
144 | } | 132 | } |
145 | 133 | ||
diff --git a/drivers/hwmon/nct7802.c b/drivers/hwmon/nct7802.c index 55765790907b..28fcb2e246d5 100644 --- a/drivers/hwmon/nct7802.c +++ b/drivers/hwmon/nct7802.c | |||
@@ -547,7 +547,7 @@ static umode_t nct7802_temp_is_visible(struct kobject *kobj, | |||
547 | if (index >= 9 && index < 18 && | 547 | if (index >= 9 && index < 18 && |
548 | (reg & 0x0c) != 0x04 && (reg & 0x0c) != 0x08) /* RD2 */ | 548 | (reg & 0x0c) != 0x04 && (reg & 0x0c) != 0x08) /* RD2 */ |
549 | return 0; | 549 | return 0; |
550 | if (index >= 18 && index < 27 && (reg & 0x30) != 0x10) /* RD3 */ | 550 | if (index >= 18 && index < 27 && (reg & 0x30) != 0x20) /* RD3 */ |
551 | return 0; | 551 | return 0; |
552 | if (index >= 27 && index < 35) /* local */ | 552 | if (index >= 27 && index < 35) /* local */ |
553 | return attr->mode; | 553 | return attr->mode; |