diff options
Diffstat (limited to 'drivers/hwmon')
| -rw-r--r-- | drivers/hwmon/adt7475.c | 17 | ||||
| -rw-r--r-- | drivers/hwmon/dme1737.c | 29 | ||||
| -rw-r--r-- | drivers/hwmon/fschmd.c | 2 | ||||
| -rw-r--r-- | drivers/hwmon/hp_accel.c | 5 | ||||
| -rw-r--r-- | drivers/hwmon/it87.c | 5 | ||||
| -rw-r--r-- | drivers/hwmon/s3c-hwmon.c | 11 |
6 files changed, 48 insertions, 21 deletions
diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c index d39877a7da63..b5a95193c694 100644 --- a/drivers/hwmon/adt7475.c +++ b/drivers/hwmon/adt7475.c | |||
| @@ -350,8 +350,7 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *attr, | |||
| 350 | 350 | ||
| 351 | case FAULT: | 351 | case FAULT: |
| 352 | /* Note - only for remote1 and remote2 */ | 352 | /* Note - only for remote1 and remote2 */ |
| 353 | out = data->alarms & (sattr->index ? 0x8000 : 0x4000); | 353 | out = !!(data->alarms & (sattr->index ? 0x8000 : 0x4000)); |
| 354 | out = out ? 0 : 1; | ||
| 355 | break; | 354 | break; |
| 356 | 355 | ||
| 357 | default: | 356 | default: |
| @@ -863,7 +862,7 @@ static SENSOR_DEVICE_ATTR_2(pwm1_freq, S_IRUGO | S_IWUSR, show_pwmfreq, | |||
| 863 | set_pwmfreq, INPUT, 0); | 862 | set_pwmfreq, INPUT, 0); |
| 864 | static SENSOR_DEVICE_ATTR_2(pwm1_enable, S_IRUGO | S_IWUSR, show_pwmctrl, | 863 | static SENSOR_DEVICE_ATTR_2(pwm1_enable, S_IRUGO | S_IWUSR, show_pwmctrl, |
| 865 | set_pwmctrl, INPUT, 0); | 864 | set_pwmctrl, INPUT, 0); |
| 866 | static SENSOR_DEVICE_ATTR_2(pwm1_auto_channel_temp, S_IRUGO | S_IWUSR, | 865 | static SENSOR_DEVICE_ATTR_2(pwm1_auto_channels_temp, S_IRUGO | S_IWUSR, |
| 867 | show_pwmchan, set_pwmchan, INPUT, 0); | 866 | show_pwmchan, set_pwmchan, INPUT, 0); |
| 868 | static SENSOR_DEVICE_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, | 867 | static SENSOR_DEVICE_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, |
| 869 | set_pwm, MIN, 0); | 868 | set_pwm, MIN, 0); |
| @@ -875,7 +874,7 @@ static SENSOR_DEVICE_ATTR_2(pwm2_freq, S_IRUGO | S_IWUSR, show_pwmfreq, | |||
| 875 | set_pwmfreq, INPUT, 1); | 874 | set_pwmfreq, INPUT, 1); |
| 876 | static SENSOR_DEVICE_ATTR_2(pwm2_enable, S_IRUGO | S_IWUSR, show_pwmctrl, | 875 | static SENSOR_DEVICE_ATTR_2(pwm2_enable, S_IRUGO | S_IWUSR, show_pwmctrl, |
| 877 | set_pwmctrl, INPUT, 1); | 876 | set_pwmctrl, INPUT, 1); |
| 878 | static SENSOR_DEVICE_ATTR_2(pwm2_auto_channel_temp, S_IRUGO | S_IWUSR, | 877 | static SENSOR_DEVICE_ATTR_2(pwm2_auto_channels_temp, S_IRUGO | S_IWUSR, |
| 879 | show_pwmchan, set_pwmchan, INPUT, 1); | 878 | show_pwmchan, set_pwmchan, INPUT, 1); |
| 880 | static SENSOR_DEVICE_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, | 879 | static SENSOR_DEVICE_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, |
| 881 | set_pwm, MIN, 1); | 880 | set_pwm, MIN, 1); |
| @@ -887,7 +886,7 @@ static SENSOR_DEVICE_ATTR_2(pwm3_freq, S_IRUGO | S_IWUSR, show_pwmfreq, | |||
| 887 | set_pwmfreq, INPUT, 2); | 886 | set_pwmfreq, INPUT, 2); |
| 888 | static SENSOR_DEVICE_ATTR_2(pwm3_enable, S_IRUGO | S_IWUSR, show_pwmctrl, | 887 | static SENSOR_DEVICE_ATTR_2(pwm3_enable, S_IRUGO | S_IWUSR, show_pwmctrl, |
| 889 | set_pwmctrl, INPUT, 2); | 888 | set_pwmctrl, INPUT, 2); |
| 890 | static SENSOR_DEVICE_ATTR_2(pwm3_auto_channel_temp, S_IRUGO | S_IWUSR, | 889 | static SENSOR_DEVICE_ATTR_2(pwm3_auto_channels_temp, S_IRUGO | S_IWUSR, |
| 891 | show_pwmchan, set_pwmchan, INPUT, 2); | 890 | show_pwmchan, set_pwmchan, INPUT, 2); |
| 892 | static SENSOR_DEVICE_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, | 891 | static SENSOR_DEVICE_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, |
| 893 | set_pwm, MIN, 2); | 892 | set_pwm, MIN, 2); |
| @@ -947,19 +946,19 @@ static struct attribute *adt7475_attrs[] = { | |||
| 947 | &sensor_dev_attr_pwm1.dev_attr.attr, | 946 | &sensor_dev_attr_pwm1.dev_attr.attr, |
| 948 | &sensor_dev_attr_pwm1_freq.dev_attr.attr, | 947 | &sensor_dev_attr_pwm1_freq.dev_attr.attr, |
| 949 | &sensor_dev_attr_pwm1_enable.dev_attr.attr, | 948 | &sensor_dev_attr_pwm1_enable.dev_attr.attr, |
| 950 | &sensor_dev_attr_pwm1_auto_channel_temp.dev_attr.attr, | 949 | &sensor_dev_attr_pwm1_auto_channels_temp.dev_attr.attr, |
| 951 | &sensor_dev_attr_pwm1_auto_point1_pwm.dev_attr.attr, | 950 | &sensor_dev_attr_pwm1_auto_point1_pwm.dev_attr.attr, |
| 952 | &sensor_dev_attr_pwm1_auto_point2_pwm.dev_attr.attr, | 951 | &sensor_dev_attr_pwm1_auto_point2_pwm.dev_attr.attr, |
| 953 | &sensor_dev_attr_pwm2.dev_attr.attr, | 952 | &sensor_dev_attr_pwm2.dev_attr.attr, |
| 954 | &sensor_dev_attr_pwm2_freq.dev_attr.attr, | 953 | &sensor_dev_attr_pwm2_freq.dev_attr.attr, |
| 955 | &sensor_dev_attr_pwm2_enable.dev_attr.attr, | 954 | &sensor_dev_attr_pwm2_enable.dev_attr.attr, |
| 956 | &sensor_dev_attr_pwm2_auto_channel_temp.dev_attr.attr, | 955 | &sensor_dev_attr_pwm2_auto_channels_temp.dev_attr.attr, |
| 957 | &sensor_dev_attr_pwm2_auto_point1_pwm.dev_attr.attr, | 956 | &sensor_dev_attr_pwm2_auto_point1_pwm.dev_attr.attr, |
| 958 | &sensor_dev_attr_pwm2_auto_point2_pwm.dev_attr.attr, | 957 | &sensor_dev_attr_pwm2_auto_point2_pwm.dev_attr.attr, |
| 959 | &sensor_dev_attr_pwm3.dev_attr.attr, | 958 | &sensor_dev_attr_pwm3.dev_attr.attr, |
| 960 | &sensor_dev_attr_pwm3_freq.dev_attr.attr, | 959 | &sensor_dev_attr_pwm3_freq.dev_attr.attr, |
| 961 | &sensor_dev_attr_pwm3_enable.dev_attr.attr, | 960 | &sensor_dev_attr_pwm3_enable.dev_attr.attr, |
| 962 | &sensor_dev_attr_pwm3_auto_channel_temp.dev_attr.attr, | 961 | &sensor_dev_attr_pwm3_auto_channels_temp.dev_attr.attr, |
| 963 | &sensor_dev_attr_pwm3_auto_point1_pwm.dev_attr.attr, | 962 | &sensor_dev_attr_pwm3_auto_point1_pwm.dev_attr.attr, |
| 964 | &sensor_dev_attr_pwm3_auto_point2_pwm.dev_attr.attr, | 963 | &sensor_dev_attr_pwm3_auto_point2_pwm.dev_attr.attr, |
| 965 | NULL, | 964 | NULL, |
| @@ -1152,7 +1151,7 @@ static struct adt7475_data *adt7475_update_device(struct device *dev) | |||
| 1152 | } | 1151 | } |
| 1153 | 1152 | ||
| 1154 | /* Limits and settings, should never change update every 60 seconds */ | 1153 | /* Limits and settings, should never change update every 60 seconds */ |
| 1155 | if (time_after(jiffies, data->limits_updated + HZ * 2) || | 1154 | if (time_after(jiffies, data->limits_updated + HZ * 60) || |
| 1156 | !data->valid) { | 1155 | !data->valid) { |
| 1157 | data->config5 = adt7475_read(REG_CONFIG5); | 1156 | data->config5 = adt7475_read(REG_CONFIG5); |
| 1158 | 1157 | ||
diff --git a/drivers/hwmon/dme1737.c b/drivers/hwmon/dme1737.c index 2c2cb1ec94c5..27d62574284f 100644 --- a/drivers/hwmon/dme1737.c +++ b/drivers/hwmon/dme1737.c | |||
| @@ -572,7 +572,7 @@ static struct dme1737_data *dme1737_update_device(struct device *dev) | |||
| 572 | 572 | ||
| 573 | /* Sample register contents every 1 sec */ | 573 | /* Sample register contents every 1 sec */ |
| 574 | if (time_after(jiffies, data->last_update + HZ) || !data->valid) { | 574 | if (time_after(jiffies, data->last_update + HZ) || !data->valid) { |
| 575 | if (data->type != sch5027) { | 575 | if (data->type == dme1737) { |
| 576 | data->vid = dme1737_read(data, DME1737_REG_VID) & | 576 | data->vid = dme1737_read(data, DME1737_REG_VID) & |
| 577 | 0x3f; | 577 | 0x3f; |
| 578 | } | 578 | } |
| @@ -1621,9 +1621,6 @@ static struct attribute *dme1737_misc_attr[] = { | |||
| 1621 | &sensor_dev_attr_zone1_auto_point1_temp_hyst.dev_attr.attr, | 1621 | &sensor_dev_attr_zone1_auto_point1_temp_hyst.dev_attr.attr, |
| 1622 | &sensor_dev_attr_zone2_auto_point1_temp_hyst.dev_attr.attr, | 1622 | &sensor_dev_attr_zone2_auto_point1_temp_hyst.dev_attr.attr, |
| 1623 | &sensor_dev_attr_zone3_auto_point1_temp_hyst.dev_attr.attr, | 1623 | &sensor_dev_attr_zone3_auto_point1_temp_hyst.dev_attr.attr, |
| 1624 | /* Misc */ | ||
| 1625 | &dev_attr_vrm.attr, | ||
| 1626 | &dev_attr_cpu0_vid.attr, | ||
| 1627 | NULL | 1624 | NULL |
| 1628 | }; | 1625 | }; |
| 1629 | 1626 | ||
| @@ -1631,6 +1628,18 @@ static const struct attribute_group dme1737_misc_group = { | |||
| 1631 | .attrs = dme1737_misc_attr, | 1628 | .attrs = dme1737_misc_attr, |
| 1632 | }; | 1629 | }; |
| 1633 | 1630 | ||
| 1631 | /* The following struct holds VID-related attributes. Their creation | ||
| 1632 | depends on the chip type which is determined during module load. */ | ||
| 1633 | static struct attribute *dme1737_vid_attr[] = { | ||
| 1634 | &dev_attr_vrm.attr, | ||
| 1635 | &dev_attr_cpu0_vid.attr, | ||
| 1636 | NULL | ||
| 1637 | }; | ||
| 1638 | |||
| 1639 | static const struct attribute_group dme1737_vid_group = { | ||
| 1640 | .attrs = dme1737_vid_attr, | ||
| 1641 | }; | ||
| 1642 | |||
| 1634 | /* The following structs hold the PWM attributes, some of which are optional. | 1643 | /* The following structs hold the PWM attributes, some of which are optional. |
| 1635 | * Their creation depends on the chip configuration which is determined during | 1644 | * Their creation depends on the chip configuration which is determined during |
| 1636 | * module load. */ | 1645 | * module load. */ |
| @@ -1902,6 +1911,9 @@ static void dme1737_remove_files(struct device *dev) | |||
| 1902 | if (data->type != sch5027) { | 1911 | if (data->type != sch5027) { |
| 1903 | sysfs_remove_group(&dev->kobj, &dme1737_misc_group); | 1912 | sysfs_remove_group(&dev->kobj, &dme1737_misc_group); |
| 1904 | } | 1913 | } |
| 1914 | if (data->type == dme1737) { | ||
| 1915 | sysfs_remove_group(&dev->kobj, &dme1737_vid_group); | ||
| 1916 | } | ||
| 1905 | 1917 | ||
| 1906 | sysfs_remove_group(&dev->kobj, &dme1737_group); | 1918 | sysfs_remove_group(&dev->kobj, &dme1737_group); |
| 1907 | 1919 | ||
| @@ -1933,6 +1945,13 @@ static int dme1737_create_files(struct device *dev) | |||
| 1933 | goto exit_remove; | 1945 | goto exit_remove; |
| 1934 | } | 1946 | } |
| 1935 | 1947 | ||
| 1948 | /* Create VID-related sysfs attributes */ | ||
| 1949 | if ((data->type == dme1737) && | ||
| 1950 | (err = sysfs_create_group(&dev->kobj, | ||
| 1951 | &dme1737_vid_group))) { | ||
| 1952 | goto exit_remove; | ||
| 1953 | } | ||
| 1954 | |||
| 1936 | /* Create fan sysfs attributes */ | 1955 | /* Create fan sysfs attributes */ |
| 1937 | for (ix = 0; ix < ARRAY_SIZE(dme1737_fan_group); ix++) { | 1956 | for (ix = 0; ix < ARRAY_SIZE(dme1737_fan_group); ix++) { |
| 1938 | if (data->has_fan & (1 << ix)) { | 1957 | if (data->has_fan & (1 << ix)) { |
| @@ -2127,7 +2146,7 @@ static int dme1737_init_device(struct device *dev) | |||
| 2127 | data->pwm_acz[2] = 4; /* pwm3 -> zone3 */ | 2146 | data->pwm_acz[2] = 4; /* pwm3 -> zone3 */ |
| 2128 | 2147 | ||
| 2129 | /* Set VRM */ | 2148 | /* Set VRM */ |
| 2130 | if (data->type != sch5027) { | 2149 | if (data->type == dme1737) { |
| 2131 | data->vrm = vid_which_vrm(); | 2150 | data->vrm = vid_which_vrm(); |
| 2132 | } | 2151 | } |
| 2133 | 2152 | ||
diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c index 2a7a85a6dc36..da1b1f9488af 100644 --- a/drivers/hwmon/fschmd.c +++ b/drivers/hwmon/fschmd.c | |||
| @@ -819,7 +819,7 @@ static int watchdog_release(struct inode *inode, struct file *filp) | |||
| 819 | static ssize_t watchdog_write(struct file *filp, const char __user *buf, | 819 | static ssize_t watchdog_write(struct file *filp, const char __user *buf, |
| 820 | size_t count, loff_t *offset) | 820 | size_t count, loff_t *offset) |
| 821 | { | 821 | { |
| 822 | size_t ret; | 822 | int ret; |
| 823 | struct fschmd_data *data = filp->private_data; | 823 | struct fschmd_data *data = filp->private_data; |
| 824 | 824 | ||
| 825 | if (count) { | 825 | if (count) { |
diff --git a/drivers/hwmon/hp_accel.c b/drivers/hwmon/hp_accel.c index 6679854c85b0..be475e844c2a 100644 --- a/drivers/hwmon/hp_accel.c +++ b/drivers/hwmon/hp_accel.c | |||
| @@ -197,11 +197,13 @@ static struct dmi_system_id lis3lv02d_dmi_ids[] = { | |||
| 197 | AXIS_DMI_MATCH("HP2133", "HP 2133", xy_rotated_left), | 197 | AXIS_DMI_MATCH("HP2133", "HP 2133", xy_rotated_left), |
| 198 | AXIS_DMI_MATCH("HP2140", "HP 2140", xy_swap_inverted), | 198 | AXIS_DMI_MATCH("HP2140", "HP 2140", xy_swap_inverted), |
| 199 | AXIS_DMI_MATCH("NC653x", "HP Compaq 653", xy_rotated_left_usd), | 199 | AXIS_DMI_MATCH("NC653x", "HP Compaq 653", xy_rotated_left_usd), |
| 200 | AXIS_DMI_MATCH("NC673x", "HP Compaq 673", xy_rotated_left_usd), | 200 | AXIS_DMI_MATCH("NC6730b", "HP Compaq 6730b", xy_rotated_left_usd), |
| 201 | AXIS_DMI_MATCH("NC6730s", "HP Compaq 6730s", xy_swap), | ||
| 201 | AXIS_DMI_MATCH("NC651xx", "HP Compaq 651", xy_rotated_right), | 202 | AXIS_DMI_MATCH("NC651xx", "HP Compaq 651", xy_rotated_right), |
| 202 | AXIS_DMI_MATCH("NC6710x", "HP Compaq 6710", xy_swap_yz_inverted), | 203 | AXIS_DMI_MATCH("NC6710x", "HP Compaq 6710", xy_swap_yz_inverted), |
| 203 | AXIS_DMI_MATCH("NC6715x", "HP Compaq 6715", y_inverted), | 204 | AXIS_DMI_MATCH("NC6715x", "HP Compaq 6715", y_inverted), |
| 204 | AXIS_DMI_MATCH("NC693xx", "HP EliteBook 693", xy_rotated_right), | 205 | AXIS_DMI_MATCH("NC693xx", "HP EliteBook 693", xy_rotated_right), |
| 206 | AXIS_DMI_MATCH("NC693xx", "HP EliteBook 853", xy_swap), | ||
| 205 | /* Intel-based HP Pavilion dv5 */ | 207 | /* Intel-based HP Pavilion dv5 */ |
| 206 | AXIS_DMI_MATCH2("HPDV5_I", | 208 | AXIS_DMI_MATCH2("HPDV5_I", |
| 207 | PRODUCT_NAME, "HP Pavilion dv5", | 209 | PRODUCT_NAME, "HP Pavilion dv5", |
| @@ -214,6 +216,7 @@ static struct dmi_system_id lis3lv02d_dmi_ids[] = { | |||
| 214 | y_inverted), | 216 | y_inverted), |
| 215 | AXIS_DMI_MATCH("DV7", "HP Pavilion dv7", x_inverted), | 217 | AXIS_DMI_MATCH("DV7", "HP Pavilion dv7", x_inverted), |
| 216 | AXIS_DMI_MATCH("HP8710", "HP Compaq 8710", y_inverted), | 218 | AXIS_DMI_MATCH("HP8710", "HP Compaq 8710", y_inverted), |
| 219 | AXIS_DMI_MATCH("HDX18", "HP HDX 18", x_inverted), | ||
| 217 | { NULL, } | 220 | { NULL, } |
| 218 | /* Laptop models without axis info (yet): | 221 | /* Laptop models without axis info (yet): |
| 219 | * "NC6910" "HP Compaq 6910" | 222 | * "NC6910" "HP Compaq 6910" |
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c index ffeb2a10e1a7..a3749cb0f181 100644 --- a/drivers/hwmon/it87.c +++ b/drivers/hwmon/it87.c | |||
| @@ -1028,12 +1028,11 @@ static int __init it87_find(unsigned short *address, | |||
| 1028 | chip_type, *address, sio_data->revision); | 1028 | chip_type, *address, sio_data->revision); |
| 1029 | 1029 | ||
| 1030 | /* Read GPIO config and VID value from LDN 7 (GPIO) */ | 1030 | /* Read GPIO config and VID value from LDN 7 (GPIO) */ |
| 1031 | if (chip_type != IT8705F_DEVID) { | 1031 | if (sio_data->type != it87) { |
| 1032 | int reg; | 1032 | int reg; |
| 1033 | 1033 | ||
| 1034 | superio_select(GPIO); | 1034 | superio_select(GPIO); |
| 1035 | if ((chip_type == it8718) || | 1035 | if (sio_data->type == it8718 || sio_data->type == it8720) |
| 1036 | (chip_type == it8720)) | ||
| 1037 | sio_data->vid_value = superio_inb(IT87_SIO_VID_REG); | 1036 | sio_data->vid_value = superio_inb(IT87_SIO_VID_REG); |
| 1038 | 1037 | ||
| 1039 | reg = superio_inb(IT87_SIO_PINX2_REG); | 1038 | reg = superio_inb(IT87_SIO_PINX2_REG); |
diff --git a/drivers/hwmon/s3c-hwmon.c b/drivers/hwmon/s3c-hwmon.c index 3a524f2fe493..71835412529f 100644 --- a/drivers/hwmon/s3c-hwmon.c +++ b/drivers/hwmon/s3c-hwmon.c | |||
| @@ -323,14 +323,21 @@ static int __devinit s3c_hwmon_probe(struct platform_device *dev) | |||
| 323 | } | 323 | } |
| 324 | 324 | ||
| 325 | for (i = 0; i < ARRAY_SIZE(pdata->in); i++) { | 325 | for (i = 0; i < ARRAY_SIZE(pdata->in); i++) { |
| 326 | if (!pdata->in[i]) | 326 | struct s3c24xx_adc_hwmon_incfg *cfg = pdata->in[i]; |
| 327 | |||
| 328 | if (!cfg) | ||
| 327 | continue; | 329 | continue; |
| 328 | 330 | ||
| 329 | if (pdata->in[i]->mult >= 0x10000) | 331 | if (cfg->mult >= 0x10000) |
| 330 | dev_warn(&dev->dev, | 332 | dev_warn(&dev->dev, |
| 331 | "channel %d multiplier too large\n", | 333 | "channel %d multiplier too large\n", |
| 332 | i); | 334 | i); |
| 333 | 335 | ||
| 336 | if (cfg->divider == 0) { | ||
| 337 | dev_err(&dev->dev, "channel %d divider zero\n", i); | ||
| 338 | continue; | ||
| 339 | } | ||
| 340 | |||
| 334 | ret = s3c_hwmon_create_attr(&dev->dev, pdata->in[i], | 341 | ret = s3c_hwmon_create_attr(&dev->dev, pdata->in[i], |
| 335 | &hwmon->attrs[i], i); | 342 | &hwmon->attrs[i], i); |
| 336 | if (ret) { | 343 | if (ret) { |
