forked from luck/tmp_suning_uos_patched
hwmon updates for v5.1
Add support for LM96000, DPS-650AB to existing drivers Use permission specific SENSOR[_DEVICE]_ATTR variants in several drivers Replace S_<PERMS> with octal values in several drivers Update some license headers Various minor fixes and improvements in several drivers -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJcfTTYAAoJEMsfJm/On5mBXi4P/3ui/9BgGaLFpeDJyUoaRWdg bsWPvAaVXbWQL4NKg26GFGgheZ25H2d10V5ctbzu7FoteiRJ05Cs+duMCDHNfK6J ANqY1z8QXPt7y2OJDUldr9a8/p62wyjhcX6j4zIAehe8ofoCcYXwr6aDEi+6r74s brOI5aDDAsFeayVz3gaND+P3QR8Nh0dVclS01BqA5hFzrbeRLBkaSOkV3qVtfJAy yF+aSmzuAuNse+bQtiMguxavJITYSReTjHhqNn2xyhD+Mwv7tDoeU8GUBW66WSYb bAv3iRkikizlHsXZgmva7cHJt4vfIxHF3pxmrR4XxfDgU4FTWcJCGw2YBacdU93T /vi7ABV2eAGqKV/MhvMmNsCjT3IozlCKOtJOypownFLjEIefE5NdRKHKHoLcpspH 6z826WRCaxNq0sYDkBxowwR04Dv910RMQtcj+yZXC7Zc8sICVRL7/aeYZ0DMEc6w aZbsMEq62izI56Lq18ffezLWv3egbL47SPxZy8LcONLCrnzg26Jwm6pENCjQEbLs dxjbEYc1/0dJzw4p/mSazHs4JZOzKGCIKWqWTVvA/zWSxfu+KRYmgzoZY15oYj6g cVCdJp+sHdzA2igzVFS2qdxXIi9BBnKbh2EbkLqRyh96souGMNm7lTPKCrOt04qa u/o3aWGh+38IoU69u5aI =rJSN -----END PGP SIGNATURE----- Merge tag 'hwmon-for-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging Pull hwmon updates from Guenter Roeck: - Add support for LM96000, DPS-650AB to existing drivers - Use permission specific SENSOR[_DEVICE]_ATTR variants in several drivers - Replace S_<PERMS> with octal values in several drivers - Update some license headers - Various minor fixes and improvements in several drivers * tag 'hwmon-for-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (89 commits) dt-bindings: hwmon: Add missing documentation for lm75 hwmon: (ad7418) Add device tree probing hwmon: (ad741x) Add DT bindings for Analog Devices AD741x hwmon: (ntc_thermistor) Convert to new hwmon API hwmon: (pwm-fan) Add optional regulator support dt-bindings: hwmon: Add optional regulator support to pwm-fan hwmon: (f71882fg) Mark expected switch fall-through hwmon: (ad7418) Catch I2C errors hwmon: (lm85) add support for LM96000 high frequencies hwmon: (lm85) support the LM96000 dt-bindings: Add LM96000 as a trivial device hwmon: (lm85) remove freq_map size hardcodes hwmon: (occ) Fix license headers hwmon: (via-cputemp) Use permission specific SENSOR[_DEVICE]_ATTR variants hwmon: (vexpress-hwmon) Use permission specific SENSOR[_DEVICE]_ATTR variants hwmon: (tmp421) Replace S_<PERMS> with octal values hwmon: (tmp103) Use permission specific SENSOR[_DEVICE]_ATTR variants hwmon: (tmp102) Replace S_<PERMS> with octal values hwmon: (tc74) Use permission specific SENSOR[_DEVICE]_ATTR variants hwmon: (tc654) Use permission specific SENSOR[_DEVICE]_ATTR variants ...
This commit is contained in:
commit
7629bac642
15
Documentation/devicetree/bindings/hwmon/ad741x.txt
Normal file
15
Documentation/devicetree/bindings/hwmon/ad741x.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
* AD7416/AD7417/AD7418 Temperature Sensor Device Tree Bindings
|
||||
|
||||
Required properties:
|
||||
- compatible: one of
|
||||
"adi,ad7416"
|
||||
"adi,ad7417"
|
||||
"adi,ad7418"
|
||||
- reg: I2C address
|
||||
|
||||
Example:
|
||||
|
||||
hwmon@28 {
|
||||
compatible = "adi,ad7418";
|
||||
reg = <0x28>;
|
||||
};
|
11
Documentation/devicetree/bindings/hwmon/dps650ab.txt
Normal file
11
Documentation/devicetree/bindings/hwmon/dps650ab.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
Bindings for Delta Electronics DPS-650-AB power supply
|
||||
|
||||
Required properties:
|
||||
- compatible : "delta,dps650ab"
|
||||
- reg : I2C address, one of 0x58, 0x59.
|
||||
|
||||
Example:
|
||||
dps650ab@58 {
|
||||
compatible = "delta,dps650ab";
|
||||
reg = <0x58>;
|
||||
};
|
12
Documentation/devicetree/bindings/hwmon/hih6130.txt
Normal file
12
Documentation/devicetree/bindings/hwmon/hih6130.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
Honeywell Humidicon HIH-6130 humidity/temperature sensor
|
||||
--------------------------------------------------------
|
||||
|
||||
Requires node properties:
|
||||
- compatible : "honeywell,hi6130"
|
||||
- reg : the I2C address of the device. This is 0x27.
|
||||
|
||||
Example:
|
||||
hih6130@27 {
|
||||
compatible = "honeywell,hih6130";
|
||||
reg = <0x27>;
|
||||
};
|
|
@ -6,6 +6,16 @@ Texas Instruments INA3221 Device Tree Bindings
|
|||
- reg: I2C address
|
||||
|
||||
Optional properties:
|
||||
- ti,single-shot: This chip has two power modes: single-shot (chip takes one
|
||||
measurement and then shuts itself down) and continuous (
|
||||
chip takes continuous measurements). The continuous mode is
|
||||
more reliable and suitable for hardware monitor type device,
|
||||
but the single-shot mode is more power-friendly and useful
|
||||
for battery-powered device which cares power consumptions
|
||||
while still needs some measurements occasionally.
|
||||
If this property is present, the single-shot mode will be
|
||||
used, instead of the default continuous one for monitoring.
|
||||
|
||||
= The node contains optional child nodes for three channels =
|
||||
= Each child node describes the information of input source =
|
||||
|
||||
|
|
37
Documentation/devicetree/bindings/hwmon/lm75.txt
Normal file
37
Documentation/devicetree/bindings/hwmon/lm75.txt
Normal file
|
@ -0,0 +1,37 @@
|
|||
*LM75 hwmon sensor.
|
||||
|
||||
Required properties:
|
||||
- compatible: manufacturer and chip name, one of
|
||||
"adi,adt75",
|
||||
"dallas,ds1775",
|
||||
"dallas,ds75",
|
||||
"dallas,ds7505",
|
||||
"gmt,g751",
|
||||
"national,lm75",
|
||||
"national,lm75a",
|
||||
"national,lm75b",
|
||||
"maxim,max6625",
|
||||
"maxim,max6626",
|
||||
"maxim,max31725",
|
||||
"maxim,max31726",
|
||||
"maxim,mcp980x",
|
||||
"st,stds75",
|
||||
"st,stlm75",
|
||||
"microchip,tcn75",
|
||||
"ti,tmp100",
|
||||
"ti,tmp101",
|
||||
"ti,tmp105",
|
||||
"ti,tmp112",
|
||||
"ti,tmp175",
|
||||
"ti,tmp275",
|
||||
"ti,tmp75",
|
||||
"ti,tmp75c",
|
||||
|
||||
- reg: I2C bus address of the device
|
||||
|
||||
Example:
|
||||
|
||||
sensor@48 {
|
||||
compatible = "st,stlm75";
|
||||
reg = <0x48>;
|
||||
};
|
|
@ -6,6 +6,9 @@ Required properties:
|
|||
- cooling-levels : PWM duty cycle values in a range from 0 to 255
|
||||
which correspond to thermal cooling states
|
||||
|
||||
Optional properties:
|
||||
- fan-supply : phandle to the regulator that provides power to the fan
|
||||
|
||||
Example:
|
||||
fan0: pwm-fan {
|
||||
compatible = "pwm-fan";
|
||||
|
|
|
@ -322,6 +322,8 @@ properties:
|
|||
- ti,ads7830
|
||||
# Temperature Monitoring and Fan Control
|
||||
- ti,amc6821
|
||||
# Temperature sensor with integrated fan control
|
||||
- ti,lm96000
|
||||
# I2C Touch-Screen Controller
|
||||
- ti,tsc2003
|
||||
# Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface
|
||||
|
|
|
@ -3,9 +3,13 @@ Kernel driver lm85
|
|||
|
||||
Supported chips:
|
||||
* National Semiconductor LM85 (B and C versions)
|
||||
Prefix: 'lm85'
|
||||
Prefix: 'lm85b' or 'lm85c'
|
||||
Addresses scanned: I2C 0x2c, 0x2d, 0x2e
|
||||
Datasheet: http://www.national.com/pf/LM/LM85.html
|
||||
* Texas Instruments LM96000
|
||||
Prefix: 'lm9600'
|
||||
Addresses scanned: I2C 0x2c, 0x2d, 0x2e
|
||||
Datasheet: http://www.ti.com/lit/ds/symlink/lm96000.pdf
|
||||
* Analog Devices ADM1027
|
||||
Prefix: 'adm1027'
|
||||
Addresses scanned: I2C 0x2c, 0x2d, 0x2e
|
||||
|
@ -136,6 +140,9 @@ of voltage and temperature channels.
|
|||
SMSC EMC6D103S is similar to EMC6D103, but does not support pwm#_auto_pwm_minctl
|
||||
and temp#_auto_temp_off.
|
||||
|
||||
The LM96000 supports additional high frequency PWM modes (22.5 kHz, 24 kHz,
|
||||
25.7 kHz, 27.7 kHz and 30 kHz), which can be configured on a per-PWM basis.
|
||||
|
||||
Hardware Configurations
|
||||
-----------------------
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include <linux/hwmon-sysfs.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
|
@ -54,10 +55,11 @@ struct ad7418_data {
|
|||
u16 in[4];
|
||||
};
|
||||
|
||||
static struct ad7418_data *ad7418_update_device(struct device *dev)
|
||||
static int ad7418_update_device(struct device *dev)
|
||||
{
|
||||
struct ad7418_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
s32 val;
|
||||
|
||||
mutex_lock(&data->lock);
|
||||
|
||||
|
@ -67,47 +69,74 @@ static struct ad7418_data *ad7418_update_device(struct device *dev)
|
|||
int i, ch;
|
||||
|
||||
/* read config register and clear channel bits */
|
||||
cfg = i2c_smbus_read_byte_data(client, AD7418_REG_CONF);
|
||||
val = i2c_smbus_read_byte_data(client, AD7418_REG_CONF);
|
||||
if (val < 0)
|
||||
goto abort;
|
||||
|
||||
cfg = val;
|
||||
cfg &= 0x1F;
|
||||
|
||||
i2c_smbus_write_byte_data(client, AD7418_REG_CONF,
|
||||
val = i2c_smbus_write_byte_data(client, AD7418_REG_CONF,
|
||||
cfg | AD7418_CH_TEMP);
|
||||
if (val < 0)
|
||||
goto abort;
|
||||
|
||||
udelay(30);
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
data->temp[i] =
|
||||
i2c_smbus_read_word_swapped(client,
|
||||
AD7418_REG_TEMP[i]);
|
||||
val = i2c_smbus_read_word_swapped(client,
|
||||
AD7418_REG_TEMP[i]);
|
||||
if (val < 0)
|
||||
goto abort;
|
||||
|
||||
data->temp[i] = val;
|
||||
}
|
||||
|
||||
for (i = 0, ch = 4; i < data->adc_max; i++, ch--) {
|
||||
i2c_smbus_write_byte_data(client,
|
||||
AD7418_REG_CONF,
|
||||
val = i2c_smbus_write_byte_data(client, AD7418_REG_CONF,
|
||||
cfg | AD7418_REG_ADC_CH(ch));
|
||||
if (val < 0)
|
||||
goto abort;
|
||||
|
||||
udelay(15);
|
||||
data->in[data->adc_max - 1 - i] =
|
||||
i2c_smbus_read_word_swapped(client,
|
||||
AD7418_REG_ADC);
|
||||
val = i2c_smbus_read_word_swapped(client,
|
||||
AD7418_REG_ADC);
|
||||
if (val < 0)
|
||||
goto abort;
|
||||
|
||||
data->in[data->adc_max - 1 - i] = val;
|
||||
}
|
||||
|
||||
/* restore old configuration value */
|
||||
i2c_smbus_write_word_swapped(client, AD7418_REG_CONF, cfg);
|
||||
val = i2c_smbus_write_word_swapped(client, AD7418_REG_CONF,
|
||||
cfg);
|
||||
if (val < 0)
|
||||
goto abort;
|
||||
|
||||
data->last_updated = jiffies;
|
||||
data->valid = 1;
|
||||
}
|
||||
|
||||
mutex_unlock(&data->lock);
|
||||
return 0;
|
||||
|
||||
return data;
|
||||
abort:
|
||||
data->valid = 0;
|
||||
mutex_unlock(&data->lock);
|
||||
return val;
|
||||
}
|
||||
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct ad7418_data *data = ad7418_update_device(dev);
|
||||
struct ad7418_data *data = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
ret = ad7418_update_device(dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return sprintf(buf, "%d\n",
|
||||
LM75_TEMP_FROM_REG(data->temp[attr->index]));
|
||||
}
|
||||
|
@ -116,7 +145,12 @@ static ssize_t adc_show(struct device *dev, struct device_attribute *devattr,
|
|||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct ad7418_data *data = ad7418_update_device(dev);
|
||||
struct ad7418_data *data = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
ret = ad7418_update_device(dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return sprintf(buf, "%d\n",
|
||||
((data->in[attr->index] >> 6) * 2500 + 512) / 1024);
|
||||
|
@ -220,7 +254,10 @@ static int ad7418_probe(struct i2c_client *client,
|
|||
|
||||
mutex_init(&data->lock);
|
||||
data->client = client;
|
||||
data->type = id->driver_data;
|
||||
if (dev->of_node)
|
||||
data->type = (enum chips)of_device_get_match_data(dev);
|
||||
else
|
||||
data->type = id->driver_data;
|
||||
|
||||
switch (data->type) {
|
||||
case ad7416:
|
||||
|
@ -258,9 +295,18 @@ static const struct i2c_device_id ad7418_id[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(i2c, ad7418_id);
|
||||
|
||||
static const struct of_device_id ad7418_dt_ids[] = {
|
||||
{ .compatible = "adi,ad7416", .data = (void *)ad7416, },
|
||||
{ .compatible = "adi,ad7417", .data = (void *)ad7417, },
|
||||
{ .compatible = "adi,ad7418", .data = (void *)ad7418, },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, ad7418_dt_ids);
|
||||
|
||||
static struct i2c_driver ad7418_driver = {
|
||||
.driver = {
|
||||
.name = "ad7418",
|
||||
.of_match_table = ad7418_dt_ids,
|
||||
},
|
||||
.probe = ad7418_probe,
|
||||
.id_table = ad7418_id,
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* adm1029.c - Part of lm_sensors, Linux kernel modules for hardware monitoring
|
||||
*
|
||||
|
@ -19,10 +20,6 @@
|
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
@ -111,7 +108,7 @@ static const u8 ADM1029_REG_FAN_DIV[] = {
|
|||
|
||||
struct adm1029_data {
|
||||
struct i2c_client *client;
|
||||
struct mutex update_lock;
|
||||
struct mutex update_lock; /* protect register access */
|
||||
char valid; /* zero until following fields are valid */
|
||||
unsigned long last_updated; /* in jiffies */
|
||||
|
||||
|
@ -134,8 +131,7 @@ static struct adm1029_data *adm1029_update_device(struct device *dev)
|
|||
* Use the "cache" Luke, don't recheck values
|
||||
* if there are already checked not a long time later
|
||||
*/
|
||||
if (time_after(jiffies, data->last_updated + HZ * 2)
|
||||
|| !data->valid) {
|
||||
if (time_after(jiffies, data->last_updated + HZ * 2) || !data->valid) {
|
||||
int nr;
|
||||
|
||||
dev_dbg(&client->dev, "Updating adm1029 data\n");
|
||||
|
@ -174,6 +170,7 @@ show_temp(struct device *dev, struct device_attribute *devattr, char *buf)
|
|||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct adm1029_data *data = adm1029_update_device(dev);
|
||||
|
||||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[attr->index]));
|
||||
}
|
||||
|
||||
|
@ -183,9 +180,10 @@ show_fan(struct device *dev, struct device_attribute *devattr, char *buf)
|
|||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct adm1029_data *data = adm1029_update_device(dev);
|
||||
u16 val;
|
||||
if (data->fan[attr->index] == 0
|
||||
|| (data->fan_div[attr->index] & 0xC0) == 0
|
||||
|| data->fan[attr->index] == 255) {
|
||||
|
||||
if (data->fan[attr->index] == 0 ||
|
||||
(data->fan_div[attr->index] & 0xC0) == 0 ||
|
||||
data->fan[attr->index] == 255) {
|
||||
return sprintf(buf, "0\n");
|
||||
}
|
||||
|
||||
|
@ -199,13 +197,14 @@ show_fan_div(struct device *dev, struct device_attribute *devattr, char *buf)
|
|||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct adm1029_data *data = adm1029_update_device(dev);
|
||||
|
||||
if ((data->fan_div[attr->index] & 0xC0) == 0)
|
||||
return sprintf(buf, "0\n");
|
||||
return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t set_fan_div(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf, size_t count)
|
||||
static ssize_t set_fan_div(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct adm1029_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -213,6 +212,7 @@ static ssize_t set_fan_div(struct device *dev,
|
|||
u8 reg;
|
||||
long val;
|
||||
int ret = kstrtol(buf, 10, &val);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
@ -253,32 +253,27 @@ static ssize_t set_fan_div(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
/*
|
||||
* Access rights on sysfs. S_IRUGO: Is Readable by User, Group and Others
|
||||
* S_IWUSR: Is Writable by User.
|
||||
*/
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp, NULL, 2);
|
||||
/* Access rights on sysfs. */
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, 0444, show_temp, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, 0444, show_temp, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_input, 0444, show_temp, NULL, 2);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO, show_temp, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max, S_IRUGO, show_temp, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp3_max, S_IRUGO, show_temp, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, 0444, show_temp, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max, 0444, show_temp, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp3_max, 0444, show_temp, NULL, 5);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, S_IRUGO, show_temp, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp2_min, S_IRUGO, show_temp, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(temp3_min, S_IRUGO, show_temp, NULL, 8);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, 0444, show_temp, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp2_min, 0444, show_temp, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(temp3_min, 0444, show_temp, NULL, 8);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, 0444, show_fan, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, 0444, show_fan, NULL, 1);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_min, S_IRUGO, show_fan, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan2_min, S_IRUGO, show_fan, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(fan1_min, 0444, show_fan, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan2_min, 0444, show_fan, NULL, 3);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_div, S_IRUGO | S_IWUSR,
|
||||
show_fan_div, set_fan_div, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_div, S_IRUGO | S_IWUSR,
|
||||
show_fan_div, set_fan_div, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_div, 0644, show_fan_div, set_fan_div, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_div, 0644, show_fan_div, set_fan_div, 1);
|
||||
|
||||
static struct attribute *adm1029_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
@ -327,10 +322,10 @@ static int adm1029_detect(struct i2c_client *client,
|
|||
temp_devices_installed = i2c_smbus_read_byte_data(client,
|
||||
ADM1029_REG_TEMP_DEVICES_INSTALLED);
|
||||
nb_fan_support = i2c_smbus_read_byte_data(client,
|
||||
ADM1029_REG_NB_FAN_SUPPORT);
|
||||
ADM1029_REG_NB_FAN_SUPPORT);
|
||||
/* 0x41 is Analog Devices */
|
||||
if (man_id != 0x41 || (temp_devices_installed & 0xf9) != 0x01
|
||||
|| nb_fan_support != 0x03)
|
||||
if (man_id != 0x41 || (temp_devices_installed & 0xf9) != 0x01 ||
|
||||
nb_fan_support != 0x03)
|
||||
return -ENODEV;
|
||||
|
||||
if ((chip_id & 0xF0) != 0x00) {
|
||||
|
|
|
@ -448,6 +448,7 @@ static const char *voltage_label(struct adt7462_data *data, int which)
|
|||
case 3:
|
||||
return "+1.5V";
|
||||
}
|
||||
/* fall through */
|
||||
case 2:
|
||||
if (!(data->pin_cfg[1] & ADT7462_PIN22_INPUT))
|
||||
return "+12V3";
|
||||
|
@ -505,6 +506,7 @@ static const char *voltage_label(struct adt7462_data *data, int which)
|
|||
case 3:
|
||||
return "+1.5";
|
||||
}
|
||||
/* fall through */
|
||||
case 11:
|
||||
if (data->pin_cfg[3] >> ADT7462_PIN28_SHIFT ==
|
||||
ADT7462_PIN28_VOLT &&
|
||||
|
@ -542,6 +544,7 @@ static int voltage_multiplier(struct adt7462_data *data, int which)
|
|||
case 3:
|
||||
return 7800;
|
||||
}
|
||||
/* fall through */
|
||||
case 2:
|
||||
if (!(data->pin_cfg[1] & ADT7462_PIN22_INPUT))
|
||||
return 62500;
|
||||
|
@ -599,6 +602,7 @@ static int voltage_multiplier(struct adt7462_data *data, int which)
|
|||
case 3:
|
||||
return 7800;
|
||||
}
|
||||
/* fall through */
|
||||
case 11:
|
||||
case 12:
|
||||
if (data->pin_cfg[3] >> ADT7462_PIN28_SHIFT ==
|
||||
|
|
|
@ -82,9 +82,15 @@ static bool disallow_fan_support;
|
|||
#define I8K_HWMON_HAVE_TEMP2 (1 << 1)
|
||||
#define I8K_HWMON_HAVE_TEMP3 (1 << 2)
|
||||
#define I8K_HWMON_HAVE_TEMP4 (1 << 3)
|
||||
#define I8K_HWMON_HAVE_FAN1 (1 << 4)
|
||||
#define I8K_HWMON_HAVE_FAN2 (1 << 5)
|
||||
#define I8K_HWMON_HAVE_FAN3 (1 << 6)
|
||||
#define I8K_HWMON_HAVE_TEMP5 (1 << 4)
|
||||
#define I8K_HWMON_HAVE_TEMP6 (1 << 5)
|
||||
#define I8K_HWMON_HAVE_TEMP7 (1 << 6)
|
||||
#define I8K_HWMON_HAVE_TEMP8 (1 << 7)
|
||||
#define I8K_HWMON_HAVE_TEMP9 (1 << 8)
|
||||
#define I8K_HWMON_HAVE_TEMP10 (1 << 9)
|
||||
#define I8K_HWMON_HAVE_FAN1 (1 << 10)
|
||||
#define I8K_HWMON_HAVE_FAN2 (1 << 11)
|
||||
#define I8K_HWMON_HAVE_FAN3 (1 << 12)
|
||||
|
||||
MODULE_AUTHOR("Massimo Dal Zotto (dz@debian.org)");
|
||||
MODULE_AUTHOR("Pali Rohár <pali.rohar@gmail.com>");
|
||||
|
@ -737,6 +743,18 @@ static SENSOR_DEVICE_ATTR_RO(temp3_input, i8k_hwmon_temp, 2);
|
|||
static SENSOR_DEVICE_ATTR_RO(temp3_label, i8k_hwmon_temp_label, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_input, i8k_hwmon_temp, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_label, i8k_hwmon_temp_label, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_input, i8k_hwmon_temp, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_label, i8k_hwmon_temp_label, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_input, i8k_hwmon_temp, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_label, i8k_hwmon_temp_label, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp7_input, i8k_hwmon_temp, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp7_label, i8k_hwmon_temp_label, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp8_input, i8k_hwmon_temp, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp8_label, i8k_hwmon_temp_label, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp9_input, i8k_hwmon_temp, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp9_label, i8k_hwmon_temp_label, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp10_input, i8k_hwmon_temp, 9);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp10_label, i8k_hwmon_temp_label, 9);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, i8k_hwmon_fan, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_label, i8k_hwmon_fan_label, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1, i8k_hwmon_pwm, 0);
|
||||
|
@ -756,15 +774,27 @@ static struct attribute *i8k_attrs[] = {
|
|||
&sensor_dev_attr_temp3_label.dev_attr.attr, /* 5 */
|
||||
&sensor_dev_attr_temp4_input.dev_attr.attr, /* 6 */
|
||||
&sensor_dev_attr_temp4_label.dev_attr.attr, /* 7 */
|
||||
&sensor_dev_attr_fan1_input.dev_attr.attr, /* 8 */
|
||||
&sensor_dev_attr_fan1_label.dev_attr.attr, /* 9 */
|
||||
&sensor_dev_attr_pwm1.dev_attr.attr, /* 10 */
|
||||
&sensor_dev_attr_fan2_input.dev_attr.attr, /* 11 */
|
||||
&sensor_dev_attr_fan2_label.dev_attr.attr, /* 12 */
|
||||
&sensor_dev_attr_pwm2.dev_attr.attr, /* 13 */
|
||||
&sensor_dev_attr_fan3_input.dev_attr.attr, /* 14 */
|
||||
&sensor_dev_attr_fan3_label.dev_attr.attr, /* 15 */
|
||||
&sensor_dev_attr_pwm3.dev_attr.attr, /* 16 */
|
||||
&sensor_dev_attr_temp5_input.dev_attr.attr, /* 8 */
|
||||
&sensor_dev_attr_temp5_label.dev_attr.attr, /* 9 */
|
||||
&sensor_dev_attr_temp6_input.dev_attr.attr, /* 10 */
|
||||
&sensor_dev_attr_temp6_label.dev_attr.attr, /* 11 */
|
||||
&sensor_dev_attr_temp7_input.dev_attr.attr, /* 12 */
|
||||
&sensor_dev_attr_temp7_label.dev_attr.attr, /* 13 */
|
||||
&sensor_dev_attr_temp8_input.dev_attr.attr, /* 14 */
|
||||
&sensor_dev_attr_temp8_label.dev_attr.attr, /* 15 */
|
||||
&sensor_dev_attr_temp9_input.dev_attr.attr, /* 16 */
|
||||
&sensor_dev_attr_temp9_label.dev_attr.attr, /* 17 */
|
||||
&sensor_dev_attr_temp10_input.dev_attr.attr, /* 18 */
|
||||
&sensor_dev_attr_temp10_label.dev_attr.attr, /* 19 */
|
||||
&sensor_dev_attr_fan1_input.dev_attr.attr, /* 20 */
|
||||
&sensor_dev_attr_fan1_label.dev_attr.attr, /* 21 */
|
||||
&sensor_dev_attr_pwm1.dev_attr.attr, /* 22 */
|
||||
&sensor_dev_attr_fan2_input.dev_attr.attr, /* 23 */
|
||||
&sensor_dev_attr_fan2_label.dev_attr.attr, /* 24 */
|
||||
&sensor_dev_attr_pwm2.dev_attr.attr, /* 25 */
|
||||
&sensor_dev_attr_fan3_input.dev_attr.attr, /* 26 */
|
||||
&sensor_dev_attr_fan3_label.dev_attr.attr, /* 27 */
|
||||
&sensor_dev_attr_pwm3.dev_attr.attr, /* 28 */
|
||||
NULL
|
||||
};
|
||||
|
||||
|
@ -788,13 +818,32 @@ static umode_t i8k_is_visible(struct kobject *kobj, struct attribute *attr,
|
|||
if (index >= 6 && index <= 7 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP4))
|
||||
return 0;
|
||||
if (index >= 8 && index <= 10 &&
|
||||
if (index >= 8 && index <= 9 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP5))
|
||||
return 0;
|
||||
if (index >= 10 && index <= 11 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP6))
|
||||
return 0;
|
||||
if (index >= 12 && index <= 13 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP7))
|
||||
return 0;
|
||||
if (index >= 14 && index <= 15 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP8))
|
||||
return 0;
|
||||
if (index >= 16 && index <= 17 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP9))
|
||||
return 0;
|
||||
if (index >= 18 && index <= 19 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP10))
|
||||
return 0;
|
||||
|
||||
if (index >= 20 && index <= 22 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_FAN1))
|
||||
return 0;
|
||||
if (index >= 11 && index <= 13 &&
|
||||
if (index >= 23 && index <= 25 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_FAN2))
|
||||
return 0;
|
||||
if (index >= 14 && index <= 16 &&
|
||||
if (index >= 26 && index <= 28 &&
|
||||
!(i8k_hwmon_flags & I8K_HWMON_HAVE_FAN3))
|
||||
return 0;
|
||||
|
||||
|
@ -827,6 +876,24 @@ static int __init i8k_init_hwmon(void)
|
|||
err = i8k_get_temp_type(3);
|
||||
if (err >= 0)
|
||||
i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP4;
|
||||
err = i8k_get_temp_type(4);
|
||||
if (err >= 0)
|
||||
i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP5;
|
||||
err = i8k_get_temp_type(5);
|
||||
if (err >= 0)
|
||||
i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP6;
|
||||
err = i8k_get_temp_type(6);
|
||||
if (err >= 0)
|
||||
i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP7;
|
||||
err = i8k_get_temp_type(7);
|
||||
if (err >= 0)
|
||||
i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP8;
|
||||
err = i8k_get_temp_type(8);
|
||||
if (err >= 0)
|
||||
i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP9;
|
||||
err = i8k_get_temp_type(9);
|
||||
if (err >= 0)
|
||||
i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP10;
|
||||
|
||||
/* First fan attributes, if fan status or type is OK */
|
||||
err = i8k_get_fan_status(0);
|
||||
|
|
|
@ -2455,7 +2455,7 @@ static int f71882fg_probe(struct platform_device *pdev)
|
|||
case f71869a:
|
||||
/* These always have signed auto point temps */
|
||||
data->auto_point_temp_signed = 1;
|
||||
/* Fall through to select correct fan/pwm reg bank! */
|
||||
/* Fall through - to select correct fan/pwm reg bank! */
|
||||
case f71889fg:
|
||||
case f71889ed:
|
||||
case f71889a:
|
||||
|
|
|
@ -264,7 +264,7 @@ show(RAW, alarms, alarms);
|
|||
show(BOOL, beep_enable, beep_enable);
|
||||
show(BEEP_MASK, beep_mask, beep_mask);
|
||||
|
||||
static ssize_t show_fan_input(struct device *dev,
|
||||
static ssize_t fan_input_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(attr)->index;
|
||||
|
@ -273,8 +273,8 @@ static ssize_t show_fan_input(struct device *dev,
|
|||
DIV_FROM_REG(data->fan_div[nr])));
|
||||
}
|
||||
|
||||
static ssize_t show_fan_min(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t fan_min_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(attr)->index;
|
||||
struct gl518_data *data = gl518_update_device(dev);
|
||||
|
@ -282,8 +282,8 @@ static ssize_t show_fan_min(struct device *dev,
|
|||
DIV_FROM_REG(data->fan_div[nr])));
|
||||
}
|
||||
|
||||
static ssize_t show_fan_div(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t fan_div_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(attr)->index;
|
||||
struct gl518_data *data = gl518_update_device(dev);
|
||||
|
@ -350,8 +350,9 @@ set_high(IN, in_max3, voltage_max[3], GL518_REG_VIN3_LIMIT);
|
|||
set_bits(BOOL, beep_enable, beep_enable, GL518_REG_CONF, 0x04, 2);
|
||||
set(BEEP_MASK, beep_mask, beep_mask, GL518_REG_ALARM);
|
||||
|
||||
static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_min_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct gl518_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -383,8 +384,9 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_div_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct gl518_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -427,40 +429,36 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input1, NULL);
|
||||
static DEVICE_ATTR(temp1_max, S_IWUSR|S_IRUGO, show_temp_max1, set_temp_max1);
|
||||
static DEVICE_ATTR(temp1_max_hyst, S_IWUSR|S_IRUGO,
|
||||
show_temp_hyst1, set_temp_hyst1);
|
||||
static DEVICE_ATTR(fan1_auto, S_IWUSR|S_IRUGO, show_fan_auto1, set_fan_auto1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_min, S_IWUSR|S_IRUGO,
|
||||
show_fan_min, set_fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_min, S_IWUSR|S_IRUGO,
|
||||
show_fan_min, set_fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_div, S_IWUSR|S_IRUGO,
|
||||
show_fan_div, set_fan_div, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_div, S_IWUSR|S_IRUGO,
|
||||
show_fan_div, set_fan_div, 1);
|
||||
static DEVICE_ATTR(in0_input, S_IRUGO, show_in_input0, NULL);
|
||||
static DEVICE_ATTR(in1_input, S_IRUGO, show_in_input1, NULL);
|
||||
static DEVICE_ATTR(in2_input, S_IRUGO, show_in_input2, NULL);
|
||||
static DEVICE_ATTR(in3_input, S_IRUGO, show_in_input3, NULL);
|
||||
static DEVICE_ATTR(in0_min, S_IWUSR|S_IRUGO, show_in_min0, set_in_min0);
|
||||
static DEVICE_ATTR(in1_min, S_IWUSR|S_IRUGO, show_in_min1, set_in_min1);
|
||||
static DEVICE_ATTR(in2_min, S_IWUSR|S_IRUGO, show_in_min2, set_in_min2);
|
||||
static DEVICE_ATTR(in3_min, S_IWUSR|S_IRUGO, show_in_min3, set_in_min3);
|
||||
static DEVICE_ATTR(in0_max, S_IWUSR|S_IRUGO, show_in_max0, set_in_max0);
|
||||
static DEVICE_ATTR(in1_max, S_IWUSR|S_IRUGO, show_in_max1, set_in_max1);
|
||||
static DEVICE_ATTR(in2_max, S_IWUSR|S_IRUGO, show_in_max2, set_in_max2);
|
||||
static DEVICE_ATTR(in3_max, S_IWUSR|S_IRUGO, show_in_max3, set_in_max3);
|
||||
static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL);
|
||||
static DEVICE_ATTR(beep_enable, S_IWUSR|S_IRUGO,
|
||||
show_beep_enable, set_beep_enable);
|
||||
static DEVICE_ATTR(beep_mask, S_IWUSR|S_IRUGO,
|
||||
show_beep_mask, set_beep_mask);
|
||||
static DEVICE_ATTR(temp1_input, 0444, show_temp_input1, NULL);
|
||||
static DEVICE_ATTR(temp1_max, 0644, show_temp_max1, set_temp_max1);
|
||||
static DEVICE_ATTR(temp1_max_hyst, 0644,
|
||||
show_temp_hyst1, set_temp_hyst1);
|
||||
static DEVICE_ATTR(fan1_auto, 0644, show_fan_auto1, set_fan_auto1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, fan_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_input, fan_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_min, fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_min, fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_div, fan_div, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_div, fan_div, 1);
|
||||
static DEVICE_ATTR(in0_input, 0444, show_in_input0, NULL);
|
||||
static DEVICE_ATTR(in1_input, 0444, show_in_input1, NULL);
|
||||
static DEVICE_ATTR(in2_input, 0444, show_in_input2, NULL);
|
||||
static DEVICE_ATTR(in3_input, 0444, show_in_input3, NULL);
|
||||
static DEVICE_ATTR(in0_min, 0644, show_in_min0, set_in_min0);
|
||||
static DEVICE_ATTR(in1_min, 0644, show_in_min1, set_in_min1);
|
||||
static DEVICE_ATTR(in2_min, 0644, show_in_min2, set_in_min2);
|
||||
static DEVICE_ATTR(in3_min, 0644, show_in_min3, set_in_min3);
|
||||
static DEVICE_ATTR(in0_max, 0644, show_in_max0, set_in_max0);
|
||||
static DEVICE_ATTR(in1_max, 0644, show_in_max1, set_in_max1);
|
||||
static DEVICE_ATTR(in2_max, 0644, show_in_max2, set_in_max2);
|
||||
static DEVICE_ATTR(in3_max, 0644, show_in_max3, set_in_max3);
|
||||
static DEVICE_ATTR(alarms, 0444, show_alarms, NULL);
|
||||
static DEVICE_ATTR(beep_enable, 0644,
|
||||
show_beep_enable, set_beep_enable);
|
||||
static DEVICE_ATTR(beep_mask, 0644,
|
||||
show_beep_mask, set_beep_mask);
|
||||
|
||||
static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t alarm_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int bitnr = to_sensor_dev_attr(attr)->index;
|
||||
|
@ -468,24 +466,24 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%u\n", (data->alarms >> bitnr) & 1);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_alarm, S_IRUGO, show_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_alarm, S_IRUGO, show_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_alarm, S_IRUGO, show_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_alarm, S_IRUGO, show_alarm, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp1_alarm, S_IRUGO, show_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(fan1_alarm, S_IRUGO, show_alarm, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(fan2_alarm, S_IRUGO, show_alarm, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_alarm, alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_alarm, alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_alarm, alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_alarm, alarm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_alarm, alarm, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_alarm, alarm, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_alarm, alarm, 6);
|
||||
|
||||
static ssize_t show_beep(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t beep_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int bitnr = to_sensor_dev_attr(attr)->index;
|
||||
struct gl518_data *data = gl518_update_device(dev);
|
||||
return sprintf(buf, "%u\n", (data->beep_mask >> bitnr) & 1);
|
||||
}
|
||||
|
||||
static ssize_t set_beep(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t beep_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct gl518_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -511,13 +509,13 @@ static ssize_t set_beep(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_beep, S_IRUGO|S_IWUSR, show_beep, set_beep, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_beep, S_IRUGO|S_IWUSR, show_beep, set_beep, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_beep, S_IRUGO|S_IWUSR, show_beep, set_beep, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_beep, S_IRUGO|S_IWUSR, show_beep, set_beep, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp1_beep, S_IRUGO|S_IWUSR, show_beep, set_beep, 4);
|
||||
static SENSOR_DEVICE_ATTR(fan1_beep, S_IRUGO|S_IWUSR, show_beep, set_beep, 5);
|
||||
static SENSOR_DEVICE_ATTR(fan2_beep, S_IRUGO|S_IWUSR, show_beep, set_beep, 6);
|
||||
static SENSOR_DEVICE_ATTR_RW(in0_beep, beep, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_beep, beep, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(in2_beep, beep, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(in3_beep, beep, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_beep, beep, 4);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_beep, beep, 5);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_beep, beep, 6);
|
||||
|
||||
static struct attribute *gl518_attributes[] = {
|
||||
&dev_attr_in3_input.attr,
|
||||
|
|
|
@ -216,8 +216,8 @@ static DEVICE_ATTR_RO(cpu0_vid);
|
|||
#define IN_CLAMP(val) clamp_val(val, 0, 255 * 19)
|
||||
#define IN_TO_REG(val) DIV_ROUND_CLOSEST(IN_CLAMP(val), 19)
|
||||
|
||||
static ssize_t get_in_input(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t in_input_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int n = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -229,8 +229,8 @@ static ssize_t get_in_input(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", IN_FROM_REG(r));
|
||||
}
|
||||
|
||||
static ssize_t get_in_min(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t in_min_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int n = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -242,8 +242,8 @@ static ssize_t get_in_min(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", IN_FROM_REG(r));
|
||||
}
|
||||
|
||||
static ssize_t get_in_max(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t in_max_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int n = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -255,8 +255,8 @@ static ssize_t get_in_max(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", IN_FROM_REG(r));
|
||||
}
|
||||
|
||||
static ssize_t set_in_min(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t in_min_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct gl520_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -289,8 +289,8 @@ static ssize_t set_in_min(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t set_in_max(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t in_max_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct gl520_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -323,31 +323,21 @@ static ssize_t set_in_max(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, get_in_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, get_in_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, get_in_input, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, get_in_input, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(in4_input, S_IRUGO, get_in_input, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(in0_min, S_IRUGO | S_IWUSR,
|
||||
get_in_min, set_in_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_min, S_IRUGO | S_IWUSR,
|
||||
get_in_min, set_in_min, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_min, S_IRUGO | S_IWUSR,
|
||||
get_in_min, set_in_min, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_min, S_IRUGO | S_IWUSR,
|
||||
get_in_min, set_in_min, 3);
|
||||
static SENSOR_DEVICE_ATTR(in4_min, S_IRUGO | S_IWUSR,
|
||||
get_in_min, set_in_min, 4);
|
||||
static SENSOR_DEVICE_ATTR(in0_max, S_IRUGO | S_IWUSR,
|
||||
get_in_max, set_in_max, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_max, S_IRUGO | S_IWUSR,
|
||||
get_in_max, set_in_max, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_max, S_IRUGO | S_IWUSR,
|
||||
get_in_max, set_in_max, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_max, S_IRUGO | S_IWUSR,
|
||||
get_in_max, set_in_max, 3);
|
||||
static SENSOR_DEVICE_ATTR(in4_max, S_IRUGO | S_IWUSR,
|
||||
get_in_max, set_in_max, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_input, in_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, in_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, in_input, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_input, in_input, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_input, in_input, 4);
|
||||
static SENSOR_DEVICE_ATTR_RW(in0_min, in_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_min, in_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(in2_min, in_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(in3_min, in_min, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(in4_min, in_min, 4);
|
||||
static SENSOR_DEVICE_ATTR_RW(in0_max, in_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_max, in_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(in2_max, in_max, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(in3_max, in_max, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(in4_max, in_max, 4);
|
||||
|
||||
#define DIV_FROM_REG(val) (1 << (val))
|
||||
#define FAN_FROM_REG(val, div) ((val) == 0 ? 0 : (480000 / ((val) << (div))))
|
||||
|
@ -359,8 +349,8 @@ static SENSOR_DEVICE_ATTR(in4_max, S_IRUGO | S_IWUSR,
|
|||
DIV_ROUND_CLOSEST(480000, \
|
||||
FAN_CLAMP(val, div) << (div)))
|
||||
|
||||
static ssize_t get_fan_input(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t fan_input_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int n = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -369,8 +359,8 @@ static ssize_t get_fan_input(struct device *dev, struct device_attribute *attr,
|
|||
data->fan_div[n]));
|
||||
}
|
||||
|
||||
static ssize_t get_fan_min(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t fan_min_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int n = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -379,8 +369,8 @@ static ssize_t get_fan_min(struct device *dev, struct device_attribute *attr,
|
|||
data->fan_div[n]));
|
||||
}
|
||||
|
||||
static ssize_t get_fan_div(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t fan_div_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int n = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -395,8 +385,9 @@ static ssize_t fan1_off_show(struct device *dev,
|
|||
return sprintf(buf, "%d\n", data->fan_off);
|
||||
}
|
||||
|
||||
static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_min_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct gl520_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -434,8 +425,9 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_div_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct gl520_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -508,24 +500,20 @@ static ssize_t fan1_off_store(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, get_fan_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, get_fan_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_min, S_IRUGO | S_IWUSR,
|
||||
get_fan_min, set_fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_min, S_IRUGO | S_IWUSR,
|
||||
get_fan_min, set_fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_div, S_IRUGO | S_IWUSR,
|
||||
get_fan_div, set_fan_div, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_div, S_IRUGO | S_IWUSR,
|
||||
get_fan_div, set_fan_div, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, fan_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_input, fan_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_min, fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_min, fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_div, fan_div, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_div, fan_div, 1);
|
||||
static DEVICE_ATTR_RW(fan1_off);
|
||||
|
||||
#define TEMP_FROM_REG(val) (((val) - 130) * 1000)
|
||||
#define TEMP_CLAMP(val) clamp_val(val, -130000, 125000)
|
||||
#define TEMP_TO_REG(val) (DIV_ROUND_CLOSEST(TEMP_CLAMP(val), 1000) + 130)
|
||||
|
||||
static ssize_t get_temp_input(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t temp_input_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int n = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -533,8 +521,8 @@ static ssize_t get_temp_input(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_input[n]));
|
||||
}
|
||||
|
||||
static ssize_t get_temp_max(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t temp_max_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int n = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -542,8 +530,8 @@ static ssize_t get_temp_max(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_max[n]));
|
||||
}
|
||||
|
||||
static ssize_t get_temp_max_hyst(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t temp_max_hyst_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int n = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -551,8 +539,9 @@ static ssize_t get_temp_max_hyst(struct device *dev,
|
|||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_max_hyst[n]));
|
||||
}
|
||||
|
||||
static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_max_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct gl520_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -571,8 +560,9 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t set_temp_max_hyst(struct device *dev, struct device_attribute
|
||||
*attr, const char *buf, size_t count)
|
||||
static ssize_t temp_max_hyst_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct gl520_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -592,16 +582,12 @@ static ssize_t set_temp_max_hyst(struct device *dev, struct device_attribute
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, get_temp_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, get_temp_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO | S_IWUSR,
|
||||
get_temp_max, set_temp_max, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max, S_IRUGO | S_IWUSR,
|
||||
get_temp_max, set_temp_max, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IRUGO | S_IWUSR,
|
||||
get_temp_max_hyst, set_temp_max_hyst, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max_hyst, S_IRUGO | S_IWUSR,
|
||||
get_temp_max_hyst, set_temp_max_hyst, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, temp_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_max, temp_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max_hyst, temp_max_hyst, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_max_hyst, temp_max_hyst, 1);
|
||||
|
||||
static ssize_t alarms_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
|
@ -674,8 +660,8 @@ static DEVICE_ATTR_RO(alarms);
|
|||
static DEVICE_ATTR_RW(beep_enable);
|
||||
static DEVICE_ATTR_RW(beep_mask);
|
||||
|
||||
static ssize_t get_alarm(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t alarm_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int bit_nr = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -683,18 +669,18 @@ static ssize_t get_alarm(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", (data->alarms >> bit_nr) & 1);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_alarm, S_IRUGO, get_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_alarm, S_IRUGO, get_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_alarm, S_IRUGO, get_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_alarm, S_IRUGO, get_alarm, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp1_alarm, S_IRUGO, get_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(fan1_alarm, S_IRUGO, get_alarm, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(fan2_alarm, S_IRUGO, get_alarm, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp2_alarm, S_IRUGO, get_alarm, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(in4_alarm, S_IRUGO, get_alarm, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_alarm, alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_alarm, alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_alarm, alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_alarm, alarm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_alarm, alarm, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_alarm, alarm, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_alarm, alarm, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_alarm, alarm, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_alarm, alarm, 7);
|
||||
|
||||
static ssize_t get_beep(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t beep_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int bitnr = to_sensor_dev_attr(attr)->index;
|
||||
struct gl520_data *data = gl520_update_device(dev);
|
||||
|
@ -702,8 +688,8 @@ static ssize_t get_beep(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", (data->beep_mask >> bitnr) & 1);
|
||||
}
|
||||
|
||||
static ssize_t set_beep(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t beep_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct gl520_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -729,15 +715,15 @@ static ssize_t set_beep(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_beep, S_IRUGO | S_IWUSR, get_beep, set_beep, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_beep, S_IRUGO | S_IWUSR, get_beep, set_beep, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_beep, S_IRUGO | S_IWUSR, get_beep, set_beep, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_beep, S_IRUGO | S_IWUSR, get_beep, set_beep, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp1_beep, S_IRUGO | S_IWUSR, get_beep, set_beep, 4);
|
||||
static SENSOR_DEVICE_ATTR(fan1_beep, S_IRUGO | S_IWUSR, get_beep, set_beep, 5);
|
||||
static SENSOR_DEVICE_ATTR(fan2_beep, S_IRUGO | S_IWUSR, get_beep, set_beep, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp2_beep, S_IRUGO | S_IWUSR, get_beep, set_beep, 7);
|
||||
static SENSOR_DEVICE_ATTR(in4_beep, S_IRUGO | S_IWUSR, get_beep, set_beep, 7);
|
||||
static SENSOR_DEVICE_ATTR_RW(in0_beep, beep, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_beep, beep, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(in2_beep, beep, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(in3_beep, beep, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_beep, beep, 4);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_beep, beep, 5);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_beep, beep, 6);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_beep, beep, 7);
|
||||
static SENSOR_DEVICE_ATTR_RW(in4_beep, beep, 7);
|
||||
|
||||
static struct attribute *gl520_attributes[] = {
|
||||
&dev_attr_cpu0_vid.attr,
|
||||
|
|
|
@ -307,7 +307,7 @@ static DEVICE_ATTR_RO(pwm1_mode);
|
|||
static DEVICE_ATTR_RO(fan1_min);
|
||||
static DEVICE_ATTR_RO(fan1_max);
|
||||
static DEVICE_ATTR_RO(fan1_input);
|
||||
static DEVICE_ATTR(fan1_target, S_IRUGO | S_IWUSR, fan1_input_show, set_rpm);
|
||||
static DEVICE_ATTR(fan1_target, 0644, fan1_input_show, set_rpm);
|
||||
|
||||
static umode_t gpio_fan_is_visible(struct kobject *kobj,
|
||||
struct attribute *attr, int index)
|
||||
|
|
|
@ -171,7 +171,7 @@ static int hih6130_update_measurements(struct device *dev)
|
|||
* Will be called on read access to temp1_input sysfs attribute.
|
||||
* Returns number of bytes written into buffer, negative errno on error.
|
||||
*/
|
||||
static ssize_t hih6130_show_temperature(struct device *dev,
|
||||
static ssize_t hih6130_temperature_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
|
@ -193,7 +193,7 @@ static ssize_t hih6130_show_temperature(struct device *dev,
|
|||
* Will be called on read access to humidity1_input sysfs attribute.
|
||||
* Returns number of bytes written into buffer, negative errno on error.
|
||||
*/
|
||||
static ssize_t hih6130_show_humidity(struct device *dev,
|
||||
static ssize_t hih6130_humidity_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct hih6130 *hih6130 = dev_get_drvdata(dev);
|
||||
|
@ -206,10 +206,8 @@ static ssize_t hih6130_show_humidity(struct device *dev,
|
|||
}
|
||||
|
||||
/* sysfs attributes */
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, hih6130_show_temperature,
|
||||
NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_input, S_IRUGO, hih6130_show_humidity,
|
||||
NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, hih6130_temperature, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(humidity1_input, hih6130_humidity, 0);
|
||||
|
||||
static struct attribute *hih6130_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
@ -254,8 +252,17 @@ static const struct i2c_device_id hih6130_id[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(i2c, hih6130_id);
|
||||
|
||||
static const struct of_device_id hih6130_of_match[] = {
|
||||
{ .compatible = "honeywell,hih6130", },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, hih6130_of_match);
|
||||
|
||||
static struct i2c_driver hih6130_driver = {
|
||||
.driver.name = "hih6130",
|
||||
.driver = {
|
||||
.name = "hih6130",
|
||||
.of_match_table = of_match_ptr(hih6130_of_match),
|
||||
},
|
||||
.probe = hih6130_probe,
|
||||
.id_table = hih6130_id,
|
||||
};
|
||||
|
|
|
@ -278,10 +278,10 @@ static struct attribute *hwmon_genattr(struct device *dev,
|
|||
if (!mode)
|
||||
return ERR_PTR(-ENOENT);
|
||||
|
||||
if ((mode & S_IRUGO) && ((is_string && !ops->read_string) ||
|
||||
if ((mode & 0444) && ((is_string && !ops->read_string) ||
|
||||
(!is_string && !ops->read)))
|
||||
return ERR_PTR(-EINVAL);
|
||||
if ((mode & S_IWUGO) && !ops->write)
|
||||
if ((mode & 0222) && !ops->write)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
hattr = devm_kzalloc(dev, sizeof(*hattr), GFP_KERNEL);
|
||||
|
|
|
@ -58,7 +58,7 @@ static ssize_t temp1_input_show(struct device *dev,
|
|||
return sprintf(buf, "%ld\n", temp);
|
||||
}
|
||||
|
||||
static ssize_t show_thresh(struct device *dev,
|
||||
static ssize_t thresh_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(dev->parent);
|
||||
|
@ -72,7 +72,7 @@ static ssize_t show_thresh(struct device *dev,
|
|||
return sprintf(buf, "%ld\n", temp);
|
||||
}
|
||||
|
||||
static ssize_t show_alarm(struct device *dev,
|
||||
static ssize_t alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(dev->parent);
|
||||
|
@ -84,11 +84,11 @@ static ssize_t show_alarm(struct device *dev,
|
|||
}
|
||||
|
||||
static DEVICE_ATTR_RO(temp1_input);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO, show_thresh, NULL, 0xE2);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IRUGO, show_thresh, NULL, 0xEC);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO, show_thresh, NULL, 0xEE);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO, show_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit, thresh, 0xE2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_hyst, thresh, 0xEC);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max, thresh, 0xEE);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, alarm, 1);
|
||||
|
||||
static struct attribute *i5500_temp_attrs[] = {
|
||||
&dev_attr_temp1_input.attr,
|
||||
|
|
|
@ -296,7 +296,7 @@ static int i5k_amb_hwmon_init(struct platform_device *pdev)
|
|||
snprintf(iattr->name, AMB_SYSFS_NAME_LEN,
|
||||
"temp%d_label", d);
|
||||
iattr->s_attr.dev_attr.attr.name = iattr->name;
|
||||
iattr->s_attr.dev_attr.attr.mode = S_IRUGO;
|
||||
iattr->s_attr.dev_attr.attr.mode = 0444;
|
||||
iattr->s_attr.dev_attr.show = show_label;
|
||||
iattr->s_attr.index = k;
|
||||
sysfs_attr_init(&iattr->s_attr.dev_attr.attr);
|
||||
|
@ -311,7 +311,7 @@ static int i5k_amb_hwmon_init(struct platform_device *pdev)
|
|||
snprintf(iattr->name, AMB_SYSFS_NAME_LEN,
|
||||
"temp%d_input", d);
|
||||
iattr->s_attr.dev_attr.attr.name = iattr->name;
|
||||
iattr->s_attr.dev_attr.attr.mode = S_IRUGO;
|
||||
iattr->s_attr.dev_attr.attr.mode = 0444;
|
||||
iattr->s_attr.dev_attr.show = show_amb_temp;
|
||||
iattr->s_attr.index = k;
|
||||
sysfs_attr_init(&iattr->s_attr.dev_attr.attr);
|
||||
|
@ -326,7 +326,7 @@ static int i5k_amb_hwmon_init(struct platform_device *pdev)
|
|||
snprintf(iattr->name, AMB_SYSFS_NAME_LEN,
|
||||
"temp%d_min", d);
|
||||
iattr->s_attr.dev_attr.attr.name = iattr->name;
|
||||
iattr->s_attr.dev_attr.attr.mode = S_IWUSR | S_IRUGO;
|
||||
iattr->s_attr.dev_attr.attr.mode = 0644;
|
||||
iattr->s_attr.dev_attr.show = show_amb_min;
|
||||
iattr->s_attr.dev_attr.store = store_amb_min;
|
||||
iattr->s_attr.index = k;
|
||||
|
@ -342,7 +342,7 @@ static int i5k_amb_hwmon_init(struct platform_device *pdev)
|
|||
snprintf(iattr->name, AMB_SYSFS_NAME_LEN,
|
||||
"temp%d_mid", d);
|
||||
iattr->s_attr.dev_attr.attr.name = iattr->name;
|
||||
iattr->s_attr.dev_attr.attr.mode = S_IWUSR | S_IRUGO;
|
||||
iattr->s_attr.dev_attr.attr.mode = 0644;
|
||||
iattr->s_attr.dev_attr.show = show_amb_mid;
|
||||
iattr->s_attr.dev_attr.store = store_amb_mid;
|
||||
iattr->s_attr.index = k;
|
||||
|
@ -358,7 +358,7 @@ static int i5k_amb_hwmon_init(struct platform_device *pdev)
|
|||
snprintf(iattr->name, AMB_SYSFS_NAME_LEN,
|
||||
"temp%d_max", d);
|
||||
iattr->s_attr.dev_attr.attr.name = iattr->name;
|
||||
iattr->s_attr.dev_attr.attr.mode = S_IWUSR | S_IRUGO;
|
||||
iattr->s_attr.dev_attr.attr.mode = 0644;
|
||||
iattr->s_attr.dev_attr.show = show_amb_max;
|
||||
iattr->s_attr.dev_attr.store = store_amb_max;
|
||||
iattr->s_attr.index = k;
|
||||
|
@ -374,7 +374,7 @@ static int i5k_amb_hwmon_init(struct platform_device *pdev)
|
|||
snprintf(iattr->name, AMB_SYSFS_NAME_LEN,
|
||||
"temp%d_alarm", d);
|
||||
iattr->s_attr.dev_attr.attr.name = iattr->name;
|
||||
iattr->s_attr.dev_attr.attr.mode = S_IRUGO;
|
||||
iattr->s_attr.dev_attr.attr.mode = 0444;
|
||||
iattr->s_attr.dev_attr.show = show_amb_alarm;
|
||||
iattr->s_attr.index = k;
|
||||
sysfs_attr_init(&iattr->s_attr.dev_attr.attr);
|
||||
|
|
|
@ -813,25 +813,24 @@ static void aem_bmc_gone(int iface)
|
|||
/* sysfs support functions */
|
||||
|
||||
/* AEM device name */
|
||||
static ssize_t show_name(struct device *dev, struct device_attribute *devattr,
|
||||
static ssize_t name_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct aem_data *data = dev_get_drvdata(dev);
|
||||
|
||||
return sprintf(buf, "%s%d\n", DRVNAME, data->ver_major);
|
||||
}
|
||||
static SENSOR_DEVICE_ATTR(name, S_IRUGO, show_name, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(name, name, 0);
|
||||
|
||||
/* AEM device version */
|
||||
static ssize_t show_version(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
static ssize_t version_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct aem_data *data = dev_get_drvdata(dev);
|
||||
|
||||
return sprintf(buf, "%d.%d\n", data->ver_major, data->ver_minor);
|
||||
}
|
||||
static SENSOR_DEVICE_ATTR(version, S_IRUGO, show_version, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(version, version, 0);
|
||||
|
||||
/* Display power use */
|
||||
static ssize_t aem_show_power(struct device *dev,
|
||||
|
@ -931,7 +930,7 @@ static int aem_register_sensors(struct aem_data *data,
|
|||
while (ro->label) {
|
||||
sysfs_attr_init(&sensors->dev_attr.attr);
|
||||
sensors->dev_attr.attr.name = ro->label;
|
||||
sensors->dev_attr.attr.mode = S_IRUGO;
|
||||
sensors->dev_attr.attr.mode = 0444;
|
||||
sensors->dev_attr.show = ro->show;
|
||||
sensors->index = ro->index;
|
||||
|
||||
|
@ -948,7 +947,7 @@ static int aem_register_sensors(struct aem_data *data,
|
|||
while (rw->label) {
|
||||
sysfs_attr_init(&sensors->dev_attr.attr);
|
||||
sensors->dev_attr.attr.name = rw->label;
|
||||
sensors->dev_attr.attr.mode = S_IRUGO | S_IWUSR;
|
||||
sensors->dev_attr.attr.mode = 0644;
|
||||
sensors->dev_attr.show = rw->show;
|
||||
sensors->dev_attr.store = rw->set;
|
||||
sensors->index = rw->index;
|
||||
|
|
|
@ -269,12 +269,12 @@ static struct ibmpex_bmc_data *get_bmc_data(int iface)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static ssize_t show_name(struct device *dev, struct device_attribute *devattr,
|
||||
static ssize_t name_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
return sprintf(buf, "%s\n", DRVNAME);
|
||||
}
|
||||
static SENSOR_DEVICE_ATTR(name, S_IRUGO, show_name, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(name, name, 0);
|
||||
|
||||
static ssize_t ibmpex_show_sensor(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
|
@ -289,10 +289,9 @@ static ssize_t ibmpex_show_sensor(struct device *dev,
|
|||
data->sensors[attr->index].values[attr->nr] * mult);
|
||||
}
|
||||
|
||||
static ssize_t ibmpex_reset_high_low(struct device *dev,
|
||||
static ssize_t ibmpex_high_low_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct ibmpex_bmc_data *data = dev_get_drvdata(dev);
|
||||
|
||||
|
@ -301,8 +300,7 @@ static ssize_t ibmpex_reset_high_low(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(reset_high_low, S_IWUSR, NULL,
|
||||
ibmpex_reset_high_low, 0);
|
||||
static SENSOR_DEVICE_ATTR_WO(reset_high_low, ibmpex_high_low, 0);
|
||||
|
||||
static int is_power_sensor(const char *sensor_id, int len)
|
||||
{
|
||||
|
@ -358,7 +356,7 @@ static int create_sensor(struct ibmpex_bmc_data *data, int type,
|
|||
|
||||
sysfs_attr_init(&data->sensors[sensor].attr[func].dev_attr.attr);
|
||||
data->sensors[sensor].attr[func].dev_attr.attr.name = n;
|
||||
data->sensors[sensor].attr[func].dev_attr.attr.mode = S_IRUGO;
|
||||
data->sensors[sensor].attr[func].dev_attr.attr.mode = 0444;
|
||||
data->sensors[sensor].attr[func].dev_attr.show = ibmpex_show_sensor;
|
||||
data->sensors[sensor].attr[func].index = sensor;
|
||||
data->sensors[sensor].attr[func].nr = func;
|
||||
|
|
|
@ -129,7 +129,7 @@ static int iio_hwmon_probe(struct platform_device *pdev)
|
|||
return -ENOMEM;
|
||||
|
||||
a->dev_attr.show = iio_hwmon_read_val;
|
||||
a->dev_attr.attr.mode = S_IRUGO;
|
||||
a->dev_attr.attr.mode = 0444;
|
||||
a->index = i;
|
||||
st->attrs[i] = &a->dev_attr.attr;
|
||||
}
|
||||
|
|
|
@ -230,9 +230,9 @@ static u16 ina209_reg_from_interval(u16 config, long interval)
|
|||
return (config & 0xf807) | (adc << 3) | (adc << 7);
|
||||
}
|
||||
|
||||
static ssize_t ina209_set_interval(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t ina209_interval_store(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct ina209_data *data = ina209_update_device(dev);
|
||||
long val;
|
||||
|
@ -257,7 +257,7 @@ static ssize_t ina209_set_interval(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t ina209_show_interval(struct device *dev,
|
||||
static ssize_t ina209_interval_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct ina209_data *data = dev_get_drvdata(dev);
|
||||
|
@ -279,10 +279,9 @@ static u16 ina209_reset_history_regs[] = {
|
|||
INA209_POWER_PEAK
|
||||
};
|
||||
|
||||
static ssize_t ina209_reset_history(struct device *dev,
|
||||
static ssize_t ina209_history_store(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
struct ina209_data *data = dev_get_drvdata(dev);
|
||||
|
@ -306,10 +305,9 @@ static ssize_t ina209_reset_history(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t ina209_set_value(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
static ssize_t ina209_value_store(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct ina209_data *data = ina209_update_device(dev);
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -337,9 +335,8 @@ static ssize_t ina209_set_value(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t ina209_show_value(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
char *buf)
|
||||
static ssize_t ina209_value_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
struct ina209_data *data = ina209_update_device(dev);
|
||||
|
@ -352,9 +349,8 @@ static ssize_t ina209_show_value(struct device *dev,
|
|||
return snprintf(buf, PAGE_SIZE, "%ld\n", val);
|
||||
}
|
||||
|
||||
static ssize_t ina209_show_alarm(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
char *buf)
|
||||
static ssize_t ina209_alarm_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
struct ina209_data *data = ina209_update_device(dev);
|
||||
|
@ -374,82 +370,65 @@ static ssize_t ina209_show_alarm(struct device *dev,
|
|||
}
|
||||
|
||||
/* Shunt voltage, history, limits, alarms */
|
||||
static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, ina209_show_value, NULL,
|
||||
INA209_SHUNT_VOLTAGE);
|
||||
static SENSOR_DEVICE_ATTR(in0_input_highest, S_IRUGO, ina209_show_value, NULL,
|
||||
INA209_SHUNT_VOLTAGE_POS_PEAK);
|
||||
static SENSOR_DEVICE_ATTR(in0_input_lowest, S_IRUGO, ina209_show_value, NULL,
|
||||
INA209_SHUNT_VOLTAGE_NEG_PEAK);
|
||||
static SENSOR_DEVICE_ATTR(in0_reset_history, S_IWUSR, NULL,
|
||||
ina209_reset_history, (1 << 0) | (1 << 1));
|
||||
static SENSOR_DEVICE_ATTR(in0_max, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_SHUNT_VOLTAGE_POS_WARN);
|
||||
static SENSOR_DEVICE_ATTR(in0_min, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_SHUNT_VOLTAGE_NEG_WARN);
|
||||
static SENSOR_DEVICE_ATTR(in0_crit_max, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_CRITICAL_DAC_POS);
|
||||
static SENSOR_DEVICE_ATTR(in0_crit_min, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_CRITICAL_DAC_NEG);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_input, ina209_value, INA209_SHUNT_VOLTAGE);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_input_highest, ina209_value,
|
||||
INA209_SHUNT_VOLTAGE_POS_PEAK);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_input_lowest, ina209_value,
|
||||
INA209_SHUNT_VOLTAGE_NEG_PEAK);
|
||||
static SENSOR_DEVICE_ATTR_WO(in0_reset_history, ina209_history,
|
||||
(1 << 0) | (1 << 1));
|
||||
static SENSOR_DEVICE_ATTR_RW(in0_max, ina209_value,
|
||||
INA209_SHUNT_VOLTAGE_POS_WARN);
|
||||
static SENSOR_DEVICE_ATTR_RW(in0_min, ina209_value,
|
||||
INA209_SHUNT_VOLTAGE_NEG_WARN);
|
||||
static SENSOR_DEVICE_ATTR_RW(in0_crit_max, ina209_value,
|
||||
INA209_CRITICAL_DAC_POS);
|
||||
static SENSOR_DEVICE_ATTR_RW(in0_crit_min, ina209_value,
|
||||
INA209_CRITICAL_DAC_NEG);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_min_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 11);
|
||||
static SENSOR_DEVICE_ATTR(in0_max_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 12);
|
||||
static SENSOR_DEVICE_ATTR(in0_crit_min_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 6);
|
||||
static SENSOR_DEVICE_ATTR(in0_crit_max_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_min_alarm, ina209_alarm, 1 << 11);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_max_alarm, ina209_alarm, 1 << 12);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_crit_min_alarm, ina209_alarm, 1 << 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_crit_max_alarm, ina209_alarm, 1 << 7);
|
||||
|
||||
/* Bus voltage, history, limits, alarms */
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, ina209_show_value, NULL,
|
||||
INA209_BUS_VOLTAGE);
|
||||
static SENSOR_DEVICE_ATTR(in1_input_highest, S_IRUGO, ina209_show_value, NULL,
|
||||
INA209_BUS_VOLTAGE_MAX_PEAK);
|
||||
static SENSOR_DEVICE_ATTR(in1_input_lowest, S_IRUGO, ina209_show_value, NULL,
|
||||
INA209_BUS_VOLTAGE_MIN_PEAK);
|
||||
static SENSOR_DEVICE_ATTR(in1_reset_history, S_IWUSR, NULL,
|
||||
ina209_reset_history, (1 << 2) | (1 << 3));
|
||||
static SENSOR_DEVICE_ATTR(in1_max, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_BUS_VOLTAGE_OVER_WARN);
|
||||
static SENSOR_DEVICE_ATTR(in1_min, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_BUS_VOLTAGE_UNDER_WARN);
|
||||
static SENSOR_DEVICE_ATTR(in1_crit_max, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_BUS_VOLTAGE_OVER_LIMIT);
|
||||
static SENSOR_DEVICE_ATTR(in1_crit_min, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_BUS_VOLTAGE_UNDER_LIMIT);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, ina209_value, INA209_BUS_VOLTAGE);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input_highest, ina209_value,
|
||||
INA209_BUS_VOLTAGE_MAX_PEAK);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input_lowest, ina209_value,
|
||||
INA209_BUS_VOLTAGE_MIN_PEAK);
|
||||
static SENSOR_DEVICE_ATTR_WO(in1_reset_history, ina209_history,
|
||||
(1 << 2) | (1 << 3));
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_max, ina209_value,
|
||||
INA209_BUS_VOLTAGE_OVER_WARN);
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_min, ina209_value,
|
||||
INA209_BUS_VOLTAGE_UNDER_WARN);
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_crit_max, ina209_value,
|
||||
INA209_BUS_VOLTAGE_OVER_LIMIT);
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_crit_min, ina209_value,
|
||||
INA209_BUS_VOLTAGE_UNDER_LIMIT);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in1_min_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 14);
|
||||
static SENSOR_DEVICE_ATTR(in1_max_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 15);
|
||||
static SENSOR_DEVICE_ATTR(in1_crit_min_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 9);
|
||||
static SENSOR_DEVICE_ATTR(in1_crit_max_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 10);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_min_alarm, ina209_alarm, 1 << 14);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_max_alarm, ina209_alarm, 1 << 15);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_crit_min_alarm, ina209_alarm, 1 << 9);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_crit_max_alarm, ina209_alarm, 1 << 10);
|
||||
|
||||
/* Power */
|
||||
static SENSOR_DEVICE_ATTR(power1_input, S_IRUGO, ina209_show_value, NULL,
|
||||
INA209_POWER);
|
||||
static SENSOR_DEVICE_ATTR(power1_input_highest, S_IRUGO, ina209_show_value,
|
||||
NULL, INA209_POWER_PEAK);
|
||||
static SENSOR_DEVICE_ATTR(power1_reset_history, S_IWUSR, NULL,
|
||||
ina209_reset_history, 1 << 4);
|
||||
static SENSOR_DEVICE_ATTR(power1_max, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_POWER_WARN);
|
||||
static SENSOR_DEVICE_ATTR(power1_crit, S_IRUGO | S_IWUSR, ina209_show_value,
|
||||
ina209_set_value, INA209_POWER_OVER_LIMIT);
|
||||
static SENSOR_DEVICE_ATTR_RO(power1_input, ina209_value, INA209_POWER);
|
||||
static SENSOR_DEVICE_ATTR_RO(power1_input_highest, ina209_value,
|
||||
INA209_POWER_PEAK);
|
||||
static SENSOR_DEVICE_ATTR_WO(power1_reset_history, ina209_history, 1 << 4);
|
||||
static SENSOR_DEVICE_ATTR_RW(power1_max, ina209_value, INA209_POWER_WARN);
|
||||
static SENSOR_DEVICE_ATTR_RW(power1_crit, ina209_value,
|
||||
INA209_POWER_OVER_LIMIT);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(power1_max_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 13);
|
||||
static SENSOR_DEVICE_ATTR(power1_crit_alarm, S_IRUGO, ina209_show_alarm, NULL,
|
||||
1 << 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(power1_max_alarm, ina209_alarm, 1 << 13);
|
||||
static SENSOR_DEVICE_ATTR_RO(power1_crit_alarm, ina209_alarm, 1 << 8);
|
||||
|
||||
/* Current */
|
||||
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, ina209_show_value, NULL,
|
||||
INA209_CURRENT);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr1_input, ina209_value, INA209_CURRENT);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(update_interval, S_IRUGO | S_IWUSR,
|
||||
ina209_show_interval, ina209_set_interval, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(update_interval, ina209_interval, 0);
|
||||
|
||||
/*
|
||||
* Finally, construct an array of pointers to members of the above objects,
|
||||
|
|
|
@ -111,6 +111,7 @@ struct ina3221_input {
|
|||
* @inputs: Array of channel input source specific structures
|
||||
* @lock: mutex lock to serialize sysfs attribute accesses
|
||||
* @reg_config: Register value of INA3221_CONFIG
|
||||
* @single_shot: running in single-shot operating mode
|
||||
*/
|
||||
struct ina3221_data {
|
||||
struct device *pm_dev;
|
||||
|
@ -119,6 +120,8 @@ struct ina3221_data {
|
|||
struct ina3221_input inputs[INA3221_NUM_CHANNELS];
|
||||
struct mutex lock;
|
||||
u32 reg_config;
|
||||
|
||||
bool single_shot;
|
||||
};
|
||||
|
||||
static inline bool ina3221_is_enabled(struct ina3221_data *ina, int channel)
|
||||
|
@ -188,6 +191,11 @@ static int ina3221_read_in(struct device *dev, u32 attr, int channel, long *val)
|
|||
if (!ina3221_is_enabled(ina, channel))
|
||||
return -ENODATA;
|
||||
|
||||
/* Write CONFIG register to trigger a single-shot measurement */
|
||||
if (ina->single_shot)
|
||||
regmap_write(ina->regmap, INA3221_CONFIG,
|
||||
ina->reg_config);
|
||||
|
||||
ret = ina3221_wait_for_data(ina);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -232,6 +240,11 @@ static int ina3221_read_curr(struct device *dev, u32 attr,
|
|||
if (!ina3221_is_enabled(ina, channel))
|
||||
return -ENODATA;
|
||||
|
||||
/* Write CONFIG register to trigger a single-shot measurement */
|
||||
if (ina->single_shot)
|
||||
regmap_write(ina->regmap, INA3221_CONFIG,
|
||||
ina->reg_config);
|
||||
|
||||
ret = ina3221_wait_for_data(ina);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -499,7 +512,7 @@ static const struct hwmon_chip_info ina3221_chip_info = {
|
|||
};
|
||||
|
||||
/* Extra attribute groups */
|
||||
static ssize_t ina3221_show_shunt(struct device *dev,
|
||||
static ssize_t ina3221_shunt_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *sd_attr = to_sensor_dev_attr(attr);
|
||||
|
@ -510,9 +523,9 @@ static ssize_t ina3221_show_shunt(struct device *dev,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", input->shunt_resistor);
|
||||
}
|
||||
|
||||
static ssize_t ina3221_set_shunt(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t ina3221_shunt_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *sd_attr = to_sensor_dev_attr(attr);
|
||||
struct ina3221_data *ina = dev_get_drvdata(dev);
|
||||
|
@ -533,12 +546,9 @@ static ssize_t ina3221_set_shunt(struct device *dev,
|
|||
}
|
||||
|
||||
/* shunt resistance */
|
||||
static SENSOR_DEVICE_ATTR(shunt1_resistor, S_IRUGO | S_IWUSR,
|
||||
ina3221_show_shunt, ina3221_set_shunt, INA3221_CHANNEL1);
|
||||
static SENSOR_DEVICE_ATTR(shunt2_resistor, S_IRUGO | S_IWUSR,
|
||||
ina3221_show_shunt, ina3221_set_shunt, INA3221_CHANNEL2);
|
||||
static SENSOR_DEVICE_ATTR(shunt3_resistor, S_IRUGO | S_IWUSR,
|
||||
ina3221_show_shunt, ina3221_set_shunt, INA3221_CHANNEL3);
|
||||
static SENSOR_DEVICE_ATTR_RW(shunt1_resistor, ina3221_shunt, INA3221_CHANNEL1);
|
||||
static SENSOR_DEVICE_ATTR_RW(shunt2_resistor, ina3221_shunt, INA3221_CHANNEL2);
|
||||
static SENSOR_DEVICE_ATTR_RW(shunt3_resistor, ina3221_shunt, INA3221_CHANNEL3);
|
||||
|
||||
static struct attribute *ina3221_attrs[] = {
|
||||
&sensor_dev_attr_shunt1_resistor.dev_attr.attr,
|
||||
|
@ -617,6 +627,8 @@ static int ina3221_probe_from_dt(struct device *dev, struct ina3221_data *ina)
|
|||
if (!np)
|
||||
return 0;
|
||||
|
||||
ina->single_shot = of_property_read_bool(np, "ti,single-shot");
|
||||
|
||||
for_each_child_of_node(np, child) {
|
||||
ret = ina3221_probe_child_from_dt(dev, child, ina);
|
||||
if (ret)
|
||||
|
@ -666,6 +678,10 @@ static int ina3221_probe(struct i2c_client *client,
|
|||
/* The driver will be reset, so use reset value */
|
||||
ina->reg_config = INA3221_CONFIG_DEFAULT;
|
||||
|
||||
/* Clear continuous bit to use single-shot mode */
|
||||
if (ina->single_shot)
|
||||
ina->reg_config &= ~INA3221_CONFIG_MODE_CONTINUOUS;
|
||||
|
||||
/* Disable channels if their inputs are disconnected */
|
||||
for (i = 0; i < INA3221_NUM_CHANNELS; i++) {
|
||||
if (ina->inputs[i].disconnected)
|
||||
|
|
|
@ -390,21 +390,21 @@ static umode_t jc42_is_visible(const void *_data, enum hwmon_sensor_types type,
|
|||
{
|
||||
const struct jc42_data *data = _data;
|
||||
unsigned int config = data->config;
|
||||
umode_t mode = S_IRUGO;
|
||||
umode_t mode = 0444;
|
||||
|
||||
switch (attr) {
|
||||
case hwmon_temp_min:
|
||||
case hwmon_temp_max:
|
||||
if (!(config & JC42_CFG_EVENT_LOCK))
|
||||
mode |= S_IWUSR;
|
||||
mode |= 0200;
|
||||
break;
|
||||
case hwmon_temp_crit:
|
||||
if (!(config & JC42_CFG_TCRIT_LOCK))
|
||||
mode |= S_IWUSR;
|
||||
mode |= 0200;
|
||||
break;
|
||||
case hwmon_temp_crit_hyst:
|
||||
if (!(config & (JC42_CFG_EVENT_LOCK | JC42_CFG_TCRIT_LOCK)))
|
||||
mode |= S_IWUSR;
|
||||
mode |= 0200;
|
||||
break;
|
||||
case hwmon_temp_input:
|
||||
case hwmon_temp_max_hyst:
|
||||
|
|
|
@ -109,8 +109,8 @@ static ssize_t name_show(struct device *dev, struct device_attribute
|
|||
}
|
||||
|
||||
|
||||
static ssize_t show_temp(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute_2 *attr =
|
||||
to_sensor_dev_attr_2(devattr);
|
||||
|
@ -129,10 +129,10 @@ static ssize_t show_temp(struct device *dev,
|
|||
|
||||
/* core, place */
|
||||
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_input, S_IRUGO, show_temp, NULL, 0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_input, S_IRUGO, show_temp, NULL, 0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_input, S_IRUGO, show_temp, NULL, 1, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp4_input, S_IRUGO, show_temp, NULL, 1, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(temp1_input, temp, 0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(temp2_input, temp, 0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(temp3_input, temp, 1, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(temp4_input, temp, 1, 1);
|
||||
static DEVICE_ATTR_RO(name);
|
||||
|
||||
static const struct pci_device_id k8temp_ids[] = {
|
||||
|
|
|
@ -282,8 +282,8 @@ static long pem_get_fan(u8 *data, int len, int index)
|
|||
* Show boolean, either a fault or an alarm.
|
||||
* .nr points to the register, .index is the bit mask to check
|
||||
*/
|
||||
static ssize_t pem_show_bool(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
static ssize_t pem_bool_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute_2 *attr = to_sensor_dev_attr_2(da);
|
||||
struct pem_data *data = pem_update_device(dev);
|
||||
|
@ -296,7 +296,7 @@ static ssize_t pem_show_bool(struct device *dev,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", !!status);
|
||||
}
|
||||
|
||||
static ssize_t pem_show_data(struct device *dev, struct device_attribute *da,
|
||||
static ssize_t pem_data_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -312,7 +312,7 @@ static ssize_t pem_show_data(struct device *dev, struct device_attribute *da,
|
|||
return snprintf(buf, PAGE_SIZE, "%ld\n", value);
|
||||
}
|
||||
|
||||
static ssize_t pem_show_input(struct device *dev, struct device_attribute *da,
|
||||
static ssize_t pem_input_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -328,7 +328,7 @@ static ssize_t pem_show_input(struct device *dev, struct device_attribute *da,
|
|||
return snprintf(buf, PAGE_SIZE, "%ld\n", value);
|
||||
}
|
||||
|
||||
static ssize_t pem_show_fan(struct device *dev, struct device_attribute *da,
|
||||
static ssize_t pem_fan_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -345,53 +345,42 @@ static ssize_t pem_show_fan(struct device *dev, struct device_attribute *da,
|
|||
}
|
||||
|
||||
/* Voltages */
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, pem_show_data, NULL,
|
||||
PEM_DATA_VOUT_LSB);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_alarm, S_IRUGO, pem_show_bool, NULL,
|
||||
PEM_DATA_ALARM_1, ALRM1_VOUT_OUT_LIMIT);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_crit_alarm, S_IRUGO, pem_show_bool, NULL,
|
||||
PEM_DATA_ALARM_1, ALRM1_OV_VOLT_SHUTDOWN);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, pem_show_input, NULL,
|
||||
PEM_INPUT_VOLTAGE);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_alarm, S_IRUGO, pem_show_bool, NULL,
|
||||
PEM_DATA_ALARM_1,
|
||||
ALRM1_VIN_OUT_LIMIT | ALRM1_PRIMARY_FAULT);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, pem_data, PEM_DATA_VOUT_LSB);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in1_alarm, pem_bool, PEM_DATA_ALARM_1,
|
||||
ALRM1_VOUT_OUT_LIMIT);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in1_crit_alarm, pem_bool, PEM_DATA_ALARM_1,
|
||||
ALRM1_OV_VOLT_SHUTDOWN);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, pem_input, PEM_INPUT_VOLTAGE);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in2_alarm, pem_bool, PEM_DATA_ALARM_1,
|
||||
ALRM1_VIN_OUT_LIMIT | ALRM1_PRIMARY_FAULT);
|
||||
|
||||
/* Currents */
|
||||
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, pem_show_data, NULL,
|
||||
PEM_DATA_CURRENT);
|
||||
static SENSOR_DEVICE_ATTR_2(curr1_alarm, S_IRUGO, pem_show_bool, NULL,
|
||||
PEM_DATA_ALARM_1, ALRM1_VIN_OVERCURRENT);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr1_input, pem_data, PEM_DATA_CURRENT);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(curr1_alarm, pem_bool, PEM_DATA_ALARM_1,
|
||||
ALRM1_VIN_OVERCURRENT);
|
||||
|
||||
/* Power */
|
||||
static SENSOR_DEVICE_ATTR(power1_input, S_IRUGO, pem_show_input, NULL,
|
||||
PEM_INPUT_POWER_LSB);
|
||||
static SENSOR_DEVICE_ATTR_2(power1_alarm, S_IRUGO, pem_show_bool, NULL,
|
||||
PEM_DATA_ALARM_1, ALRM1_POWER_LIMIT);
|
||||
static SENSOR_DEVICE_ATTR_RO(power1_input, pem_input, PEM_INPUT_POWER_LSB);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(power1_alarm, pem_bool, PEM_DATA_ALARM_1,
|
||||
ALRM1_POWER_LIMIT);
|
||||
|
||||
/* Fans */
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, pem_show_fan, NULL,
|
||||
PEM_FAN_FAN1);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, pem_show_fan, NULL,
|
||||
PEM_FAN_FAN2);
|
||||
static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO, pem_show_fan, NULL,
|
||||
PEM_FAN_FAN3);
|
||||
static SENSOR_DEVICE_ATTR_2(fan1_alarm, S_IRUGO, pem_show_bool, NULL,
|
||||
PEM_DATA_ALARM_2, ALRM2_FAN_FAULT);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, pem_fan, PEM_FAN_FAN1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_input, pem_fan, PEM_FAN_FAN2);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan3_input, pem_fan, PEM_FAN_FAN3);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(fan1_alarm, pem_bool, PEM_DATA_ALARM_2,
|
||||
ALRM2_FAN_FAULT);
|
||||
|
||||
/* Temperatures */
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, pem_show_data, NULL,
|
||||
PEM_DATA_TEMP);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO, pem_show_data, NULL,
|
||||
PEM_DATA_TEMP_MAX);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO, pem_show_data, NULL,
|
||||
PEM_DATA_TEMP_CRIT);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_alarm, S_IRUGO, pem_show_bool, NULL,
|
||||
PEM_DATA_ALARM_1, ALRM1_TEMP_WARNING);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_crit_alarm, S_IRUGO, pem_show_bool, NULL,
|
||||
PEM_DATA_ALARM_1, ALRM1_TEMP_SHUTDOWN);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_fault, S_IRUGO, pem_show_bool, NULL,
|
||||
PEM_DATA_ALARM_2, ALRM2_TEMP_FAULT);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, pem_data, PEM_DATA_TEMP);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max, pem_data, PEM_DATA_TEMP_MAX);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit, pem_data, PEM_DATA_TEMP_CRIT);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(temp1_alarm, pem_bool, PEM_DATA_ALARM_1,
|
||||
ALRM1_TEMP_WARNING);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(temp1_crit_alarm, pem_bool, PEM_DATA_ALARM_1,
|
||||
ALRM1_TEMP_SHUTDOWN);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(temp1_fault, pem_bool, PEM_DATA_ALARM_2,
|
||||
ALRM2_TEMP_FAULT);
|
||||
|
||||
static struct attribute *pem_attributes[] = {
|
||||
&sensor_dev_attr_in1_input.dev_attr.attr,
|
||||
|
|
|
@ -62,8 +62,8 @@ struct lm73_data {
|
|||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
static ssize_t set_temp(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_store(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
struct lm73_data *data = dev_get_drvdata(dev);
|
||||
|
@ -81,7 +81,7 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *da,
|
|||
return (err < 0) ? err : count;
|
||||
}
|
||||
|
||||
static ssize_t show_temp(struct device *dev, struct device_attribute *da,
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -98,8 +98,8 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *da,
|
|||
return scnprintf(buf, PAGE_SIZE, "%d\n", temp);
|
||||
}
|
||||
|
||||
static ssize_t set_convrate(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t convrate_store(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct lm73_data *data = dev_get_drvdata(dev);
|
||||
unsigned long convrate;
|
||||
|
@ -133,7 +133,7 @@ static ssize_t set_convrate(struct device *dev, struct device_attribute *da,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_convrate(struct device *dev, struct device_attribute *da,
|
||||
static ssize_t convrate_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
struct lm73_data *data = dev_get_drvdata(dev);
|
||||
|
@ -143,7 +143,7 @@ static ssize_t show_convrate(struct device *dev, struct device_attribute *da,
|
|||
return scnprintf(buf, PAGE_SIZE, "%hu\n", lm73_convrates[res]);
|
||||
}
|
||||
|
||||
static ssize_t show_maxmin_alarm(struct device *dev,
|
||||
static ssize_t maxmin_alarm_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -168,18 +168,14 @@ static ssize_t show_maxmin_alarm(struct device *dev,
|
|||
|
||||
/* sysfs attributes for hwmon */
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO,
|
||||
show_temp, set_temp, LM73_REG_MAX);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO,
|
||||
show_temp, set_temp, LM73_REG_MIN);
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO,
|
||||
show_temp, NULL, LM73_REG_INPUT);
|
||||
static SENSOR_DEVICE_ATTR(update_interval, S_IWUSR | S_IRUGO,
|
||||
show_convrate, set_convrate, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO,
|
||||
show_maxmin_alarm, NULL, LM73_CTRL_HI_SHIFT);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min_alarm, S_IRUGO,
|
||||
show_maxmin_alarm, NULL, LM73_CTRL_LO_SHIFT);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, temp, LM73_REG_MAX);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_min, temp, LM73_REG_MIN);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, LM73_REG_INPUT);
|
||||
static SENSOR_DEVICE_ATTR_RW(update_interval, convrate, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, maxmin_alarm,
|
||||
LM73_CTRL_HI_SHIFT);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_min_alarm, maxmin_alarm,
|
||||
LM73_CTRL_LO_SHIFT);
|
||||
|
||||
static struct attribute *lm73_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -176,16 +176,16 @@ static umode_t lm75_is_visible(const void *data, enum hwmon_sensor_types type,
|
|||
case hwmon_chip:
|
||||
switch (attr) {
|
||||
case hwmon_chip_update_interval:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
}
|
||||
break;
|
||||
case hwmon_temp:
|
||||
switch (attr) {
|
||||
case hwmon_temp_input:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
case hwmon_temp_max:
|
||||
case hwmon_temp_max_hyst:
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -137,7 +137,7 @@ static struct lm77_data *lm77_update_device(struct device *dev)
|
|||
|
||||
/* sysfs stuff */
|
||||
|
||||
static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -146,7 +146,7 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
|||
return sprintf(buf, "%d\n", data->temp[attr->index]);
|
||||
}
|
||||
|
||||
static ssize_t show_temp_hyst(struct device *dev,
|
||||
static ssize_t temp_hyst_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -160,8 +160,9 @@ static ssize_t show_temp_hyst(struct device *dev,
|
|||
return sprintf(buf, "%d\n", temp);
|
||||
}
|
||||
|
||||
static ssize_t set_temp(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_store(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct lm77_data *data = dev_get_drvdata(dev);
|
||||
|
@ -186,9 +187,9 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *devattr,
|
|||
* hysteresis is stored as a relative value on the chip, so it has to be
|
||||
* converted first.
|
||||
*/
|
||||
static ssize_t set_temp_hyst(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_hyst_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct lm77_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -208,7 +209,7 @@ static ssize_t set_temp_hyst(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t alarm_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int bitnr = to_sensor_dev_attr(attr)->index;
|
||||
|
@ -216,22 +217,18 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%u\n", (data->alarms >> bitnr) & 1);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, t_input);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, S_IWUSR | S_IRUGO, show_temp, set_temp,
|
||||
t_crit);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO, show_temp, set_temp,
|
||||
t_min);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp, set_temp,
|
||||
t_max);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, t_input);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_crit, temp, t_crit);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_min, temp, t_min);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, temp, t_max);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_hyst, S_IWUSR | S_IRUGO, show_temp_hyst,
|
||||
set_temp_hyst, t_crit);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min_hyst, S_IRUGO, show_temp_hyst, NULL, t_min);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IRUGO, show_temp_hyst, NULL, t_max);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_crit_hyst, temp_hyst, t_crit);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_min_hyst, temp_hyst, t_min);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_hyst, temp_hyst, t_max);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO, show_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min_alarm, S_IRUGO, show_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_min_alarm, alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, alarm, 1);
|
||||
|
||||
static struct attribute *lm77_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -269,7 +269,7 @@ static struct lm80_data *lm80_update_device(struct device *dev)
|
|||
* Sysfs stuff
|
||||
*/
|
||||
|
||||
static ssize_t show_in(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t in_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct lm80_data *data = lm80_update_device(dev);
|
||||
|
@ -281,8 +281,8 @@ static ssize_t show_in(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", IN_FROM_REG(data->in[nr][index]));
|
||||
}
|
||||
|
||||
static ssize_t set_in(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t in_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct lm80_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -303,7 +303,7 @@ static ssize_t set_in(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_fan(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t fan_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int index = to_sensor_dev_attr_2(attr)->index;
|
||||
|
@ -315,8 +315,8 @@ static ssize_t show_fan(struct device *dev, struct device_attribute *attr,
|
|||
DIV_FROM_REG(data->fan_div[index])));
|
||||
}
|
||||
|
||||
static ssize_t show_fan_div(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t fan_div_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(attr)->index;
|
||||
struct lm80_data *data = lm80_update_device(dev);
|
||||
|
@ -325,8 +325,8 @@ static ssize_t show_fan_div(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[nr]));
|
||||
}
|
||||
|
||||
static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int index = to_sensor_dev_attr_2(attr)->index;
|
||||
int nr = to_sensor_dev_attr_2(attr)->nr;
|
||||
|
@ -352,8 +352,9 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
|
|||
* least surprise; the user doesn't expect the fan minimum to change just
|
||||
* because the divisor changed.
|
||||
*/
|
||||
static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_div_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(attr)->index;
|
||||
struct lm80_data *data = dev_get_drvdata(dev);
|
||||
|
@ -410,7 +411,7 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -420,8 +421,9 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
|||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t set_temp(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_store(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct lm80_data *data = dev_get_drvdata(dev);
|
||||
|
@ -448,7 +450,7 @@ static ssize_t alarms_show(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%u\n", data->alarms);
|
||||
}
|
||||
|
||||
static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t alarm_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int bitnr = to_sensor_dev_attr(attr)->index;
|
||||
|
@ -458,72 +460,50 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%u\n", (data->alarms >> bitnr) & 1);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR_2(in0_min, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_min, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_min, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(in3_min, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_min, 3);
|
||||
static SENSOR_DEVICE_ATTR_2(in4_min, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_min, 4);
|
||||
static SENSOR_DEVICE_ATTR_2(in5_min, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_min, 5);
|
||||
static SENSOR_DEVICE_ATTR_2(in6_min, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_min, 6);
|
||||
static SENSOR_DEVICE_ATTR_2(in0_max, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_max, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_max, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_max, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(in3_max, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_max, 3);
|
||||
static SENSOR_DEVICE_ATTR_2(in4_max, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_max, 4);
|
||||
static SENSOR_DEVICE_ATTR_2(in5_max, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_max, 5);
|
||||
static SENSOR_DEVICE_ATTR_2(in6_max, S_IWUSR | S_IRUGO,
|
||||
show_in, set_in, i_max, 6);
|
||||
static SENSOR_DEVICE_ATTR_2(in0_input, S_IRUGO, show_in, NULL, i_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_input, S_IRUGO, show_in, NULL, i_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_input, S_IRUGO, show_in, NULL, i_input, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(in3_input, S_IRUGO, show_in, NULL, i_input, 3);
|
||||
static SENSOR_DEVICE_ATTR_2(in4_input, S_IRUGO, show_in, NULL, i_input, 4);
|
||||
static SENSOR_DEVICE_ATTR_2(in5_input, S_IRUGO, show_in, NULL, i_input, 5);
|
||||
static SENSOR_DEVICE_ATTR_2(in6_input, S_IRUGO, show_in, NULL, i_input, 6);
|
||||
static SENSOR_DEVICE_ATTR_2(fan1_min, S_IWUSR | S_IRUGO,
|
||||
show_fan, set_fan_min, f_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(fan2_min, S_IWUSR | S_IRUGO,
|
||||
show_fan, set_fan_min, f_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(fan1_input, S_IRUGO, show_fan, NULL, f_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(fan2_input, S_IRUGO, show_fan, NULL, f_input, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_div, S_IWUSR | S_IRUGO,
|
||||
show_fan_div, set_fan_div, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_div, S_IWUSR | S_IRUGO,
|
||||
show_fan_div, set_fan_div, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, t_input);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, t_hot_max);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, t_hot_hyst);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, t_os_max);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_hyst, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, t_os_hyst);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in0_min, in, i_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in1_min, in, i_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in2_min, in, i_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in3_min, in, i_min, 3);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in4_min, in, i_min, 4);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in5_min, in, i_min, 5);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in6_min, in, i_min, 6);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in0_max, in, i_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in1_max, in, i_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in2_max, in, i_max, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in3_max, in, i_max, 3);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in4_max, in, i_max, 4);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in5_max, in, i_max, 5);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in6_max, in, i_max, 6);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in0_input, in, i_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in1_input, in, i_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in2_input, in, i_input, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in3_input, in, i_input, 3);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in4_input, in, i_input, 4);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in5_input, in, i_input, 5);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in6_input, in, i_input, 6);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(fan1_min, fan, f_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(fan2_min, fan, f_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(fan1_input, fan, f_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(fan2_input, fan, f_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_div, fan_div, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_div, fan_div, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, t_input);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, temp, t_hot_max);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max_hyst, temp, t_hot_hyst);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_crit, temp, t_os_max);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_crit_hyst, temp, t_os_hyst);
|
||||
static DEVICE_ATTR_RO(alarms);
|
||||
static SENSOR_DEVICE_ATTR(in0_alarm, S_IRUGO, show_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_alarm, S_IRUGO, show_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_alarm, S_IRUGO, show_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_alarm, S_IRUGO, show_alarm, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(in4_alarm, S_IRUGO, show_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(in5_alarm, S_IRUGO, show_alarm, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(in6_alarm, S_IRUGO, show_alarm, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(fan1_alarm, S_IRUGO, show_alarm, NULL, 10);
|
||||
static SENSOR_DEVICE_ATTR(fan2_alarm, S_IRUGO, show_alarm, NULL, 11);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_alarm, NULL, 8);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO, show_alarm, NULL, 13);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_alarm, alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_alarm, alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_alarm, alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_alarm, alarm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_alarm, alarm, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(in5_alarm, alarm, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(in6_alarm, alarm, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_alarm, alarm, 10);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_alarm, alarm, 11);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, alarm, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, alarm, 13);
|
||||
|
||||
/*
|
||||
* Real code
|
||||
|
|
|
@ -158,7 +158,7 @@ static struct lm83_data *lm83_update_device(struct device *dev)
|
|||
* Sysfs stuff
|
||||
*/
|
||||
|
||||
static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -166,8 +166,9 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
|||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t set_temp(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_store(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct lm83_data *data = dev_get_drvdata(dev);
|
||||
|
@ -195,8 +196,8 @@ static ssize_t alarms_show(struct device *dev, struct device_attribute *dummy,
|
|||
return sprintf(buf, "%d\n", data->alarms);
|
||||
}
|
||||
|
||||
static ssize_t show_alarm(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct lm83_data *data = lm83_update_device(dev);
|
||||
|
@ -205,36 +206,31 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%d\n", (data->alarms >> bitnr) & 1);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_input, S_IRUGO, show_temp, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, 5);
|
||||
static SENSOR_DEVICE_ATTR(temp3_max, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp4_max, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, 7);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO, show_temp, NULL, 8);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit, S_IRUGO, show_temp, NULL, 8);
|
||||
static SENSOR_DEVICE_ATTR(temp3_crit, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, 8);
|
||||
static SENSOR_DEVICE_ATTR(temp4_crit, S_IRUGO, show_temp, NULL, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_input, temp, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_input, temp, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, temp, 4);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_max, temp, 5);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp3_max, temp, 6);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp4_max, temp, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit, temp, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_crit, temp, 8);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp3_crit, temp, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_crit, temp, 8);
|
||||
|
||||
/* Individual alarm files */
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO, show_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp3_crit_alarm, S_IRUGO, show_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_fault, S_IRUGO, show_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp3_max_alarm, S_IRUGO, show_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_alarm, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit_alarm, S_IRUGO, show_alarm, NULL, 8);
|
||||
static SENSOR_DEVICE_ATTR(temp4_crit_alarm, S_IRUGO, show_alarm, NULL, 9);
|
||||
static SENSOR_DEVICE_ATTR(temp4_fault, S_IRUGO, show_alarm, NULL, 10);
|
||||
static SENSOR_DEVICE_ATTR(temp4_max_alarm, S_IRUGO, show_alarm, NULL, 12);
|
||||
static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO, show_alarm, NULL, 13);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max_alarm, S_IRUGO, show_alarm, NULL, 15);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_crit_alarm, alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_fault, alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_max_alarm, alarm, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, alarm, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_crit_alarm, alarm, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_crit_alarm, alarm, 9);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_fault, alarm, 10);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_max_alarm, alarm, 12);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_fault, alarm, 13);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_max_alarm, alarm, 15);
|
||||
/* Raw alarm file for compatibility */
|
||||
static DEVICE_ATTR_RO(alarms);
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
|
||||
|
||||
enum chips {
|
||||
lm85,
|
||||
lm85, lm96000,
|
||||
adm1027, adt7463, adt7468,
|
||||
emc6d100, emc6d102, emc6d103, emc6d103s
|
||||
};
|
||||
|
@ -198,13 +198,18 @@ static int RANGE_TO_REG(long range)
|
|||
#define RANGE_FROM_REG(val) lm85_range_map[(val) & 0x0f]
|
||||
|
||||
/* These are the PWM frequency encodings */
|
||||
static const int lm85_freq_map[8] = { /* 1 Hz */
|
||||
static const int lm85_freq_map[] = { /* 1 Hz */
|
||||
10, 15, 23, 30, 38, 47, 61, 94
|
||||
};
|
||||
static const int adm1027_freq_map[8] = { /* 1 Hz */
|
||||
|
||||
static const int lm96000_freq_map[] = { /* 1 Hz */
|
||||
10, 15, 23, 30, 38, 47, 61, 94,
|
||||
22500, 24000, 25700, 25700, 27700, 27700, 30000, 30000
|
||||
};
|
||||
|
||||
static const int adm1027_freq_map[] = { /* 1 Hz */
|
||||
11, 15, 22, 29, 35, 44, 59, 88
|
||||
};
|
||||
#define FREQ_MAP_LEN 8
|
||||
|
||||
static int FREQ_TO_REG(const int *map,
|
||||
unsigned int map_size, unsigned long freq)
|
||||
|
@ -212,9 +217,9 @@ static int FREQ_TO_REG(const int *map,
|
|||
return find_closest(freq, map, map_size);
|
||||
}
|
||||
|
||||
static int FREQ_FROM_REG(const int *map, u8 reg)
|
||||
static int FREQ_FROM_REG(const int *map, unsigned int map_size, u8 reg)
|
||||
{
|
||||
return map[reg & 0x07];
|
||||
return map[reg % map_size];
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -296,6 +301,8 @@ struct lm85_data {
|
|||
struct i2c_client *client;
|
||||
const struct attribute_group *groups[6];
|
||||
const int *freq_map;
|
||||
unsigned int freq_map_size;
|
||||
|
||||
enum chips type;
|
||||
|
||||
bool has_vid5; /* true if VID5 is configured for ADT7463 or ADT7468 */
|
||||
|
@ -514,7 +521,7 @@ static struct lm85_data *lm85_update_device(struct device *dev)
|
|||
data->autofan[i].config =
|
||||
lm85_read_value(client, LM85_REG_AFAN_CONFIG(i));
|
||||
val = lm85_read_value(client, LM85_REG_AFAN_RANGE(i));
|
||||
data->pwm_freq[i] = val & 0x07;
|
||||
data->pwm_freq[i] = val % data->freq_map_size;
|
||||
data->zone[i].range = val >> 4;
|
||||
data->autofan[i].min_pwm =
|
||||
lm85_read_value(client, LM85_REG_AFAN_MINPWM(i));
|
||||
|
@ -791,7 +798,8 @@ static ssize_t show_pwm_freq(struct device *dev,
|
|||
if (IS_ADT7468_HFPWM(data))
|
||||
freq = 22500;
|
||||
else
|
||||
freq = FREQ_FROM_REG(data->freq_map, data->pwm_freq[nr]);
|
||||
freq = FREQ_FROM_REG(data->freq_map, data->freq_map_size,
|
||||
data->pwm_freq[nr]);
|
||||
|
||||
return sprintf(buf, "%d\n", freq);
|
||||
}
|
||||
|
@ -820,7 +828,7 @@ static ssize_t set_pwm_freq(struct device *dev,
|
|||
lm85_write_value(client, ADT7468_REG_CFG5, data->cfg5);
|
||||
} else { /* Low freq. mode */
|
||||
data->pwm_freq[nr] = FREQ_TO_REG(data->freq_map,
|
||||
FREQ_MAP_LEN, val);
|
||||
data->freq_map_size, val);
|
||||
lm85_write_value(client, LM85_REG_AFAN_RANGE(nr),
|
||||
(data->zone[nr].range << 4)
|
||||
| data->pwm_freq[nr]);
|
||||
|
@ -1196,7 +1204,7 @@ static ssize_t set_temp_auto_temp_min(struct device *dev,
|
|||
TEMP_FROM_REG(data->zone[nr].limit));
|
||||
lm85_write_value(client, LM85_REG_AFAN_RANGE(nr),
|
||||
((data->zone[nr].range & 0x0f) << 4)
|
||||
| (data->pwm_freq[nr] & 0x07));
|
||||
| data->pwm_freq[nr]);
|
||||
|
||||
mutex_unlock(&data->update_lock);
|
||||
return count;
|
||||
|
@ -1232,7 +1240,7 @@ static ssize_t set_temp_auto_temp_max(struct device *dev,
|
|||
val - min);
|
||||
lm85_write_value(client, LM85_REG_AFAN_RANGE(nr),
|
||||
((data->zone[nr].range & 0x0f) << 4)
|
||||
| (data->pwm_freq[nr] & 0x07));
|
||||
| data->pwm_freq[nr]);
|
||||
mutex_unlock(&data->update_lock);
|
||||
return count;
|
||||
}
|
||||
|
@ -1496,7 +1504,7 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info)
|
|||
"Found Winbond WPCD377I, ignoring\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
type_name = "lm85";
|
||||
type_name = "lm96000";
|
||||
break;
|
||||
}
|
||||
} else if (company == LM85_COMPANY_ANALOG_DEV) {
|
||||
|
@ -1569,9 +1577,15 @@ static int lm85_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|||
case emc6d103:
|
||||
case emc6d103s:
|
||||
data->freq_map = adm1027_freq_map;
|
||||
data->freq_map_size = ARRAY_SIZE(adm1027_freq_map);
|
||||
break;
|
||||
case lm96000:
|
||||
data->freq_map = lm96000_freq_map;
|
||||
data->freq_map_size = ARRAY_SIZE(lm96000_freq_map);
|
||||
break;
|
||||
default:
|
||||
data->freq_map = lm85_freq_map;
|
||||
data->freq_map_size = ARRAY_SIZE(lm85_freq_map);
|
||||
}
|
||||
|
||||
/* Set the VRM version */
|
||||
|
@ -1618,6 +1632,7 @@ static const struct i2c_device_id lm85_id[] = {
|
|||
{ "lm85", lm85 },
|
||||
{ "lm85b", lm85 },
|
||||
{ "lm85c", lm85 },
|
||||
{ "lm96000", lm96000 },
|
||||
{ "emc6d100", emc6d100 },
|
||||
{ "emc6d101", emc6d100 },
|
||||
{ "emc6d102", emc6d102 },
|
||||
|
@ -1652,6 +1667,10 @@ static const struct of_device_id lm85_of_match[] = {
|
|||
.compatible = "national,lm85c",
|
||||
.data = (void *)lm85
|
||||
},
|
||||
{
|
||||
.compatible = "ti,lm96000",
|
||||
.data = (void *)lm96000
|
||||
},
|
||||
{
|
||||
.compatible = "smsc,emc6d100",
|
||||
.data = (void *)emc6d100
|
||||
|
|
|
@ -1266,17 +1266,17 @@ static umode_t lm90_temp_is_visible(const void *data, u32 attr, int channel)
|
|||
case hwmon_temp_emergency_alarm:
|
||||
case hwmon_temp_emergency_hyst:
|
||||
case hwmon_temp_fault:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
case hwmon_temp_min:
|
||||
case hwmon_temp_max:
|
||||
case hwmon_temp_crit:
|
||||
case hwmon_temp_emergency:
|
||||
case hwmon_temp_offset:
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
case hwmon_temp_crit_hyst:
|
||||
if (channel == 0)
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return S_IRUGO;
|
||||
return 0644;
|
||||
return 0444;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@ -1338,9 +1338,9 @@ static umode_t lm90_chip_is_visible(const void *data, u32 attr, int channel)
|
|||
{
|
||||
switch (attr) {
|
||||
case hwmon_chip_update_interval:
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
case hwmon_chip_alarms:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -143,7 +143,7 @@ static struct lm92_data *lm92_update_device(struct device *dev)
|
|||
return data;
|
||||
}
|
||||
|
||||
static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -152,8 +152,9 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
|||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t set_temp(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_store(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct lm92_data *data = dev_get_drvdata(dev);
|
||||
|
@ -173,7 +174,7 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *devattr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_temp_hyst(struct device *dev,
|
||||
static ssize_t temp_hyst_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -192,9 +193,9 @@ static ssize_t temp1_min_hyst_show(struct device *dev,
|
|||
+ TEMP_FROM_REG(data->temp[t_hyst]));
|
||||
}
|
||||
|
||||
static ssize_t set_temp_hyst(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_hyst_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct lm92_data *data = dev_get_drvdata(dev);
|
||||
|
@ -224,7 +225,7 @@ static ssize_t alarms_show(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", ALARMS_FROM_REG(data->temp[t_input]));
|
||||
}
|
||||
|
||||
static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t alarm_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int bitnr = to_sensor_dev_attr(attr)->index;
|
||||
|
@ -232,21 +233,17 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", (data->temp[t_input] >> bitnr) & 1);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, t_input);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, S_IWUSR | S_IRUGO, show_temp, set_temp,
|
||||
t_crit);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_hyst, S_IWUSR | S_IRUGO, show_temp_hyst,
|
||||
set_temp_hyst, t_crit);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO, show_temp, set_temp,
|
||||
t_min);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, t_input);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_crit, temp, t_crit);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_crit_hyst, temp_hyst, t_crit);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_min, temp, t_min);
|
||||
static DEVICE_ATTR_RO(temp1_min_hyst);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp, set_temp,
|
||||
t_max);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IRUGO, show_temp_hyst, NULL, t_max);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, temp, t_max);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_hyst, temp_hyst, t_max);
|
||||
static DEVICE_ATTR_RO(alarms);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO, show_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min_alarm, S_IRUGO, show_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_min_alarm, alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, alarm, 1);
|
||||
|
||||
/*
|
||||
* Detection and registration
|
||||
|
|
|
@ -1111,8 +1111,8 @@ static void lm93_update_client_min(struct lm93_data *data,
|
|||
}
|
||||
|
||||
/* following are the sysfs callback functions */
|
||||
static ssize_t show_in(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t in_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
|
||||
|
@ -1120,25 +1120,25 @@ static ssize_t show_in(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", LM93_IN_FROM_REG(nr, data->block3[nr]));
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, show_in, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, show_in, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, show_in, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(in4_input, S_IRUGO, show_in, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(in5_input, S_IRUGO, show_in, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(in6_input, S_IRUGO, show_in, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(in7_input, S_IRUGO, show_in, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(in8_input, S_IRUGO, show_in, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(in9_input, S_IRUGO, show_in, NULL, 8);
|
||||
static SENSOR_DEVICE_ATTR(in10_input, S_IRUGO, show_in, NULL, 9);
|
||||
static SENSOR_DEVICE_ATTR(in11_input, S_IRUGO, show_in, NULL, 10);
|
||||
static SENSOR_DEVICE_ATTR(in12_input, S_IRUGO, show_in, NULL, 11);
|
||||
static SENSOR_DEVICE_ATTR(in13_input, S_IRUGO, show_in, NULL, 12);
|
||||
static SENSOR_DEVICE_ATTR(in14_input, S_IRUGO, show_in, NULL, 13);
|
||||
static SENSOR_DEVICE_ATTR(in15_input, S_IRUGO, show_in, NULL, 14);
|
||||
static SENSOR_DEVICE_ATTR(in16_input, S_IRUGO, show_in, NULL, 15);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, in, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, in, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_input, in, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_input, in, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in5_input, in, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(in6_input, in, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(in7_input, in, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(in8_input, in, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(in9_input, in, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(in10_input, in, 9);
|
||||
static SENSOR_DEVICE_ATTR_RO(in11_input, in, 10);
|
||||
static SENSOR_DEVICE_ATTR_RO(in12_input, in, 11);
|
||||
static SENSOR_DEVICE_ATTR_RO(in13_input, in, 12);
|
||||
static SENSOR_DEVICE_ATTR_RO(in14_input, in, 13);
|
||||
static SENSOR_DEVICE_ATTR_RO(in15_input, in, 14);
|
||||
static SENSOR_DEVICE_ATTR_RO(in16_input, in, 15);
|
||||
|
||||
static ssize_t show_in_min(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t in_min_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -1154,7 +1154,7 @@ static ssize_t show_in_min(struct device *dev,
|
|||
return sprintf(buf, "%ld\n", rc);
|
||||
}
|
||||
|
||||
static ssize_t store_in_min(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t in_min_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
|
@ -1185,41 +1185,25 @@ static ssize_t store_in_min(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in1_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(in2_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 1);
|
||||
static SENSOR_DEVICE_ATTR(in3_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 2);
|
||||
static SENSOR_DEVICE_ATTR(in4_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 3);
|
||||
static SENSOR_DEVICE_ATTR(in5_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 4);
|
||||
static SENSOR_DEVICE_ATTR(in6_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 5);
|
||||
static SENSOR_DEVICE_ATTR(in7_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 6);
|
||||
static SENSOR_DEVICE_ATTR(in8_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 7);
|
||||
static SENSOR_DEVICE_ATTR(in9_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 8);
|
||||
static SENSOR_DEVICE_ATTR(in10_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 9);
|
||||
static SENSOR_DEVICE_ATTR(in11_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 10);
|
||||
static SENSOR_DEVICE_ATTR(in12_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 11);
|
||||
static SENSOR_DEVICE_ATTR(in13_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 12);
|
||||
static SENSOR_DEVICE_ATTR(in14_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 13);
|
||||
static SENSOR_DEVICE_ATTR(in15_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 14);
|
||||
static SENSOR_DEVICE_ATTR(in16_min, S_IWUSR | S_IRUGO,
|
||||
show_in_min, store_in_min, 15);
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_min, in_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(in2_min, in_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(in3_min, in_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(in4_min, in_min, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(in5_min, in_min, 4);
|
||||
static SENSOR_DEVICE_ATTR_RW(in6_min, in_min, 5);
|
||||
static SENSOR_DEVICE_ATTR_RW(in7_min, in_min, 6);
|
||||
static SENSOR_DEVICE_ATTR_RW(in8_min, in_min, 7);
|
||||
static SENSOR_DEVICE_ATTR_RW(in9_min, in_min, 8);
|
||||
static SENSOR_DEVICE_ATTR_RW(in10_min, in_min, 9);
|
||||
static SENSOR_DEVICE_ATTR_RW(in11_min, in_min, 10);
|
||||
static SENSOR_DEVICE_ATTR_RW(in12_min, in_min, 11);
|
||||
static SENSOR_DEVICE_ATTR_RW(in13_min, in_min, 12);
|
||||
static SENSOR_DEVICE_ATTR_RW(in14_min, in_min, 13);
|
||||
static SENSOR_DEVICE_ATTR_RW(in15_min, in_min, 14);
|
||||
static SENSOR_DEVICE_ATTR_RW(in16_min, in_min, 15);
|
||||
|
||||
static ssize_t show_in_max(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t in_max_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -1235,7 +1219,7 @@ static ssize_t show_in_max(struct device *dev,
|
|||
return sprintf(buf, "%ld\n", rc);
|
||||
}
|
||||
|
||||
static ssize_t store_in_max(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t in_max_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
|
@ -1266,61 +1250,46 @@ static ssize_t store_in_max(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in1_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 0);
|
||||
static SENSOR_DEVICE_ATTR(in2_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 1);
|
||||
static SENSOR_DEVICE_ATTR(in3_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 2);
|
||||
static SENSOR_DEVICE_ATTR(in4_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 3);
|
||||
static SENSOR_DEVICE_ATTR(in5_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 4);
|
||||
static SENSOR_DEVICE_ATTR(in6_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 5);
|
||||
static SENSOR_DEVICE_ATTR(in7_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 6);
|
||||
static SENSOR_DEVICE_ATTR(in8_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 7);
|
||||
static SENSOR_DEVICE_ATTR(in9_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 8);
|
||||
static SENSOR_DEVICE_ATTR(in10_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 9);
|
||||
static SENSOR_DEVICE_ATTR(in11_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 10);
|
||||
static SENSOR_DEVICE_ATTR(in12_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 11);
|
||||
static SENSOR_DEVICE_ATTR(in13_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 12);
|
||||
static SENSOR_DEVICE_ATTR(in14_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 13);
|
||||
static SENSOR_DEVICE_ATTR(in15_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 14);
|
||||
static SENSOR_DEVICE_ATTR(in16_max, S_IWUSR | S_IRUGO,
|
||||
show_in_max, store_in_max, 15);
|
||||
static SENSOR_DEVICE_ATTR_RW(in1_max, in_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(in2_max, in_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(in3_max, in_max, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(in4_max, in_max, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(in5_max, in_max, 4);
|
||||
static SENSOR_DEVICE_ATTR_RW(in6_max, in_max, 5);
|
||||
static SENSOR_DEVICE_ATTR_RW(in7_max, in_max, 6);
|
||||
static SENSOR_DEVICE_ATTR_RW(in8_max, in_max, 7);
|
||||
static SENSOR_DEVICE_ATTR_RW(in9_max, in_max, 8);
|
||||
static SENSOR_DEVICE_ATTR_RW(in10_max, in_max, 9);
|
||||
static SENSOR_DEVICE_ATTR_RW(in11_max, in_max, 10);
|
||||
static SENSOR_DEVICE_ATTR_RW(in12_max, in_max, 11);
|
||||
static SENSOR_DEVICE_ATTR_RW(in13_max, in_max, 12);
|
||||
static SENSOR_DEVICE_ATTR_RW(in14_max, in_max, 13);
|
||||
static SENSOR_DEVICE_ATTR_RW(in15_max, in_max, 14);
|
||||
static SENSOR_DEVICE_ATTR_RW(in16_max, in_max, 15);
|
||||
|
||||
static ssize_t show_temp(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->block2[nr]));
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_input, temp, 2);
|
||||
|
||||
static ssize_t show_temp_min(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t temp_min_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->temp_lim[nr].min));
|
||||
}
|
||||
|
||||
static ssize_t store_temp_min(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_min_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -1339,14 +1308,11 @@ static ssize_t store_temp_min(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO,
|
||||
show_temp_min, store_temp_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_min, S_IWUSR | S_IRUGO,
|
||||
show_temp_min, store_temp_min, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_min, S_IWUSR | S_IRUGO,
|
||||
show_temp_min, store_temp_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_min, temp_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_min, temp_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp3_min, temp_min, 2);
|
||||
|
||||
static ssize_t show_temp_max(struct device *dev,
|
||||
static ssize_t temp_max_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
|
@ -1354,8 +1320,9 @@ static ssize_t show_temp_max(struct device *dev,
|
|||
return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->temp_lim[nr].max));
|
||||
}
|
||||
|
||||
static ssize_t store_temp_max(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_max_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -1374,24 +1341,21 @@ static ssize_t store_temp_max(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO,
|
||||
show_temp_max, store_temp_max, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max, S_IWUSR | S_IRUGO,
|
||||
show_temp_max, store_temp_max, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_max, S_IWUSR | S_IRUGO,
|
||||
show_temp_max, store_temp_max, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, temp_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_max, temp_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp3_max, temp_max, 2);
|
||||
|
||||
static ssize_t show_temp_auto_base(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t temp_auto_base_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->block10.base[nr]));
|
||||
}
|
||||
|
||||
static ssize_t store_temp_auto_base(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_auto_base_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -1410,14 +1374,11 @@ static ssize_t store_temp_auto_base(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_auto_base, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_base, store_temp_auto_base, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_auto_base, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_base, store_temp_auto_base, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_auto_base, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_base, store_temp_auto_base, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_auto_base, temp_auto_base, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_auto_base, temp_auto_base, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp3_auto_base, temp_auto_base, 2);
|
||||
|
||||
static ssize_t show_temp_auto_boost(struct device *dev,
|
||||
static ssize_t temp_auto_boost_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
|
@ -1425,7 +1386,7 @@ static ssize_t show_temp_auto_boost(struct device *dev,
|
|||
return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->boost[nr]));
|
||||
}
|
||||
|
||||
static ssize_t store_temp_auto_boost(struct device *dev,
|
||||
static ssize_t temp_auto_boost_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
|
@ -1446,14 +1407,11 @@ static ssize_t store_temp_auto_boost(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_auto_boost, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_boost, store_temp_auto_boost, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_auto_boost, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_boost, store_temp_auto_boost, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_auto_boost, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_boost, store_temp_auto_boost, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_auto_boost, temp_auto_boost, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_auto_boost, temp_auto_boost, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp3_auto_boost, temp_auto_boost, 2);
|
||||
|
||||
static ssize_t show_temp_auto_boost_hyst(struct device *dev,
|
||||
static ssize_t temp_auto_boost_hyst_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
|
@ -1464,7 +1422,7 @@ static ssize_t show_temp_auto_boost_hyst(struct device *dev,
|
|||
LM93_AUTO_BOOST_HYST_FROM_REGS(data, nr, mode));
|
||||
}
|
||||
|
||||
static ssize_t store_temp_auto_boost_hyst(struct device *dev,
|
||||
static ssize_t temp_auto_boost_hyst_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
|
@ -1490,18 +1448,12 @@ static ssize_t store_temp_auto_boost_hyst(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_auto_boost_hyst, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_boost_hyst,
|
||||
store_temp_auto_boost_hyst, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_auto_boost_hyst, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_boost_hyst,
|
||||
store_temp_auto_boost_hyst, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_auto_boost_hyst, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_boost_hyst,
|
||||
store_temp_auto_boost_hyst, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_auto_boost_hyst, temp_auto_boost_hyst, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_auto_boost_hyst, temp_auto_boost_hyst, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp3_auto_boost_hyst, temp_auto_boost_hyst, 2);
|
||||
|
||||
static ssize_t show_temp_auto_offset(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t temp_auto_offset_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute_2 *s_attr = to_sensor_dev_attr_2(attr);
|
||||
int nr = s_attr->index;
|
||||
|
@ -1513,9 +1465,9 @@ static ssize_t show_temp_auto_offset(struct device *dev,
|
|||
nr, mode));
|
||||
}
|
||||
|
||||
static ssize_t store_temp_auto_offset(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_auto_offset_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute_2 *s_attr = to_sensor_dev_attr_2(attr);
|
||||
int nr = s_attr->index;
|
||||
|
@ -1542,81 +1494,46 @@ static ssize_t store_temp_auto_offset(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset1, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset2, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 1, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset3, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 2, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset4, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 3, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset5, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 4, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset6, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 5, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset7, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 6, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset8, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 7, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset9, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 8, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset10, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 9, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset11, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 10, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_auto_offset12, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 11, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset1, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset2, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 1, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset3, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 2, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset4, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 3, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset5, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 4, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset6, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 5, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset7, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 6, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset8, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 7, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset9, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 8, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset10, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 9, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset11, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 10, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_auto_offset12, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 11, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset1, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 0, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset2, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 1, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset3, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 2, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset4, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 3, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset5, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 4, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset6, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 5, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset7, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 6, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset8, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 7, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset9, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 8, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset10, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 9, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset11, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 10, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(temp3_auto_offset12, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset, store_temp_auto_offset, 11, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset1, temp_auto_offset, 0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset2, temp_auto_offset, 1, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset3, temp_auto_offset, 2, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset4, temp_auto_offset, 3, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset5, temp_auto_offset, 4, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset6, temp_auto_offset, 5, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset7, temp_auto_offset, 6, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset8, temp_auto_offset, 7, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset9, temp_auto_offset, 8, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset10, temp_auto_offset, 9, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset11, temp_auto_offset, 10, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_offset12, temp_auto_offset, 11, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset1, temp_auto_offset, 0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset2, temp_auto_offset, 1, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset3, temp_auto_offset, 2, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset4, temp_auto_offset, 3, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset5, temp_auto_offset, 4, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset6, temp_auto_offset, 5, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset7, temp_auto_offset, 6, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset8, temp_auto_offset, 7, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset9, temp_auto_offset, 8, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset10, temp_auto_offset, 9, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset11, temp_auto_offset, 10, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_offset12, temp_auto_offset, 11, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset1, temp_auto_offset, 0, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset2, temp_auto_offset, 1, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset3, temp_auto_offset, 2, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset4, temp_auto_offset, 3, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset5, temp_auto_offset, 4, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset6, temp_auto_offset, 5, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset7, temp_auto_offset, 6, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset8, temp_auto_offset, 7, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset9, temp_auto_offset, 8, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset10, temp_auto_offset, 9, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset11, temp_auto_offset, 10, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_offset12, temp_auto_offset, 11, 2);
|
||||
|
||||
static ssize_t show_temp_auto_pwm_min(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t temp_auto_pwm_min_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
u8 reg, ctl4;
|
||||
|
@ -1627,9 +1544,9 @@ static ssize_t show_temp_auto_pwm_min(struct device *dev,
|
|||
LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ));
|
||||
}
|
||||
|
||||
static ssize_t store_temp_auto_pwm_min(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_auto_pwm_min_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -1655,18 +1572,13 @@ static ssize_t store_temp_auto_pwm_min(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_auto_pwm_min, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_pwm_min,
|
||||
store_temp_auto_pwm_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_auto_pwm_min, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_pwm_min,
|
||||
store_temp_auto_pwm_min, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_auto_pwm_min, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_pwm_min,
|
||||
store_temp_auto_pwm_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_auto_pwm_min, temp_auto_pwm_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_auto_pwm_min, temp_auto_pwm_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp3_auto_pwm_min, temp_auto_pwm_min, 2);
|
||||
|
||||
static ssize_t show_temp_auto_offset_hyst(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t temp_auto_offset_hyst_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -1675,9 +1587,9 @@ static ssize_t show_temp_auto_offset_hyst(struct device *dev,
|
|||
data->auto_pwm_min_hyst[nr / 2], mode));
|
||||
}
|
||||
|
||||
static ssize_t store_temp_auto_offset_hyst(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_auto_offset_hyst_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -1703,18 +1615,12 @@ static ssize_t store_temp_auto_offset_hyst(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_auto_offset_hyst, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset_hyst,
|
||||
store_temp_auto_offset_hyst, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_auto_offset_hyst, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset_hyst,
|
||||
store_temp_auto_offset_hyst, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_auto_offset_hyst, S_IWUSR | S_IRUGO,
|
||||
show_temp_auto_offset_hyst,
|
||||
store_temp_auto_offset_hyst, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_auto_offset_hyst, temp_auto_offset_hyst, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_auto_offset_hyst, temp_auto_offset_hyst, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp3_auto_offset_hyst, temp_auto_offset_hyst, 2);
|
||||
|
||||
static ssize_t show_fan_input(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t fan_input_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *s_attr = to_sensor_dev_attr(attr);
|
||||
int nr = s_attr->index;
|
||||
|
@ -1723,13 +1629,13 @@ static ssize_t show_fan_input(struct device *dev,
|
|||
return sprintf(buf, "%d\n", LM93_FAN_FROM_REG(data->block5[nr]));
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO, show_fan_input, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_input, S_IRUGO, show_fan_input, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, fan_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_input, fan_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan3_input, fan_input, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan4_input, fan_input, 3);
|
||||
|
||||
static ssize_t show_fan_min(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t fan_min_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -1737,8 +1643,9 @@ static ssize_t show_fan_min(struct device *dev,
|
|||
return sprintf(buf, "%d\n", LM93_FAN_FROM_REG(data->block8[nr]));
|
||||
}
|
||||
|
||||
static ssize_t store_fan_min(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_min_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -1757,14 +1664,10 @@ static ssize_t store_fan_min(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, store_fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, store_fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, store_fan_min, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, store_fan_min, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_min, fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_min, fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan3_min, fan_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan4_min, fan_min, 3);
|
||||
|
||||
/*
|
||||
* some tedious bit-twiddling here to deal with the register format:
|
||||
|
@ -1780,8 +1683,8 @@ static SENSOR_DEVICE_ATTR(fan4_min, S_IWUSR | S_IRUGO,
|
|||
* T4 T3 T2 T1
|
||||
*/
|
||||
|
||||
static ssize_t show_fan_smart_tach(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t fan_smart_tach_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -1819,9 +1722,9 @@ static void lm93_write_fan_smart_tach(struct i2c_client *client,
|
|||
lm93_write_byte(client, LM93_REG_SFC2, data->sfc2);
|
||||
}
|
||||
|
||||
static ssize_t store_fan_smart_tach(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_smart_tach_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -1849,16 +1752,12 @@ static ssize_t store_fan_smart_tach(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_smart_tach, S_IWUSR | S_IRUGO,
|
||||
show_fan_smart_tach, store_fan_smart_tach, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_smart_tach, S_IWUSR | S_IRUGO,
|
||||
show_fan_smart_tach, store_fan_smart_tach, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_smart_tach, S_IWUSR | S_IRUGO,
|
||||
show_fan_smart_tach, store_fan_smart_tach, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_smart_tach, S_IWUSR | S_IRUGO,
|
||||
show_fan_smart_tach, store_fan_smart_tach, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_smart_tach, fan_smart_tach, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_smart_tach, fan_smart_tach, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan3_smart_tach, fan_smart_tach, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan4_smart_tach, fan_smart_tach, 3);
|
||||
|
||||
static ssize_t show_pwm(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t pwm_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
|
@ -1876,8 +1775,8 @@ static ssize_t show_pwm(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%ld\n", rc);
|
||||
}
|
||||
|
||||
static ssize_t store_pwm(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t pwm_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -1904,11 +1803,11 @@ static ssize_t store_pwm(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(pwm1, S_IWUSR | S_IRUGO, show_pwm, store_pwm, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm2, S_IWUSR | S_IRUGO, show_pwm, store_pwm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1, pwm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm2, pwm, 1);
|
||||
|
||||
static ssize_t show_pwm_enable(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t pwm_enable_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -1923,7 +1822,7 @@ static ssize_t show_pwm_enable(struct device *dev,
|
|||
return sprintf(buf, "%ld\n", rc);
|
||||
}
|
||||
|
||||
static ssize_t store_pwm_enable(struct device *dev,
|
||||
static ssize_t pwm_enable_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
|
@ -1961,13 +1860,11 @@ static ssize_t store_pwm_enable(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(pwm1_enable, S_IWUSR | S_IRUGO,
|
||||
show_pwm_enable, store_pwm_enable, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm2_enable, S_IWUSR | S_IRUGO,
|
||||
show_pwm_enable, store_pwm_enable, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1_enable, pwm_enable, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm2_enable, pwm_enable, 1);
|
||||
|
||||
static ssize_t show_pwm_freq(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t pwm_freq_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -2001,9 +1898,9 @@ static void lm93_disable_fan_smart_tach(struct i2c_client *client,
|
|||
lm93_write_byte(client, LM93_REG_SFC2, data->sfc2);
|
||||
}
|
||||
|
||||
static ssize_t store_pwm_freq(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t pwm_freq_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -2028,22 +1925,21 @@ static ssize_t store_pwm_freq(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(pwm1_freq, S_IWUSR | S_IRUGO,
|
||||
show_pwm_freq, store_pwm_freq, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm2_freq, S_IWUSR | S_IRUGO,
|
||||
show_pwm_freq, store_pwm_freq, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1_freq, pwm_freq, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm2_freq, pwm_freq, 1);
|
||||
|
||||
static ssize_t show_pwm_auto_channels(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t pwm_auto_channels_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
return sprintf(buf, "%d\n", data->block9[nr][LM93_PWM_CTL1]);
|
||||
}
|
||||
|
||||
static ssize_t store_pwm_auto_channels(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t pwm_auto_channels_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -2063,13 +1959,12 @@ static ssize_t store_pwm_auto_channels(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(pwm1_auto_channels, S_IWUSR | S_IRUGO,
|
||||
show_pwm_auto_channels, store_pwm_auto_channels, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm2_auto_channels, S_IWUSR | S_IRUGO,
|
||||
show_pwm_auto_channels, store_pwm_auto_channels, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1_auto_channels, pwm_auto_channels, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm2_auto_channels, pwm_auto_channels, 1);
|
||||
|
||||
static ssize_t show_pwm_auto_spinup_min(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t pwm_auto_spinup_min_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -2082,9 +1977,9 @@ static ssize_t show_pwm_auto_spinup_min(struct device *dev,
|
|||
LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ));
|
||||
}
|
||||
|
||||
static ssize_t store_pwm_auto_spinup_min(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t pwm_auto_spinup_min_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -2109,15 +2004,12 @@ static ssize_t store_pwm_auto_spinup_min(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(pwm1_auto_spinup_min, S_IWUSR | S_IRUGO,
|
||||
show_pwm_auto_spinup_min,
|
||||
store_pwm_auto_spinup_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm2_auto_spinup_min, S_IWUSR | S_IRUGO,
|
||||
show_pwm_auto_spinup_min,
|
||||
store_pwm_auto_spinup_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1_auto_spinup_min, pwm_auto_spinup_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm2_auto_spinup_min, pwm_auto_spinup_min, 1);
|
||||
|
||||
static ssize_t show_pwm_auto_spinup_time(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t pwm_auto_spinup_time_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -2125,9 +2017,9 @@ static ssize_t show_pwm_auto_spinup_time(struct device *dev,
|
|||
data->block9[nr][LM93_PWM_CTL3]));
|
||||
}
|
||||
|
||||
static ssize_t store_pwm_auto_spinup_time(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t pwm_auto_spinup_time_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -2149,12 +2041,8 @@ static ssize_t store_pwm_auto_spinup_time(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(pwm1_auto_spinup_time, S_IWUSR | S_IRUGO,
|
||||
show_pwm_auto_spinup_time,
|
||||
store_pwm_auto_spinup_time, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm2_auto_spinup_time, S_IWUSR | S_IRUGO,
|
||||
show_pwm_auto_spinup_time,
|
||||
store_pwm_auto_spinup_time, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1_auto_spinup_time, pwm_auto_spinup_time, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm2_auto_spinup_time, pwm_auto_spinup_time, 1);
|
||||
|
||||
static ssize_t pwm_auto_prochot_ramp_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
|
@ -2220,7 +2108,7 @@ static ssize_t pwm_auto_vrdhot_ramp_store(struct device *dev,
|
|||
|
||||
static DEVICE_ATTR_RW(pwm_auto_vrdhot_ramp);
|
||||
|
||||
static ssize_t show_vid(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t vid_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
|
@ -2228,21 +2116,21 @@ static ssize_t show_vid(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", LM93_VID_FROM_REG(data->vid[nr]));
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(cpu1_vid, S_IRUGO, show_vid, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(cpu0_vid, vid, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(cpu1_vid, vid, 1);
|
||||
|
||||
static ssize_t show_prochot(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t prochot_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
return sprintf(buf, "%d\n", data->block4[nr].cur);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(prochot1, S_IRUGO, show_prochot, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(prochot2, S_IRUGO, show_prochot, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(prochot1, prochot, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(prochot2, prochot, 1);
|
||||
|
||||
static ssize_t show_prochot_avg(struct device *dev,
|
||||
static ssize_t prochot_avg_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
|
@ -2250,10 +2138,10 @@ static ssize_t show_prochot_avg(struct device *dev,
|
|||
return sprintf(buf, "%d\n", data->block4[nr].avg);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(prochot1_avg, S_IRUGO, show_prochot_avg, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(prochot2_avg, S_IRUGO, show_prochot_avg, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(prochot1_avg, prochot_avg, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(prochot2_avg, prochot_avg, 1);
|
||||
|
||||
static ssize_t show_prochot_max(struct device *dev,
|
||||
static ssize_t prochot_max_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
|
@ -2261,9 +2149,9 @@ static ssize_t show_prochot_max(struct device *dev,
|
|||
return sprintf(buf, "%d\n", data->prochot_max[nr]);
|
||||
}
|
||||
|
||||
static ssize_t store_prochot_max(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t prochot_max_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -2283,15 +2171,13 @@ static ssize_t store_prochot_max(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(prochot1_max, S_IWUSR | S_IRUGO,
|
||||
show_prochot_max, store_prochot_max, 0);
|
||||
static SENSOR_DEVICE_ATTR(prochot2_max, S_IWUSR | S_IRUGO,
|
||||
show_prochot_max, store_prochot_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(prochot1_max, prochot_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(prochot2_max, prochot_max, 1);
|
||||
|
||||
static const u8 prochot_override_mask[] = { 0x80, 0x40 };
|
||||
|
||||
static ssize_t show_prochot_override(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t prochot_override_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -2299,9 +2185,9 @@ static ssize_t show_prochot_override(struct device *dev,
|
|||
(data->prochot_override & prochot_override_mask[nr]) ? 1 : 0);
|
||||
}
|
||||
|
||||
static ssize_t store_prochot_override(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t prochot_override_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -2324,13 +2210,11 @@ static ssize_t store_prochot_override(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(prochot1_override, S_IWUSR | S_IRUGO,
|
||||
show_prochot_override, store_prochot_override, 0);
|
||||
static SENSOR_DEVICE_ATTR(prochot2_override, S_IWUSR | S_IRUGO,
|
||||
show_prochot_override, store_prochot_override, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(prochot1_override, prochot_override, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(prochot2_override, prochot_override, 1);
|
||||
|
||||
static ssize_t show_prochot_interval(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t prochot_interval_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -2342,9 +2226,9 @@ static ssize_t show_prochot_interval(struct device *dev,
|
|||
return sprintf(buf, "%d\n", LM93_INTERVAL_FROM_REG(tmp));
|
||||
}
|
||||
|
||||
static ssize_t store_prochot_interval(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t prochot_interval_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = dev_get_drvdata(dev);
|
||||
|
@ -2369,10 +2253,8 @@ static ssize_t store_prochot_interval(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(prochot1_interval, S_IWUSR | S_IRUGO,
|
||||
show_prochot_interval, store_prochot_interval, 0);
|
||||
static SENSOR_DEVICE_ATTR(prochot2_interval, S_IWUSR | S_IRUGO,
|
||||
show_prochot_interval, store_prochot_interval, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(prochot1_interval, prochot_interval, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(prochot2_interval, prochot_interval, 1);
|
||||
|
||||
static ssize_t prochot_override_duty_cycle_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
|
@ -2438,8 +2320,8 @@ static ssize_t prochot_short_store(struct device *dev,
|
|||
|
||||
static DEVICE_ATTR_RW(prochot_short);
|
||||
|
||||
static ssize_t show_vrdhot(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t vrdhot_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int nr = (to_sensor_dev_attr(attr))->index;
|
||||
struct lm93_data *data = lm93_update_device(dev);
|
||||
|
@ -2447,8 +2329,8 @@ static ssize_t show_vrdhot(struct device *dev, struct device_attribute *attr,
|
|||
data->block1.host_status_1 & (1 << (nr + 4)) ? 1 : 0);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(vrdhot1, S_IRUGO, show_vrdhot, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(vrdhot2, S_IRUGO, show_vrdhot, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(vrdhot1, vrdhot, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(vrdhot2, vrdhot, 1);
|
||||
|
||||
static ssize_t gpio_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
|
|
|
@ -349,19 +349,19 @@ static umode_t lm95241_is_visible(const void *data,
|
|||
case hwmon_chip:
|
||||
switch (attr) {
|
||||
case hwmon_chip_update_interval:
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
}
|
||||
break;
|
||||
case hwmon_temp:
|
||||
switch (attr) {
|
||||
case hwmon_temp_input:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
case hwmon_temp_fault:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
case hwmon_temp_min:
|
||||
case hwmon_temp_max:
|
||||
case hwmon_temp_type:
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -421,14 +421,14 @@ static umode_t lm95245_temp_is_visible(const void *data, u32 attr, int channel)
|
|||
case hwmon_temp_max_hyst:
|
||||
case hwmon_temp_crit_alarm:
|
||||
case hwmon_temp_fault:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
case hwmon_temp_type:
|
||||
case hwmon_temp_max:
|
||||
case hwmon_temp_crit:
|
||||
case hwmon_temp_offset:
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
case hwmon_temp_crit_hyst:
|
||||
return (channel == 0) ? S_IRUGO | S_IWUSR : S_IRUGO;
|
||||
return (channel == 0) ? 0644 : 0444;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@ -442,7 +442,7 @@ static umode_t lm95245_is_visible(const void *data,
|
|||
case hwmon_chip:
|
||||
switch (attr) {
|
||||
case hwmon_chip_update_interval:
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -136,7 +136,7 @@ static int ltc2990_get_value(struct i2c_client *i2c, int index, int *result)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t ltc2990_show_value(struct device *dev,
|
||||
static ssize_t ltc2990_value_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -170,26 +170,16 @@ static umode_t ltc2990_attrs_visible(struct kobject *kobj,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_TEMP1);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_TEMP2);
|
||||
static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_TEMP3);
|
||||
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_CURR1);
|
||||
static SENSOR_DEVICE_ATTR(curr2_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_CURR2);
|
||||
static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_IN0);
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_IN1);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_IN2);
|
||||
static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_IN3);
|
||||
static SENSOR_DEVICE_ATTR(in4_input, S_IRUGO, ltc2990_show_value, NULL,
|
||||
LTC2990_IN4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, ltc2990_value, LTC2990_TEMP1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, ltc2990_value, LTC2990_TEMP2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_input, ltc2990_value, LTC2990_TEMP3);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr1_input, ltc2990_value, LTC2990_CURR1);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr2_input, ltc2990_value, LTC2990_CURR2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_input, ltc2990_value, LTC2990_IN0);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, ltc2990_value, LTC2990_IN1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, ltc2990_value, LTC2990_IN2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_input, ltc2990_value, LTC2990_IN3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_input, ltc2990_value, LTC2990_IN4);
|
||||
|
||||
static struct attribute *ltc2990_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -131,7 +131,7 @@ static int ltc4151_get_value(struct ltc4151_data *data, u8 reg)
|
|||
return val;
|
||||
}
|
||||
|
||||
static ssize_t ltc4151_show_value(struct device *dev,
|
||||
static ssize_t ltc4151_value_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -148,14 +148,11 @@ static ssize_t ltc4151_show_value(struct device *dev,
|
|||
/*
|
||||
* Input voltages.
|
||||
*/
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, ltc4151_show_value, NULL,
|
||||
LTC4151_VIN_H);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, ltc4151_show_value, NULL,
|
||||
LTC4151_ADIN_H);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, ltc4151_value, LTC4151_VIN_H);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, ltc4151_value, LTC4151_ADIN_H);
|
||||
|
||||
/* Currents (via sense resistor) */
|
||||
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, ltc4151_show_value, NULL,
|
||||
LTC4151_SENSE_H);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr1_input, ltc4151_value, LTC4151_SENSE_H);
|
||||
|
||||
/*
|
||||
* Finally, construct an array of pointers to members of the above objects,
|
||||
|
|
|
@ -94,7 +94,7 @@ static int ltc4222_get_value(struct device *dev, u8 reg)
|
|||
return val;
|
||||
}
|
||||
|
||||
static ssize_t ltc4222_show_value(struct device *dev,
|
||||
static ssize_t ltc4222_value_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -106,7 +106,7 @@ static ssize_t ltc4222_show_value(struct device *dev,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", value);
|
||||
}
|
||||
|
||||
static ssize_t ltc4222_show_bool(struct device *dev,
|
||||
static ssize_t ltc4222_bool_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute_2 *attr = to_sensor_dev_attr_2(da);
|
||||
|
@ -125,45 +125,39 @@ static ssize_t ltc4222_show_bool(struct device *dev,
|
|||
}
|
||||
|
||||
/* Voltages */
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, ltc4222_show_value, NULL,
|
||||
LTC4222_SOURCE1);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, ltc4222_show_value, NULL,
|
||||
LTC4222_ADIN1);
|
||||
static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, ltc4222_show_value, NULL,
|
||||
LTC4222_SOURCE2);
|
||||
static SENSOR_DEVICE_ATTR(in4_input, S_IRUGO, ltc4222_show_value, NULL,
|
||||
LTC4222_ADIN2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, ltc4222_value, LTC4222_SOURCE1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, ltc4222_value, LTC4222_ADIN1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_input, ltc4222_value, LTC4222_SOURCE2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_input, ltc4222_value, LTC4222_ADIN2);
|
||||
|
||||
/*
|
||||
* Voltage alarms
|
||||
* UV/OV faults are associated with the input voltage, and power bad and fet
|
||||
* faults are associated with the output voltage.
|
||||
*/
|
||||
static SENSOR_DEVICE_ATTR_2(in1_min_alarm, S_IRUGO, ltc4222_show_bool, NULL,
|
||||
LTC4222_FAULT1, FAULT_UV);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_max_alarm, S_IRUGO, ltc4222_show_bool, NULL,
|
||||
LTC4222_FAULT1, FAULT_OV);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_alarm, S_IRUGO, ltc4222_show_bool, NULL,
|
||||
LTC4222_FAULT1, FAULT_POWER_BAD | FAULT_FET_BAD);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in1_min_alarm, ltc4222_bool, LTC4222_FAULT1,
|
||||
FAULT_UV);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in1_max_alarm, ltc4222_bool, LTC4222_FAULT1,
|
||||
FAULT_OV);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in2_alarm, ltc4222_bool, LTC4222_FAULT1,
|
||||
FAULT_POWER_BAD | FAULT_FET_BAD);
|
||||
|
||||
static SENSOR_DEVICE_ATTR_2(in3_min_alarm, S_IRUGO, ltc4222_show_bool, NULL,
|
||||
LTC4222_FAULT2, FAULT_UV);
|
||||
static SENSOR_DEVICE_ATTR_2(in3_max_alarm, S_IRUGO, ltc4222_show_bool, NULL,
|
||||
LTC4222_FAULT2, FAULT_OV);
|
||||
static SENSOR_DEVICE_ATTR_2(in4_alarm, S_IRUGO, ltc4222_show_bool, NULL,
|
||||
LTC4222_FAULT2, FAULT_POWER_BAD | FAULT_FET_BAD);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in3_min_alarm, ltc4222_bool, LTC4222_FAULT2,
|
||||
FAULT_UV);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in3_max_alarm, ltc4222_bool, LTC4222_FAULT2,
|
||||
FAULT_OV);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in4_alarm, ltc4222_bool, LTC4222_FAULT2,
|
||||
FAULT_POWER_BAD | FAULT_FET_BAD);
|
||||
|
||||
/* Current (via sense resistor) */
|
||||
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, ltc4222_show_value, NULL,
|
||||
LTC4222_SENSE1);
|
||||
static SENSOR_DEVICE_ATTR(curr2_input, S_IRUGO, ltc4222_show_value, NULL,
|
||||
LTC4222_SENSE2);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr1_input, ltc4222_value, LTC4222_SENSE1);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr2_input, ltc4222_value, LTC4222_SENSE2);
|
||||
|
||||
/* Overcurrent alarm */
|
||||
static SENSOR_DEVICE_ATTR_2(curr1_max_alarm, S_IRUGO, ltc4222_show_bool, NULL,
|
||||
LTC4222_FAULT1, FAULT_OC);
|
||||
static SENSOR_DEVICE_ATTR_2(curr2_max_alarm, S_IRUGO, ltc4222_show_bool, NULL,
|
||||
LTC4222_FAULT2, FAULT_OC);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(curr1_max_alarm, ltc4222_bool, LTC4222_FAULT1,
|
||||
FAULT_OC);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(curr2_max_alarm, ltc4222_bool, LTC4222_FAULT2,
|
||||
FAULT_OC);
|
||||
|
||||
static struct attribute *ltc4222_attrs[] = {
|
||||
&sensor_dev_attr_in1_input.dev_attr.attr,
|
||||
|
|
|
@ -362,11 +362,11 @@ static umode_t ltc4245_is_visible(const void *_data,
|
|||
case hwmon_in_input:
|
||||
if (channel > 9 && !data->use_extra_gpios)
|
||||
return 0;
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
case hwmon_in_min_alarm:
|
||||
if (channel > 8)
|
||||
return 0;
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@ -374,14 +374,14 @@ static umode_t ltc4245_is_visible(const void *_data,
|
|||
switch (attr) {
|
||||
case hwmon_curr_input:
|
||||
case hwmon_curr_max_alarm:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
case hwmon_power:
|
||||
switch (attr) {
|
||||
case hwmon_power_input:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -132,7 +132,7 @@ static int ltc4261_get_value(struct ltc4261_data *data, u8 reg)
|
|||
return val;
|
||||
}
|
||||
|
||||
static ssize_t ltc4261_show_value(struct device *dev,
|
||||
static ssize_t ltc4261_value_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -146,7 +146,7 @@ static ssize_t ltc4261_show_value(struct device *dev,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", value);
|
||||
}
|
||||
|
||||
static ssize_t ltc4261_show_bool(struct device *dev,
|
||||
static ssize_t ltc4261_bool_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -166,10 +166,8 @@ static ssize_t ltc4261_show_bool(struct device *dev,
|
|||
/*
|
||||
* Input voltages.
|
||||
*/
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, ltc4261_show_value, NULL,
|
||||
LTC4261_ADIN_H);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, ltc4261_show_value, NULL,
|
||||
LTC4261_ADIN2_H);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, ltc4261_value, LTC4261_ADIN_H);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, ltc4261_value, LTC4261_ADIN2_H);
|
||||
|
||||
/*
|
||||
* Voltage alarms. The chip has only one set of voltage alarm status bits,
|
||||
|
@ -179,22 +177,16 @@ static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, ltc4261_show_value, NULL,
|
|||
* To ensure that the alarm condition is reported to the user, report it
|
||||
* with both voltage sensors.
|
||||
*/
|
||||
static SENSOR_DEVICE_ATTR(in1_min_alarm, S_IRUGO, ltc4261_show_bool, NULL,
|
||||
FAULT_UV);
|
||||
static SENSOR_DEVICE_ATTR(in1_max_alarm, S_IRUGO, ltc4261_show_bool, NULL,
|
||||
FAULT_OV);
|
||||
static SENSOR_DEVICE_ATTR(in2_min_alarm, S_IRUGO, ltc4261_show_bool, NULL,
|
||||
FAULT_UV);
|
||||
static SENSOR_DEVICE_ATTR(in2_max_alarm, S_IRUGO, ltc4261_show_bool, NULL,
|
||||
FAULT_OV);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_min_alarm, ltc4261_bool, FAULT_UV);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_max_alarm, ltc4261_bool, FAULT_OV);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_min_alarm, ltc4261_bool, FAULT_UV);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_max_alarm, ltc4261_bool, FAULT_OV);
|
||||
|
||||
/* Currents (via sense resistor) */
|
||||
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, ltc4261_show_value, NULL,
|
||||
LTC4261_SENSE_H);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr1_input, ltc4261_value, LTC4261_SENSE_H);
|
||||
|
||||
/* Overcurrent alarm */
|
||||
static SENSOR_DEVICE_ATTR(curr1_max_alarm, S_IRUGO, ltc4261_show_bool, NULL,
|
||||
FAULT_OC);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr1_max_alarm, ltc4261_bool, FAULT_OC);
|
||||
|
||||
static struct attribute *ltc4261_attrs[] = {
|
||||
&sensor_dev_attr_in1_input.dev_attr.attr,
|
||||
|
|
|
@ -175,7 +175,7 @@ static struct max16065_data *max16065_update_device(struct device *dev)
|
|||
return data;
|
||||
}
|
||||
|
||||
static ssize_t max16065_show_alarm(struct device *dev,
|
||||
static ssize_t max16065_alarm_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute_2 *attr2 = to_sensor_dev_attr_2(da);
|
||||
|
@ -193,7 +193,7 @@ static ssize_t max16065_show_alarm(struct device *dev,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", !!val);
|
||||
}
|
||||
|
||||
static ssize_t max16065_show_input(struct device *dev,
|
||||
static ssize_t max16065_input_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||
|
@ -207,7 +207,7 @@ static ssize_t max16065_show_input(struct device *dev,
|
|||
ADC_TO_MV(adc, data->range[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t max16065_show_current(struct device *dev,
|
||||
static ssize_t max16065_current_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct max16065_data *data = max16065_update_device(dev);
|
||||
|
@ -219,9 +219,9 @@ static ssize_t max16065_show_current(struct device *dev,
|
|||
ADC_TO_CURR(data->curr_sense, data->curr_gain));
|
||||
}
|
||||
|
||||
static ssize_t max16065_set_limit(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t max16065_limit_store(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute_2 *attr2 = to_sensor_dev_attr_2(da);
|
||||
struct max16065_data *data = dev_get_drvdata(dev);
|
||||
|
@ -246,7 +246,7 @@ static ssize_t max16065_set_limit(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t max16065_show_limit(struct device *dev,
|
||||
static ssize_t max16065_limit_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute_2 *attr2 = to_sensor_dev_attr_2(da);
|
||||
|
@ -259,154 +259,93 @@ static ssize_t max16065_show_limit(struct device *dev,
|
|||
/* Construct a sensor_device_attribute structure for each register */
|
||||
|
||||
/* Input voltages */
|
||||
static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, max16065_show_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, max16065_show_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, max16065_show_input, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, max16065_show_input, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(in4_input, S_IRUGO, max16065_show_input, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(in5_input, S_IRUGO, max16065_show_input, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(in6_input, S_IRUGO, max16065_show_input, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(in7_input, S_IRUGO, max16065_show_input, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(in8_input, S_IRUGO, max16065_show_input, NULL, 8);
|
||||
static SENSOR_DEVICE_ATTR(in9_input, S_IRUGO, max16065_show_input, NULL, 9);
|
||||
static SENSOR_DEVICE_ATTR(in10_input, S_IRUGO, max16065_show_input, NULL, 10);
|
||||
static SENSOR_DEVICE_ATTR(in11_input, S_IRUGO, max16065_show_input, NULL, 11);
|
||||
static SENSOR_DEVICE_ATTR(in12_input, S_IRUGO, max16065_show_input, NULL, 12);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_input, max16065_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, max16065_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, max16065_input, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_input, max16065_input, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_input, max16065_input, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(in5_input, max16065_input, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(in6_input, max16065_input, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(in7_input, max16065_input, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(in8_input, max16065_input, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(in9_input, max16065_input, 9);
|
||||
static SENSOR_DEVICE_ATTR_RO(in10_input, max16065_input, 10);
|
||||
static SENSOR_DEVICE_ATTR_RO(in11_input, max16065_input, 11);
|
||||
static SENSOR_DEVICE_ATTR_RO(in12_input, max16065_input, 12);
|
||||
|
||||
/* Input voltages lcrit */
|
||||
static SENSOR_DEVICE_ATTR_2(in0_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(in3_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 3);
|
||||
static SENSOR_DEVICE_ATTR_2(in4_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 4);
|
||||
static SENSOR_DEVICE_ATTR_2(in5_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 5);
|
||||
static SENSOR_DEVICE_ATTR_2(in6_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 6);
|
||||
static SENSOR_DEVICE_ATTR_2(in7_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 7);
|
||||
static SENSOR_DEVICE_ATTR_2(in8_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 8);
|
||||
static SENSOR_DEVICE_ATTR_2(in9_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 9);
|
||||
static SENSOR_DEVICE_ATTR_2(in10_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 10);
|
||||
static SENSOR_DEVICE_ATTR_2(in11_lcrit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 2, 11);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in0_lcrit, max16065_limit, 2, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in1_lcrit, max16065_limit, 2, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in2_lcrit, max16065_limit, 2, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in3_lcrit, max16065_limit, 2, 3);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in4_lcrit, max16065_limit, 2, 4);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in5_lcrit, max16065_limit, 2, 5);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in6_lcrit, max16065_limit, 2, 6);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in7_lcrit, max16065_limit, 2, 7);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in8_lcrit, max16065_limit, 2, 8);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in9_lcrit, max16065_limit, 2, 9);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in10_lcrit, max16065_limit, 2, 10);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in11_lcrit, max16065_limit, 2, 11);
|
||||
|
||||
/* Input voltages crit */
|
||||
static SENSOR_DEVICE_ATTR_2(in0_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(in3_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 3);
|
||||
static SENSOR_DEVICE_ATTR_2(in4_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 4);
|
||||
static SENSOR_DEVICE_ATTR_2(in5_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 5);
|
||||
static SENSOR_DEVICE_ATTR_2(in6_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 6);
|
||||
static SENSOR_DEVICE_ATTR_2(in7_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 7);
|
||||
static SENSOR_DEVICE_ATTR_2(in8_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 8);
|
||||
static SENSOR_DEVICE_ATTR_2(in9_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 9);
|
||||
static SENSOR_DEVICE_ATTR_2(in10_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 10);
|
||||
static SENSOR_DEVICE_ATTR_2(in11_crit, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 1, 11);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in0_crit, max16065_limit, 1, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in1_crit, max16065_limit, 1, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in2_crit, max16065_limit, 1, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in3_crit, max16065_limit, 1, 3);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in4_crit, max16065_limit, 1, 4);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in5_crit, max16065_limit, 1, 5);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in6_crit, max16065_limit, 1, 6);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in7_crit, max16065_limit, 1, 7);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in8_crit, max16065_limit, 1, 8);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in9_crit, max16065_limit, 1, 9);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in10_crit, max16065_limit, 1, 10);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in11_crit, max16065_limit, 1, 11);
|
||||
|
||||
/* Input voltages min */
|
||||
static SENSOR_DEVICE_ATTR_2(in0_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(in3_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 3);
|
||||
static SENSOR_DEVICE_ATTR_2(in4_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 4);
|
||||
static SENSOR_DEVICE_ATTR_2(in5_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 5);
|
||||
static SENSOR_DEVICE_ATTR_2(in6_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 6);
|
||||
static SENSOR_DEVICE_ATTR_2(in7_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 7);
|
||||
static SENSOR_DEVICE_ATTR_2(in8_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 8);
|
||||
static SENSOR_DEVICE_ATTR_2(in9_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 9);
|
||||
static SENSOR_DEVICE_ATTR_2(in10_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 10);
|
||||
static SENSOR_DEVICE_ATTR_2(in11_min, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 11);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in0_min, max16065_limit, 0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in1_min, max16065_limit, 0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in2_min, max16065_limit, 0, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in3_min, max16065_limit, 0, 3);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in4_min, max16065_limit, 0, 4);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in5_min, max16065_limit, 0, 5);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in6_min, max16065_limit, 0, 6);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in7_min, max16065_limit, 0, 7);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in8_min, max16065_limit, 0, 8);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in9_min, max16065_limit, 0, 9);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in10_min, max16065_limit, 0, 10);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in11_min, max16065_limit, 0, 11);
|
||||
|
||||
/* Input voltages max */
|
||||
static SENSOR_DEVICE_ATTR_2(in0_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(in3_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 3);
|
||||
static SENSOR_DEVICE_ATTR_2(in4_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 4);
|
||||
static SENSOR_DEVICE_ATTR_2(in5_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 5);
|
||||
static SENSOR_DEVICE_ATTR_2(in6_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 6);
|
||||
static SENSOR_DEVICE_ATTR_2(in7_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 7);
|
||||
static SENSOR_DEVICE_ATTR_2(in8_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 8);
|
||||
static SENSOR_DEVICE_ATTR_2(in9_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 9);
|
||||
static SENSOR_DEVICE_ATTR_2(in10_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 10);
|
||||
static SENSOR_DEVICE_ATTR_2(in11_max, S_IWUSR | S_IRUGO, max16065_show_limit,
|
||||
max16065_set_limit, 0, 11);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in0_max, max16065_limit, 0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in1_max, max16065_limit, 0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in2_max, max16065_limit, 0, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in3_max, max16065_limit, 0, 3);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in4_max, max16065_limit, 0, 4);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in5_max, max16065_limit, 0, 5);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in6_max, max16065_limit, 0, 6);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in7_max, max16065_limit, 0, 7);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in8_max, max16065_limit, 0, 8);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in9_max, max16065_limit, 0, 9);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in10_max, max16065_limit, 0, 10);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(in11_max, max16065_limit, 0, 11);
|
||||
|
||||
/* alarms */
|
||||
static SENSOR_DEVICE_ATTR_2(in0_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(in1_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(in2_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
0, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(in3_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
0, 3);
|
||||
static SENSOR_DEVICE_ATTR_2(in4_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
0, 4);
|
||||
static SENSOR_DEVICE_ATTR_2(in5_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
0, 5);
|
||||
static SENSOR_DEVICE_ATTR_2(in6_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
0, 6);
|
||||
static SENSOR_DEVICE_ATTR_2(in7_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
0, 7);
|
||||
static SENSOR_DEVICE_ATTR_2(in8_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
1, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(in9_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
1, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(in10_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
1, 2);
|
||||
static SENSOR_DEVICE_ATTR_2(in11_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
1, 3);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in0_alarm, max16065_alarm, 0, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in1_alarm, max16065_alarm, 0, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in2_alarm, max16065_alarm, 0, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in3_alarm, max16065_alarm, 0, 3);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in4_alarm, max16065_alarm, 0, 4);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in5_alarm, max16065_alarm, 0, 5);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in6_alarm, max16065_alarm, 0, 6);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in7_alarm, max16065_alarm, 0, 7);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in8_alarm, max16065_alarm, 1, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in9_alarm, max16065_alarm, 1, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in10_alarm, max16065_alarm, 1, 2);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(in11_alarm, max16065_alarm, 1, 3);
|
||||
|
||||
/* Current and alarm */
|
||||
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, max16065_show_current, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR_2(curr1_alarm, S_IRUGO, max16065_show_alarm, NULL,
|
||||
1, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr1_input, max16065_current, 0);
|
||||
static SENSOR_DEVICE_ATTR_2_RO(curr1_alarm, max16065_alarm, 1, 4);
|
||||
|
||||
/*
|
||||
* Finally, construct an array of pointers to members of the above objects,
|
||||
|
|
|
@ -145,7 +145,7 @@ static struct max1619_data *max1619_update_device(struct device *dev)
|
|||
* Sysfs stuff
|
||||
*/
|
||||
|
||||
static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -154,8 +154,9 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
|
|||
return sprintf(buf, "%d\n", temp_from_reg(data->temp[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t set_temp(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_store(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct max1619_data *data = dev_get_drvdata(dev);
|
||||
|
@ -180,7 +181,7 @@ static ssize_t alarms_show(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", data->alarms);
|
||||
}
|
||||
|
||||
static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t alarm_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int bitnr = to_sensor_dev_attr(attr)->index;
|
||||
|
@ -188,22 +189,18 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", (data->alarms >> bitnr) & 1);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, t_input1);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp, NULL, t_input2);
|
||||
static SENSOR_DEVICE_ATTR(temp2_min, S_IWUSR | S_IRUGO, show_temp, set_temp,
|
||||
t_low2);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max, S_IWUSR | S_IRUGO, show_temp, set_temp,
|
||||
t_high2);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit, S_IWUSR | S_IRUGO, show_temp, set_temp,
|
||||
t_crit2);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit_hyst, S_IWUSR | S_IRUGO, show_temp,
|
||||
set_temp, t_hyst2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, t_input1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp, t_input2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_min, temp, t_low2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_max, temp, t_high2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_crit, temp, t_crit2);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_crit_hyst, temp, t_hyst2);
|
||||
|
||||
static DEVICE_ATTR_RO(alarms);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit_alarm, S_IRUGO, show_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO, show_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp2_min_alarm, S_IRUGO, show_alarm, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max_alarm, S_IRUGO, show_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_crit_alarm, alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_fault, alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_min_alarm, alarm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_max_alarm, alarm, 4);
|
||||
|
||||
static struct attribute *max1619_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -50,9 +50,8 @@ static int max31722_set_mode(struct max31722_data *data, u8 mode)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t max31722_show_temp(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t max31722_temp_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
ssize_t ret;
|
||||
struct max31722_data *data = dev_get_drvdata(dev);
|
||||
|
@ -64,8 +63,7 @@ static ssize_t max31722_show_temp(struct device *dev,
|
|||
return sprintf(buf, "%d\n", (s16)le16_to_cpu(ret) * 125 / 32);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO,
|
||||
max31722_show_temp, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, max31722_temp, 0);
|
||||
|
||||
static struct attribute *max31722_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -252,12 +252,12 @@ static umode_t max31790_fan_is_visible(const void *_data, u32 attr, int channel)
|
|||
case hwmon_fan_fault:
|
||||
if (channel < NR_CHANNEL ||
|
||||
(fan_config & MAX31790_FAN_CFG_TACH_INPUT))
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
return 0;
|
||||
case hwmon_fan_target:
|
||||
if (channel < NR_CHANNEL &&
|
||||
!(fan_config & MAX31790_FAN_CFG_TACH_INPUT))
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
return 0;
|
||||
default:
|
||||
return 0;
|
||||
|
@ -353,7 +353,7 @@ static umode_t max31790_pwm_is_visible(const void *_data, u32 attr, int channel)
|
|||
case hwmon_pwm_input:
|
||||
case hwmon_pwm_enable:
|
||||
if (!(fan_config & MAX31790_FAN_CFG_TACH_INPUT))
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
return 0;
|
||||
default:
|
||||
return 0;
|
||||
|
|
|
@ -162,7 +162,7 @@ static struct max6639_data *max6639_update_device(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t show_temp_input(struct device *dev,
|
||||
static ssize_t temp_input_show(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
{
|
||||
long temp;
|
||||
|
@ -176,7 +176,7 @@ static ssize_t show_temp_input(struct device *dev,
|
|||
return sprintf(buf, "%ld\n", temp);
|
||||
}
|
||||
|
||||
static ssize_t show_temp_fault(struct device *dev,
|
||||
static ssize_t temp_fault_show(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
{
|
||||
struct max6639_data *data = max6639_update_device(dev);
|
||||
|
@ -188,7 +188,7 @@ static ssize_t show_temp_fault(struct device *dev,
|
|||
return sprintf(buf, "%d\n", data->temp_fault[attr->index]);
|
||||
}
|
||||
|
||||
static ssize_t show_temp_max(struct device *dev,
|
||||
static ssize_t temp_max_show(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
|
@ -197,9 +197,9 @@ static ssize_t show_temp_max(struct device *dev,
|
|||
return sprintf(buf, "%d\n", (data->temp_therm[attr->index] * 1000));
|
||||
}
|
||||
|
||||
static ssize_t set_temp_max(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_max_store(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
struct max6639_data *data = dev_get_drvdata(dev);
|
||||
|
@ -220,7 +220,7 @@ static ssize_t set_temp_max(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_temp_crit(struct device *dev,
|
||||
static ssize_t temp_crit_show(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
|
@ -229,9 +229,9 @@ static ssize_t show_temp_crit(struct device *dev,
|
|||
return sprintf(buf, "%d\n", (data->temp_alert[attr->index] * 1000));
|
||||
}
|
||||
|
||||
static ssize_t set_temp_crit(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_crit_store(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
struct max6639_data *data = dev_get_drvdata(dev);
|
||||
|
@ -252,7 +252,7 @@ static ssize_t set_temp_crit(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_temp_emergency(struct device *dev,
|
||||
static ssize_t temp_emergency_show(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
char *buf)
|
||||
{
|
||||
|
@ -262,9 +262,9 @@ static ssize_t show_temp_emergency(struct device *dev,
|
|||
return sprintf(buf, "%d\n", (data->temp_ot[attr->index] * 1000));
|
||||
}
|
||||
|
||||
static ssize_t set_temp_emergency(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_emergency_store(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
struct max6639_data *data = dev_get_drvdata(dev);
|
||||
|
@ -285,8 +285,8 @@ static ssize_t set_temp_emergency(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_pwm(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
static ssize_t pwm_show(struct device *dev, struct device_attribute *dev_attr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
struct max6639_data *data = dev_get_drvdata(dev);
|
||||
|
@ -294,9 +294,9 @@ static ssize_t show_pwm(struct device *dev,
|
|||
return sprintf(buf, "%d\n", data->pwm[attr->index] * 255 / 120);
|
||||
}
|
||||
|
||||
static ssize_t set_pwm(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t pwm_store(struct device *dev,
|
||||
struct device_attribute *dev_attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
struct max6639_data *data = dev_get_drvdata(dev);
|
||||
|
@ -319,7 +319,7 @@ static ssize_t set_pwm(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_fan_input(struct device *dev,
|
||||
static ssize_t fan_input_show(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
{
|
||||
struct max6639_data *data = max6639_update_device(dev);
|
||||
|
@ -332,7 +332,7 @@ static ssize_t show_fan_input(struct device *dev,
|
|||
data->rpm_range));
|
||||
}
|
||||
|
||||
static ssize_t show_alarm(struct device *dev,
|
||||
static ssize_t alarm_show(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
{
|
||||
struct max6639_data *data = max6639_update_device(dev);
|
||||
|
@ -344,34 +344,28 @@ static ssize_t show_alarm(struct device *dev,
|
|||
return sprintf(buf, "%d\n", !!(data->status & (1 << attr->index)));
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp1_fault, S_IRUGO, show_temp_fault, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO, show_temp_fault, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp_max,
|
||||
set_temp_max, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max, S_IWUSR | S_IRUGO, show_temp_max,
|
||||
set_temp_max, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, S_IWUSR | S_IRUGO, show_temp_crit,
|
||||
set_temp_crit, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit, S_IWUSR | S_IRUGO, show_temp_crit,
|
||||
set_temp_crit, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp1_emergency, S_IWUSR | S_IRUGO,
|
||||
show_temp_emergency, set_temp_emergency, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_emergency, S_IWUSR | S_IRUGO,
|
||||
show_temp_emergency, set_temp_emergency, 1);
|
||||
static SENSOR_DEVICE_ATTR(pwm1, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm2, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_fault, S_IRUGO, show_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan2_fault, S_IRUGO, show_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_alarm, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max_alarm, S_IRUGO, show_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO, show_alarm, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit_alarm, S_IRUGO, show_alarm, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp1_emergency_alarm, S_IRUGO, show_alarm, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(temp2_emergency_alarm, S_IRUGO, show_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_fault, temp_fault, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_fault, temp_fault, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, temp_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_max, temp_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_crit, temp_crit, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_crit, temp_crit, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_emergency, temp_emergency, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp2_emergency, temp_emergency, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1, pwm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm2, pwm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, fan_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_input, fan_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_fault, alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_fault, alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, alarm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_max_alarm, alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, alarm, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_crit_alarm, alarm, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_emergency_alarm, alarm, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_emergency_alarm, alarm, 4);
|
||||
|
||||
|
||||
static struct attribute *max6639_attrs[] = {
|
||||
|
|
|
@ -206,7 +206,7 @@ static struct max6642_data *max6642_update_device(struct device *dev)
|
|||
* Sysfs stuff
|
||||
*/
|
||||
|
||||
static ssize_t show_temp_max10(struct device *dev,
|
||||
static ssize_t temp_max10_show(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
|
@ -216,8 +216,8 @@ static ssize_t show_temp_max10(struct device *dev,
|
|||
temp_from_reg10(data->temp_input[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_max(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t temp_max_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute_2 *attr2 = to_sensor_dev_attr_2(attr);
|
||||
struct max6642_data *data = max6642_update_device(dev);
|
||||
|
@ -225,8 +225,9 @@ static ssize_t show_temp_max(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", temp_from_reg(data->temp_high[attr2->nr]));
|
||||
}
|
||||
|
||||
static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_max_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct sensor_device_attribute_2 *attr2 = to_sensor_dev_attr_2(attr);
|
||||
struct max6642_data *data = dev_get_drvdata(dev);
|
||||
|
@ -245,7 +246,7 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t alarm_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int bitnr = to_sensor_dev_attr(attr)->index;
|
||||
|
@ -253,15 +254,15 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "%d\n", (data->alarms >> bitnr) & 1);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_max10, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp_max10, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR_2(temp1_max, S_IWUSR | S_IRUGO, show_temp_max,
|
||||
set_temp_max, 0, MAX6642_REG_W_LOCAL_HIGH);
|
||||
static SENSOR_DEVICE_ATTR_2(temp2_max, S_IWUSR | S_IRUGO, show_temp_max,
|
||||
set_temp_max, 1, MAX6642_REG_W_REMOTE_HIGH);
|
||||
static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO, show_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_alarm, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max_alarm, S_IRUGO, show_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp_max10, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp_max10, 1);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp1_max, temp_max, 0,
|
||||
MAX6642_REG_W_LOCAL_HIGH);
|
||||
static SENSOR_DEVICE_ATTR_2_RW(temp2_max, temp_max, 1,
|
||||
MAX6642_REG_W_REMOTE_HIGH);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_fault, alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, alarm, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_max_alarm, alarm, 4);
|
||||
|
||||
static struct attribute *max6642_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -52,9 +52,9 @@ static int prescaler;
|
|||
/* clock: The clock frequency of the chip (max6651 can be clocked externally) */
|
||||
static int clock = 254000;
|
||||
|
||||
module_param(fan_voltage, int, S_IRUGO);
|
||||
module_param(prescaler, int, S_IRUGO);
|
||||
module_param(clock, int, S_IRUGO);
|
||||
module_param(fan_voltage, int, 0444);
|
||||
module_param(prescaler, int, 0444);
|
||||
module_param(clock, int, 0444);
|
||||
|
||||
/*
|
||||
* MAX 6650/6651 registers
|
||||
|
|
|
@ -63,8 +63,9 @@ static int mc13783_adc_read(struct device *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t mc13783_adc_read_bp(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t mc13783_adc_bp_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
unsigned val;
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
|
@ -86,8 +87,9 @@ static ssize_t mc13783_adc_read_bp(struct device *dev,
|
|||
return sprintf(buf, "%u\n", val);
|
||||
}
|
||||
|
||||
static ssize_t mc13783_adc_read_gp(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t mc13783_adc_gp_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
unsigned val;
|
||||
int ret = mc13783_adc_read(dev, devattr, &val);
|
||||
|
@ -104,8 +106,9 @@ static ssize_t mc13783_adc_read_gp(struct device *dev,
|
|||
return sprintf(buf, "%u\n", val);
|
||||
}
|
||||
|
||||
static ssize_t mc13783_adc_read_uid(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t mc13783_adc_uid_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
unsigned int val;
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
|
@ -125,8 +128,9 @@ static ssize_t mc13783_adc_read_uid(struct device *dev,
|
|||
return sprintf(buf, "%u\n", val);
|
||||
}
|
||||
|
||||
static ssize_t mc13783_adc_read_temp(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t mc13783_adc_temp_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
unsigned int val;
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
|
@ -156,21 +160,20 @@ static ssize_t mc13783_adc_read_temp(struct device *dev,
|
|||
}
|
||||
|
||||
static DEVICE_ATTR_RO(name);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, mc13783_adc_read_bp, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(in5_input, S_IRUGO, mc13783_adc_read_gp, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(in6_input, S_IRUGO, mc13783_adc_read_gp, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(in7_input, S_IRUGO, mc13783_adc_read_gp, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(in8_input, S_IRUGO, mc13783_adc_read_gp, NULL, 8);
|
||||
static SENSOR_DEVICE_ATTR(in9_input, S_IRUGO, mc13783_adc_read_gp, NULL, 9);
|
||||
static SENSOR_DEVICE_ATTR(in10_input, S_IRUGO, mc13783_adc_read_gp, NULL, 10);
|
||||
static SENSOR_DEVICE_ATTR(in11_input, S_IRUGO, mc13783_adc_read_gp, NULL, 11);
|
||||
static SENSOR_DEVICE_ATTR(in12_input, S_IRUGO, mc13783_adc_read_gp, NULL, 12);
|
||||
static SENSOR_DEVICE_ATTR(in13_input, S_IRUGO, mc13783_adc_read_gp, NULL, 13);
|
||||
static SENSOR_DEVICE_ATTR(in14_input, S_IRUGO, mc13783_adc_read_gp, NULL, 14);
|
||||
static SENSOR_DEVICE_ATTR(in15_input, S_IRUGO, mc13783_adc_read_gp, NULL, 15);
|
||||
static SENSOR_DEVICE_ATTR(in16_input, S_IRUGO, mc13783_adc_read_uid, NULL, 16);
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO,
|
||||
mc13783_adc_read_temp, NULL, 17);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, mc13783_adc_bp, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in5_input, mc13783_adc_gp, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(in6_input, mc13783_adc_gp, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(in7_input, mc13783_adc_gp, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(in8_input, mc13783_adc_gp, 8);
|
||||
static SENSOR_DEVICE_ATTR_RO(in9_input, mc13783_adc_gp, 9);
|
||||
static SENSOR_DEVICE_ATTR_RO(in10_input, mc13783_adc_gp, 10);
|
||||
static SENSOR_DEVICE_ATTR_RO(in11_input, mc13783_adc_gp, 11);
|
||||
static SENSOR_DEVICE_ATTR_RO(in12_input, mc13783_adc_gp, 12);
|
||||
static SENSOR_DEVICE_ATTR_RO(in13_input, mc13783_adc_gp, 13);
|
||||
static SENSOR_DEVICE_ATTR_RO(in14_input, mc13783_adc_gp, 14);
|
||||
static SENSOR_DEVICE_ATTR_RO(in15_input, mc13783_adc_gp, 15);
|
||||
static SENSOR_DEVICE_ATTR_RO(in16_input, mc13783_adc_uid, 16);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, mc13783_adc_temp, 17);
|
||||
|
||||
static struct attribute *mc13783_attr_base[] = {
|
||||
&dev_attr_name.attr,
|
||||
|
|
|
@ -182,7 +182,7 @@ static umode_t nct7904_fan_is_visible(const void *_data, u32 attr, int channel)
|
|||
const struct nct7904_data *data = _data;
|
||||
|
||||
if (attr == hwmon_fan_input && data->fanin_mask & (1 << channel))
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -225,7 +225,7 @@ static umode_t nct7904_in_is_visible(const void *_data, u32 attr, int channel)
|
|||
|
||||
if (channel > 0 && attr == hwmon_in_input &&
|
||||
(data->vsen_mask & BIT(index)))
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -260,10 +260,10 @@ static umode_t nct7904_temp_is_visible(const void *_data, u32 attr, int channel)
|
|||
if (attr == hwmon_temp_input) {
|
||||
if (channel == 0) {
|
||||
if (data->vsen_mask & BIT(17))
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
} else {
|
||||
if (data->tcpu_mask & BIT(channel - 1))
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -325,7 +325,7 @@ static umode_t nct7904_pwm_is_visible(const void *_data, u32 attr, int channel)
|
|||
switch (attr) {
|
||||
case hwmon_pwm_input:
|
||||
case hwmon_pwm_enable:
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -114,8 +114,8 @@ static s32 nsa320_hwmon_update(struct device *dev)
|
|||
return mcu_data;
|
||||
}
|
||||
|
||||
static ssize_t show_label(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static ssize_t label_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int channel = to_sensor_dev_attr(attr)->index;
|
||||
|
||||
|
@ -144,9 +144,9 @@ static ssize_t fan1_input_show(struct device *dev,
|
|||
return sprintf(buf, "%d\n", ((mcu_data & 0xff0000) >> 16) * 100);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_label, S_IRUGO, show_label, NULL, NSA320_TEMP);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_label, label, NSA320_TEMP);
|
||||
static DEVICE_ATTR_RO(temp1_input);
|
||||
static SENSOR_DEVICE_ATTR(fan1_label, S_IRUGO, show_label, NULL, NSA320_FAN);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_label, label, NSA320_FAN);
|
||||
static DEVICE_ATTR_RO(fan1_input);
|
||||
|
||||
static struct attribute *nsa320_attrs[] = {
|
||||
|
|
|
@ -37,8 +37,6 @@
|
|||
#include <linux/iio/consumer.h>
|
||||
|
||||
#include <linux/hwmon.h>
|
||||
#include <linux/hwmon-sysfs.h>
|
||||
#include <linux/thermal.h>
|
||||
|
||||
struct ntc_compensation {
|
||||
int temp_c;
|
||||
|
@ -588,55 +586,87 @@ static int ntc_thermistor_get_ohm(struct ntc_data *data)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int ntc_read_temp(void *data, int *temp)
|
||||
{
|
||||
int ohm;
|
||||
|
||||
ohm = ntc_thermistor_get_ohm(data);
|
||||
if (ohm < 0)
|
||||
return ohm;
|
||||
|
||||
*temp = get_temp_mc(data, ohm);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t ntc_type_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return sprintf(buf, "4\n");
|
||||
}
|
||||
|
||||
static ssize_t ntc_temp_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
static int ntc_read(struct device *dev, enum hwmon_sensor_types type,
|
||||
u32 attr, int channel, long *val)
|
||||
{
|
||||
struct ntc_data *data = dev_get_drvdata(dev);
|
||||
int ohm;
|
||||
|
||||
ohm = ntc_thermistor_get_ohm(data);
|
||||
if (ohm < 0)
|
||||
return ohm;
|
||||
|
||||
return sprintf(buf, "%d\n", get_temp_mc(data, ohm));
|
||||
switch (type) {
|
||||
case hwmon_temp:
|
||||
switch (attr) {
|
||||
case hwmon_temp_input:
|
||||
ohm = ntc_thermistor_get_ohm(data);
|
||||
if (ohm < 0)
|
||||
return ohm;
|
||||
*val = get_temp_mc(data, ohm);
|
||||
return 0;
|
||||
case hwmon_temp_type:
|
||||
*val = 4;
|
||||
return 0;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_type, ntc_type, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, ntc_temp, 0);
|
||||
static umode_t ntc_is_visible(const void *data, enum hwmon_sensor_types type,
|
||||
u32 attr, int channel)
|
||||
{
|
||||
if (type == hwmon_temp) {
|
||||
switch (attr) {
|
||||
case hwmon_temp_input:
|
||||
case hwmon_temp_type:
|
||||
return 0444;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct attribute *ntc_attrs[] = {
|
||||
&sensor_dev_attr_temp1_type.dev_attr.attr,
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
NULL,
|
||||
static const u32 ntc_chip_config[] = {
|
||||
HWMON_C_REGISTER_TZ,
|
||||
0
|
||||
};
|
||||
ATTRIBUTE_GROUPS(ntc);
|
||||
|
||||
static const struct thermal_zone_of_device_ops ntc_of_thermal_ops = {
|
||||
.get_temp = ntc_read_temp,
|
||||
static const struct hwmon_channel_info ntc_chip = {
|
||||
.type = hwmon_chip,
|
||||
.config = ntc_chip_config,
|
||||
};
|
||||
|
||||
static const u32 ntc_temp_config[] = {
|
||||
HWMON_T_INPUT, HWMON_T_TYPE,
|
||||
0
|
||||
};
|
||||
|
||||
static const struct hwmon_channel_info ntc_temp = {
|
||||
.type = hwmon_temp,
|
||||
.config = ntc_temp_config,
|
||||
};
|
||||
|
||||
static const struct hwmon_channel_info *ntc_info[] = {
|
||||
&ntc_chip,
|
||||
&ntc_temp,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const struct hwmon_ops ntc_hwmon_ops = {
|
||||
.is_visible = ntc_is_visible,
|
||||
.read = ntc_read,
|
||||
};
|
||||
|
||||
static const struct hwmon_chip_info ntc_chip_info = {
|
||||
.ops = &ntc_hwmon_ops,
|
||||
.info = ntc_info,
|
||||
};
|
||||
|
||||
static int ntc_thermistor_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct thermal_zone_device *tz;
|
||||
struct device *dev = &pdev->dev;
|
||||
const struct of_device_id *of_id =
|
||||
of_match_device(of_match_ptr(ntc_match), dev);
|
||||
|
@ -697,8 +727,9 @@ static int ntc_thermistor_probe(struct platform_device *pdev)
|
|||
data->comp = ntc_type[pdev_id->driver_data].comp;
|
||||
data->n_comp = ntc_type[pdev_id->driver_data].n_comp;
|
||||
|
||||
hwmon_dev = devm_hwmon_device_register_with_groups(dev, pdev_id->name,
|
||||
data, ntc_groups);
|
||||
hwmon_dev = devm_hwmon_device_register_with_info(dev, pdev_id->name,
|
||||
data, &ntc_chip_info,
|
||||
NULL);
|
||||
if (IS_ERR(hwmon_dev)) {
|
||||
dev_err(dev, "unable to register as hwmon device.\n");
|
||||
return PTR_ERR(hwmon_dev);
|
||||
|
@ -707,11 +738,6 @@ static int ntc_thermistor_probe(struct platform_device *pdev)
|
|||
dev_info(dev, "Thermistor type: %s successfully probed.\n",
|
||||
pdev_id->name);
|
||||
|
||||
tz = devm_thermal_zone_of_sensor_register(dev, 0, data,
|
||||
&ntc_of_thermal_ops);
|
||||
if (IS_ERR(tz))
|
||||
dev_dbg(dev, "Failed to register to thermal fw.\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
// Copyright IBM Corp 2019
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/hwmon.h>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/* Copyright IBM Corp 2019 */
|
||||
|
||||
#ifndef OCC_COMMON_H
|
||||
#define OCC_COMMON_H
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
// Copyright IBM Corp 2019
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/errno.h>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
// Copyright IBM Corp 2019
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/errno.h>
|
||||
|
|
|
@ -1,14 +1,5 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* OCC hwmon driver sysfs interface
|
||||
*
|
||||
* Copyright (C) IBM Corporation 2018
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
// Copyright IBM Corp 2019
|
||||
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/device.h>
|
||||
|
|
|
@ -254,7 +254,7 @@ static struct platform_driver pc87360_driver = {
|
|||
* Sysfs stuff
|
||||
*/
|
||||
|
||||
static ssize_t show_fan_input(struct device *dev,
|
||||
static ssize_t fan_input_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -262,7 +262,7 @@ static ssize_t show_fan_input(struct device *dev,
|
|||
return sprintf(buf, "%u\n", FAN_FROM_REG(data->fan[attr->index],
|
||||
FAN_DIV_FROM_REG(data->fan_status[attr->index])));
|
||||
}
|
||||
static ssize_t show_fan_min(struct device *dev,
|
||||
static ssize_t fan_min_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -270,7 +270,7 @@ static ssize_t show_fan_min(struct device *dev,
|
|||
return sprintf(buf, "%u\n", FAN_FROM_REG(data->fan_min[attr->index],
|
||||
FAN_DIV_FROM_REG(data->fan_status[attr->index])));
|
||||
}
|
||||
static ssize_t show_fan_div(struct device *dev,
|
||||
static ssize_t fan_div_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -278,7 +278,7 @@ static ssize_t show_fan_div(struct device *dev,
|
|||
return sprintf(buf, "%u\n",
|
||||
FAN_DIV_FROM_REG(data->fan_status[attr->index]));
|
||||
}
|
||||
static ssize_t show_fan_status(struct device *dev,
|
||||
static ssize_t fan_status_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -286,9 +286,9 @@ static ssize_t show_fan_status(struct device *dev,
|
|||
return sprintf(buf, "%u\n",
|
||||
FAN_STATUS_FROM_REG(data->fan_status[attr->index]));
|
||||
}
|
||||
static ssize_t set_fan_min(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf,
|
||||
size_t count)
|
||||
static ssize_t fan_min_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -325,24 +325,24 @@ static ssize_t set_fan_min(struct device *dev,
|
|||
}
|
||||
|
||||
static struct sensor_device_attribute fan_input[] = {
|
||||
SENSOR_ATTR(fan1_input, S_IRUGO, show_fan_input, NULL, 0),
|
||||
SENSOR_ATTR(fan2_input, S_IRUGO, show_fan_input, NULL, 1),
|
||||
SENSOR_ATTR(fan3_input, S_IRUGO, show_fan_input, NULL, 2),
|
||||
SENSOR_ATTR_RO(fan1_input, fan_input, 0),
|
||||
SENSOR_ATTR_RO(fan2_input, fan_input, 1),
|
||||
SENSOR_ATTR_RO(fan3_input, fan_input, 2),
|
||||
};
|
||||
static struct sensor_device_attribute fan_status[] = {
|
||||
SENSOR_ATTR(fan1_status, S_IRUGO, show_fan_status, NULL, 0),
|
||||
SENSOR_ATTR(fan2_status, S_IRUGO, show_fan_status, NULL, 1),
|
||||
SENSOR_ATTR(fan3_status, S_IRUGO, show_fan_status, NULL, 2),
|
||||
SENSOR_ATTR_RO(fan1_status, fan_status, 0),
|
||||
SENSOR_ATTR_RO(fan2_status, fan_status, 1),
|
||||
SENSOR_ATTR_RO(fan3_status, fan_status, 2),
|
||||
};
|
||||
static struct sensor_device_attribute fan_div[] = {
|
||||
SENSOR_ATTR(fan1_div, S_IRUGO, show_fan_div, NULL, 0),
|
||||
SENSOR_ATTR(fan2_div, S_IRUGO, show_fan_div, NULL, 1),
|
||||
SENSOR_ATTR(fan3_div, S_IRUGO, show_fan_div, NULL, 2),
|
||||
SENSOR_ATTR_RO(fan1_div, fan_div, 0),
|
||||
SENSOR_ATTR_RO(fan2_div, fan_div, 1),
|
||||
SENSOR_ATTR_RO(fan3_div, fan_div, 2),
|
||||
};
|
||||
static struct sensor_device_attribute fan_min[] = {
|
||||
SENSOR_ATTR(fan1_min, S_IWUSR | S_IRUGO, show_fan_min, set_fan_min, 0),
|
||||
SENSOR_ATTR(fan2_min, S_IWUSR | S_IRUGO, show_fan_min, set_fan_min, 1),
|
||||
SENSOR_ATTR(fan3_min, S_IWUSR | S_IRUGO, show_fan_min, set_fan_min, 2),
|
||||
SENSOR_ATTR_RW(fan1_min, fan_min, 0),
|
||||
SENSOR_ATTR_RW(fan2_min, fan_min, 1),
|
||||
SENSOR_ATTR_RW(fan3_min, fan_min, 2),
|
||||
};
|
||||
|
||||
#define FAN_UNIT_ATTRS(X) \
|
||||
|
@ -353,7 +353,7 @@ static struct sensor_device_attribute fan_min[] = {
|
|||
NULL \
|
||||
}
|
||||
|
||||
static ssize_t show_pwm(struct device *dev, struct device_attribute *devattr,
|
||||
static ssize_t pwm_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -363,8 +363,8 @@ static ssize_t show_pwm(struct device *dev, struct device_attribute *devattr,
|
|||
FAN_CONFIG_INVERT(data->fan_conf,
|
||||
attr->index)));
|
||||
}
|
||||
static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t pwm_store(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -385,9 +385,9 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr,
|
|||
}
|
||||
|
||||
static struct sensor_device_attribute pwm[] = {
|
||||
SENSOR_ATTR(pwm1, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 0),
|
||||
SENSOR_ATTR(pwm2, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 1),
|
||||
SENSOR_ATTR(pwm3, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 2),
|
||||
SENSOR_ATTR_RW(pwm1, pwm, 0),
|
||||
SENSOR_ATTR_RW(pwm2, pwm, 1),
|
||||
SENSOR_ATTR_RW(pwm3, pwm, 2),
|
||||
};
|
||||
|
||||
static struct attribute *pc8736x_fan_attr[][5] = {
|
||||
|
@ -402,7 +402,7 @@ static const struct attribute_group pc8736x_fan_attr_group[] = {
|
|||
{ .attrs = pc8736x_fan_attr[2], },
|
||||
};
|
||||
|
||||
static ssize_t show_in_input(struct device *dev,
|
||||
static ssize_t in_input_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -410,7 +410,7 @@ static ssize_t show_in_input(struct device *dev,
|
|||
return sprintf(buf, "%u\n", IN_FROM_REG(data->in[attr->index],
|
||||
data->in_vref));
|
||||
}
|
||||
static ssize_t show_in_min(struct device *dev,
|
||||
static ssize_t in_min_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -418,7 +418,7 @@ static ssize_t show_in_min(struct device *dev,
|
|||
return sprintf(buf, "%u\n", IN_FROM_REG(data->in_min[attr->index],
|
||||
data->in_vref));
|
||||
}
|
||||
static ssize_t show_in_max(struct device *dev,
|
||||
static ssize_t in_max_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -426,15 +426,16 @@ static ssize_t show_in_max(struct device *dev,
|
|||
return sprintf(buf, "%u\n", IN_FROM_REG(data->in_max[attr->index],
|
||||
data->in_vref));
|
||||
}
|
||||
static ssize_t show_in_status(struct device *dev,
|
||||
static ssize_t in_status_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
return sprintf(buf, "%u\n", data->in_status[attr->index]);
|
||||
}
|
||||
static ssize_t set_in_min(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t in_min_store(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -452,8 +453,9 @@ static ssize_t set_in_min(struct device *dev, struct device_attribute *devattr,
|
|||
mutex_unlock(&data->update_lock);
|
||||
return count;
|
||||
}
|
||||
static ssize_t set_in_max(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t in_max_store(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -474,56 +476,56 @@ static ssize_t set_in_max(struct device *dev, struct device_attribute *devattr,
|
|||
}
|
||||
|
||||
static struct sensor_device_attribute in_input[] = {
|
||||
SENSOR_ATTR(in0_input, S_IRUGO, show_in_input, NULL, 0),
|
||||
SENSOR_ATTR(in1_input, S_IRUGO, show_in_input, NULL, 1),
|
||||
SENSOR_ATTR(in2_input, S_IRUGO, show_in_input, NULL, 2),
|
||||
SENSOR_ATTR(in3_input, S_IRUGO, show_in_input, NULL, 3),
|
||||
SENSOR_ATTR(in4_input, S_IRUGO, show_in_input, NULL, 4),
|
||||
SENSOR_ATTR(in5_input, S_IRUGO, show_in_input, NULL, 5),
|
||||
SENSOR_ATTR(in6_input, S_IRUGO, show_in_input, NULL, 6),
|
||||
SENSOR_ATTR(in7_input, S_IRUGO, show_in_input, NULL, 7),
|
||||
SENSOR_ATTR(in8_input, S_IRUGO, show_in_input, NULL, 8),
|
||||
SENSOR_ATTR(in9_input, S_IRUGO, show_in_input, NULL, 9),
|
||||
SENSOR_ATTR(in10_input, S_IRUGO, show_in_input, NULL, 10),
|
||||
SENSOR_ATTR_RO(in0_input, in_input, 0),
|
||||
SENSOR_ATTR_RO(in1_input, in_input, 1),
|
||||
SENSOR_ATTR_RO(in2_input, in_input, 2),
|
||||
SENSOR_ATTR_RO(in3_input, in_input, 3),
|
||||
SENSOR_ATTR_RO(in4_input, in_input, 4),
|
||||
SENSOR_ATTR_RO(in5_input, in_input, 5),
|
||||
SENSOR_ATTR_RO(in6_input, in_input, 6),
|
||||
SENSOR_ATTR_RO(in7_input, in_input, 7),
|
||||
SENSOR_ATTR_RO(in8_input, in_input, 8),
|
||||
SENSOR_ATTR_RO(in9_input, in_input, 9),
|
||||
SENSOR_ATTR_RO(in10_input, in_input, 10),
|
||||
};
|
||||
static struct sensor_device_attribute in_status[] = {
|
||||
SENSOR_ATTR(in0_status, S_IRUGO, show_in_status, NULL, 0),
|
||||
SENSOR_ATTR(in1_status, S_IRUGO, show_in_status, NULL, 1),
|
||||
SENSOR_ATTR(in2_status, S_IRUGO, show_in_status, NULL, 2),
|
||||
SENSOR_ATTR(in3_status, S_IRUGO, show_in_status, NULL, 3),
|
||||
SENSOR_ATTR(in4_status, S_IRUGO, show_in_status, NULL, 4),
|
||||
SENSOR_ATTR(in5_status, S_IRUGO, show_in_status, NULL, 5),
|
||||
SENSOR_ATTR(in6_status, S_IRUGO, show_in_status, NULL, 6),
|
||||
SENSOR_ATTR(in7_status, S_IRUGO, show_in_status, NULL, 7),
|
||||
SENSOR_ATTR(in8_status, S_IRUGO, show_in_status, NULL, 8),
|
||||
SENSOR_ATTR(in9_status, S_IRUGO, show_in_status, NULL, 9),
|
||||
SENSOR_ATTR(in10_status, S_IRUGO, show_in_status, NULL, 10),
|
||||
SENSOR_ATTR_RO(in0_status, in_status, 0),
|
||||
SENSOR_ATTR_RO(in1_status, in_status, 1),
|
||||
SENSOR_ATTR_RO(in2_status, in_status, 2),
|
||||
SENSOR_ATTR_RO(in3_status, in_status, 3),
|
||||
SENSOR_ATTR_RO(in4_status, in_status, 4),
|
||||
SENSOR_ATTR_RO(in5_status, in_status, 5),
|
||||
SENSOR_ATTR_RO(in6_status, in_status, 6),
|
||||
SENSOR_ATTR_RO(in7_status, in_status, 7),
|
||||
SENSOR_ATTR_RO(in8_status, in_status, 8),
|
||||
SENSOR_ATTR_RO(in9_status, in_status, 9),
|
||||
SENSOR_ATTR_RO(in10_status, in_status, 10),
|
||||
};
|
||||
static struct sensor_device_attribute in_min[] = {
|
||||
SENSOR_ATTR(in0_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 0),
|
||||
SENSOR_ATTR(in1_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 1),
|
||||
SENSOR_ATTR(in2_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 2),
|
||||
SENSOR_ATTR(in3_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 3),
|
||||
SENSOR_ATTR(in4_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 4),
|
||||
SENSOR_ATTR(in5_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 5),
|
||||
SENSOR_ATTR(in6_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 6),
|
||||
SENSOR_ATTR(in7_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 7),
|
||||
SENSOR_ATTR(in8_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 8),
|
||||
SENSOR_ATTR(in9_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 9),
|
||||
SENSOR_ATTR(in10_min, S_IWUSR | S_IRUGO, show_in_min, set_in_min, 10),
|
||||
SENSOR_ATTR_RW(in0_min, in_min, 0),
|
||||
SENSOR_ATTR_RW(in1_min, in_min, 1),
|
||||
SENSOR_ATTR_RW(in2_min, in_min, 2),
|
||||
SENSOR_ATTR_RW(in3_min, in_min, 3),
|
||||
SENSOR_ATTR_RW(in4_min, in_min, 4),
|
||||
SENSOR_ATTR_RW(in5_min, in_min, 5),
|
||||
SENSOR_ATTR_RW(in6_min, in_min, 6),
|
||||
SENSOR_ATTR_RW(in7_min, in_min, 7),
|
||||
SENSOR_ATTR_RW(in8_min, in_min, 8),
|
||||
SENSOR_ATTR_RW(in9_min, in_min, 9),
|
||||
SENSOR_ATTR_RW(in10_min, in_min, 10),
|
||||
};
|
||||
static struct sensor_device_attribute in_max[] = {
|
||||
SENSOR_ATTR(in0_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 0),
|
||||
SENSOR_ATTR(in1_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 1),
|
||||
SENSOR_ATTR(in2_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 2),
|
||||
SENSOR_ATTR(in3_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 3),
|
||||
SENSOR_ATTR(in4_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 4),
|
||||
SENSOR_ATTR(in5_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 5),
|
||||
SENSOR_ATTR(in6_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 6),
|
||||
SENSOR_ATTR(in7_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 7),
|
||||
SENSOR_ATTR(in8_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 8),
|
||||
SENSOR_ATTR(in9_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 9),
|
||||
SENSOR_ATTR(in10_max, S_IWUSR | S_IRUGO, show_in_max, set_in_max, 10),
|
||||
SENSOR_ATTR_RW(in0_max, in_max, 0),
|
||||
SENSOR_ATTR_RW(in1_max, in_max, 1),
|
||||
SENSOR_ATTR_RW(in2_max, in_max, 2),
|
||||
SENSOR_ATTR_RW(in3_max, in_max, 3),
|
||||
SENSOR_ATTR_RW(in4_max, in_max, 4),
|
||||
SENSOR_ATTR_RW(in5_max, in_max, 5),
|
||||
SENSOR_ATTR_RW(in6_max, in_max, 6),
|
||||
SENSOR_ATTR_RW(in7_max, in_max, 7),
|
||||
SENSOR_ATTR_RW(in8_max, in_max, 8),
|
||||
SENSOR_ATTR_RW(in9_max, in_max, 9),
|
||||
SENSOR_ATTR_RW(in10_max, in_max, 10),
|
||||
};
|
||||
|
||||
/* (temp & vin) channel status register alarm bits (pdf sec.11.5.12) */
|
||||
|
@ -537,16 +539,16 @@ static struct sensor_device_attribute in_max[] = {
|
|||
* 11.5.2) that (legacy) show_in_alarm() resds (via data->in_alarms)
|
||||
*/
|
||||
|
||||
static ssize_t show_in_min_alarm(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t in_min_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
unsigned nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
||||
return sprintf(buf, "%u\n", !!(data->in_status[nr] & CHAN_ALM_MIN));
|
||||
}
|
||||
static ssize_t show_in_max_alarm(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t in_max_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
unsigned nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -555,30 +557,30 @@ static ssize_t show_in_max_alarm(struct device *dev,
|
|||
}
|
||||
|
||||
static struct sensor_device_attribute in_min_alarm[] = {
|
||||
SENSOR_ATTR(in0_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 0),
|
||||
SENSOR_ATTR(in1_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 1),
|
||||
SENSOR_ATTR(in2_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 2),
|
||||
SENSOR_ATTR(in3_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 3),
|
||||
SENSOR_ATTR(in4_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 4),
|
||||
SENSOR_ATTR(in5_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 5),
|
||||
SENSOR_ATTR(in6_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 6),
|
||||
SENSOR_ATTR(in7_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 7),
|
||||
SENSOR_ATTR(in8_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 8),
|
||||
SENSOR_ATTR(in9_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 9),
|
||||
SENSOR_ATTR(in10_min_alarm, S_IRUGO, show_in_min_alarm, NULL, 10),
|
||||
SENSOR_ATTR_RO(in0_min_alarm, in_min_alarm, 0),
|
||||
SENSOR_ATTR_RO(in1_min_alarm, in_min_alarm, 1),
|
||||
SENSOR_ATTR_RO(in2_min_alarm, in_min_alarm, 2),
|
||||
SENSOR_ATTR_RO(in3_min_alarm, in_min_alarm, 3),
|
||||
SENSOR_ATTR_RO(in4_min_alarm, in_min_alarm, 4),
|
||||
SENSOR_ATTR_RO(in5_min_alarm, in_min_alarm, 5),
|
||||
SENSOR_ATTR_RO(in6_min_alarm, in_min_alarm, 6),
|
||||
SENSOR_ATTR_RO(in7_min_alarm, in_min_alarm, 7),
|
||||
SENSOR_ATTR_RO(in8_min_alarm, in_min_alarm, 8),
|
||||
SENSOR_ATTR_RO(in9_min_alarm, in_min_alarm, 9),
|
||||
SENSOR_ATTR_RO(in10_min_alarm, in_min_alarm, 10),
|
||||
};
|
||||
static struct sensor_device_attribute in_max_alarm[] = {
|
||||
SENSOR_ATTR(in0_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 0),
|
||||
SENSOR_ATTR(in1_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 1),
|
||||
SENSOR_ATTR(in2_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 2),
|
||||
SENSOR_ATTR(in3_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 3),
|
||||
SENSOR_ATTR(in4_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 4),
|
||||
SENSOR_ATTR(in5_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 5),
|
||||
SENSOR_ATTR(in6_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 6),
|
||||
SENSOR_ATTR(in7_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 7),
|
||||
SENSOR_ATTR(in8_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 8),
|
||||
SENSOR_ATTR(in9_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 9),
|
||||
SENSOR_ATTR(in10_max_alarm, S_IRUGO, show_in_max_alarm, NULL, 10),
|
||||
SENSOR_ATTR_RO(in0_max_alarm, in_max_alarm, 0),
|
||||
SENSOR_ATTR_RO(in1_max_alarm, in_max_alarm, 1),
|
||||
SENSOR_ATTR_RO(in2_max_alarm, in_max_alarm, 2),
|
||||
SENSOR_ATTR_RO(in3_max_alarm, in_max_alarm, 3),
|
||||
SENSOR_ATTR_RO(in4_max_alarm, in_max_alarm, 4),
|
||||
SENSOR_ATTR_RO(in5_max_alarm, in_max_alarm, 5),
|
||||
SENSOR_ATTR_RO(in6_max_alarm, in_max_alarm, 6),
|
||||
SENSOR_ATTR_RO(in7_max_alarm, in_max_alarm, 7),
|
||||
SENSOR_ATTR_RO(in8_max_alarm, in_max_alarm, 8),
|
||||
SENSOR_ATTR_RO(in9_max_alarm, in_max_alarm, 9),
|
||||
SENSOR_ATTR_RO(in10_max_alarm, in_max_alarm, 10),
|
||||
};
|
||||
|
||||
#define VIN_UNIT_ATTRS(X) \
|
||||
|
@ -651,7 +653,7 @@ static const struct attribute_group pc8736x_vin_group = {
|
|||
.attrs = pc8736x_vin_attr_array,
|
||||
};
|
||||
|
||||
static ssize_t show_therm_input(struct device *dev,
|
||||
static ssize_t therm_input_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -659,7 +661,7 @@ static ssize_t show_therm_input(struct device *dev,
|
|||
return sprintf(buf, "%u\n", IN_FROM_REG(data->in[attr->index],
|
||||
data->in_vref));
|
||||
}
|
||||
static ssize_t show_therm_min(struct device *dev,
|
||||
static ssize_t therm_min_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -667,7 +669,7 @@ static ssize_t show_therm_min(struct device *dev,
|
|||
return sprintf(buf, "%u\n", IN_FROM_REG(data->in_min[attr->index],
|
||||
data->in_vref));
|
||||
}
|
||||
static ssize_t show_therm_max(struct device *dev,
|
||||
static ssize_t therm_max_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -675,7 +677,7 @@ static ssize_t show_therm_max(struct device *dev,
|
|||
return sprintf(buf, "%u\n", IN_FROM_REG(data->in_max[attr->index],
|
||||
data->in_vref));
|
||||
}
|
||||
static ssize_t show_therm_crit(struct device *dev,
|
||||
static ssize_t therm_crit_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -683,7 +685,7 @@ static ssize_t show_therm_crit(struct device *dev,
|
|||
return sprintf(buf, "%u\n", IN_FROM_REG(data->in_crit[attr->index-11],
|
||||
data->in_vref));
|
||||
}
|
||||
static ssize_t show_therm_status(struct device *dev,
|
||||
static ssize_t therm_status_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -691,9 +693,9 @@ static ssize_t show_therm_status(struct device *dev,
|
|||
return sprintf(buf, "%u\n", data->in_status[attr->index]);
|
||||
}
|
||||
|
||||
static ssize_t set_therm_min(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t therm_min_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -712,9 +714,9 @@ static ssize_t set_therm_min(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t set_therm_max(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t therm_max_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -732,9 +734,9 @@ static ssize_t set_therm_max(struct device *dev,
|
|||
mutex_unlock(&data->update_lock);
|
||||
return count;
|
||||
}
|
||||
static ssize_t set_therm_crit(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t therm_crit_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -758,38 +760,29 @@ static ssize_t set_therm_crit(struct device *dev,
|
|||
* used in the chip to measure voltage across the thermistors
|
||||
*/
|
||||
static struct sensor_device_attribute therm_input[] = {
|
||||
SENSOR_ATTR(temp4_input, S_IRUGO, show_therm_input, NULL, 0 + 11),
|
||||
SENSOR_ATTR(temp5_input, S_IRUGO, show_therm_input, NULL, 1 + 11),
|
||||
SENSOR_ATTR(temp6_input, S_IRUGO, show_therm_input, NULL, 2 + 11),
|
||||
SENSOR_ATTR_RO(temp4_input, therm_input, 0 + 11),
|
||||
SENSOR_ATTR_RO(temp5_input, therm_input, 1 + 11),
|
||||
SENSOR_ATTR_RO(temp6_input, therm_input, 2 + 11),
|
||||
};
|
||||
static struct sensor_device_attribute therm_status[] = {
|
||||
SENSOR_ATTR(temp4_status, S_IRUGO, show_therm_status, NULL, 0 + 11),
|
||||
SENSOR_ATTR(temp5_status, S_IRUGO, show_therm_status, NULL, 1 + 11),
|
||||
SENSOR_ATTR(temp6_status, S_IRUGO, show_therm_status, NULL, 2 + 11),
|
||||
SENSOR_ATTR_RO(temp4_status, therm_status, 0 + 11),
|
||||
SENSOR_ATTR_RO(temp5_status, therm_status, 1 + 11),
|
||||
SENSOR_ATTR_RO(temp6_status, therm_status, 2 + 11),
|
||||
};
|
||||
static struct sensor_device_attribute therm_min[] = {
|
||||
SENSOR_ATTR(temp4_min, S_IRUGO | S_IWUSR,
|
||||
show_therm_min, set_therm_min, 0 + 11),
|
||||
SENSOR_ATTR(temp5_min, S_IRUGO | S_IWUSR,
|
||||
show_therm_min, set_therm_min, 1 + 11),
|
||||
SENSOR_ATTR(temp6_min, S_IRUGO | S_IWUSR,
|
||||
show_therm_min, set_therm_min, 2 + 11),
|
||||
SENSOR_ATTR_RW(temp4_min, therm_min, 0 + 11),
|
||||
SENSOR_ATTR_RW(temp5_min, therm_min, 1 + 11),
|
||||
SENSOR_ATTR_RW(temp6_min, therm_min, 2 + 11),
|
||||
};
|
||||
static struct sensor_device_attribute therm_max[] = {
|
||||
SENSOR_ATTR(temp4_max, S_IRUGO | S_IWUSR,
|
||||
show_therm_max, set_therm_max, 0 + 11),
|
||||
SENSOR_ATTR(temp5_max, S_IRUGO | S_IWUSR,
|
||||
show_therm_max, set_therm_max, 1 + 11),
|
||||
SENSOR_ATTR(temp6_max, S_IRUGO | S_IWUSR,
|
||||
show_therm_max, set_therm_max, 2 + 11),
|
||||
SENSOR_ATTR_RW(temp4_max, therm_max, 0 + 11),
|
||||
SENSOR_ATTR_RW(temp5_max, therm_max, 1 + 11),
|
||||
SENSOR_ATTR_RW(temp6_max, therm_max, 2 + 11),
|
||||
};
|
||||
static struct sensor_device_attribute therm_crit[] = {
|
||||
SENSOR_ATTR(temp4_crit, S_IRUGO | S_IWUSR,
|
||||
show_therm_crit, set_therm_crit, 0 + 11),
|
||||
SENSOR_ATTR(temp5_crit, S_IRUGO | S_IWUSR,
|
||||
show_therm_crit, set_therm_crit, 1 + 11),
|
||||
SENSOR_ATTR(temp6_crit, S_IRUGO | S_IWUSR,
|
||||
show_therm_crit, set_therm_crit, 2 + 11),
|
||||
SENSOR_ATTR_RW(temp4_crit, therm_crit, 0 + 11),
|
||||
SENSOR_ATTR_RW(temp5_crit, therm_crit, 1 + 11),
|
||||
SENSOR_ATTR_RW(temp6_crit, therm_crit, 2 + 11),
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -797,24 +790,27 @@ static struct sensor_device_attribute therm_crit[] = {
|
|||
* status register (sec 11.5.12)
|
||||
*/
|
||||
|
||||
static ssize_t show_therm_min_alarm(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t therm_min_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
unsigned nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
||||
return sprintf(buf, "%u\n", !!(data->in_status[nr] & CHAN_ALM_MIN));
|
||||
}
|
||||
static ssize_t show_therm_max_alarm(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t therm_max_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
unsigned nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
||||
return sprintf(buf, "%u\n", !!(data->in_status[nr] & CHAN_ALM_MAX));
|
||||
}
|
||||
static ssize_t show_therm_crit_alarm(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t therm_crit_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
unsigned nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -823,28 +819,19 @@ static ssize_t show_therm_crit_alarm(struct device *dev,
|
|||
}
|
||||
|
||||
static struct sensor_device_attribute therm_min_alarm[] = {
|
||||
SENSOR_ATTR(temp4_min_alarm, S_IRUGO,
|
||||
show_therm_min_alarm, NULL, 0 + 11),
|
||||
SENSOR_ATTR(temp5_min_alarm, S_IRUGO,
|
||||
show_therm_min_alarm, NULL, 1 + 11),
|
||||
SENSOR_ATTR(temp6_min_alarm, S_IRUGO,
|
||||
show_therm_min_alarm, NULL, 2 + 11),
|
||||
SENSOR_ATTR_RO(temp4_min_alarm, therm_min_alarm, 0 + 11),
|
||||
SENSOR_ATTR_RO(temp5_min_alarm, therm_min_alarm, 1 + 11),
|
||||
SENSOR_ATTR_RO(temp6_min_alarm, therm_min_alarm, 2 + 11),
|
||||
};
|
||||
static struct sensor_device_attribute therm_max_alarm[] = {
|
||||
SENSOR_ATTR(temp4_max_alarm, S_IRUGO,
|
||||
show_therm_max_alarm, NULL, 0 + 11),
|
||||
SENSOR_ATTR(temp5_max_alarm, S_IRUGO,
|
||||
show_therm_max_alarm, NULL, 1 + 11),
|
||||
SENSOR_ATTR(temp6_max_alarm, S_IRUGO,
|
||||
show_therm_max_alarm, NULL, 2 + 11),
|
||||
SENSOR_ATTR_RO(temp4_max_alarm, therm_max_alarm, 0 + 11),
|
||||
SENSOR_ATTR_RO(temp5_max_alarm, therm_max_alarm, 1 + 11),
|
||||
SENSOR_ATTR_RO(temp6_max_alarm, therm_max_alarm, 2 + 11),
|
||||
};
|
||||
static struct sensor_device_attribute therm_crit_alarm[] = {
|
||||
SENSOR_ATTR(temp4_crit_alarm, S_IRUGO,
|
||||
show_therm_crit_alarm, NULL, 0 + 11),
|
||||
SENSOR_ATTR(temp5_crit_alarm, S_IRUGO,
|
||||
show_therm_crit_alarm, NULL, 1 + 11),
|
||||
SENSOR_ATTR(temp6_crit_alarm, S_IRUGO,
|
||||
show_therm_crit_alarm, NULL, 2 + 11),
|
||||
SENSOR_ATTR_RO(temp4_crit_alarm, therm_crit_alarm, 0 + 11),
|
||||
SENSOR_ATTR_RO(temp5_crit_alarm, therm_crit_alarm, 1 + 11),
|
||||
SENSOR_ATTR_RO(temp6_crit_alarm, therm_crit_alarm, 2 + 11),
|
||||
};
|
||||
|
||||
#define THERM_UNIT_ATTRS(X) \
|
||||
|
@ -867,7 +854,7 @@ static const struct attribute_group pc8736x_therm_group = {
|
|||
.attrs = pc8736x_therm_attr_array,
|
||||
};
|
||||
|
||||
static ssize_t show_temp_input(struct device *dev,
|
||||
static ssize_t temp_input_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -875,7 +862,7 @@ static ssize_t show_temp_input(struct device *dev,
|
|||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_min(struct device *dev,
|
||||
static ssize_t temp_min_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -883,7 +870,7 @@ static ssize_t show_temp_min(struct device *dev,
|
|||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_min[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_max(struct device *dev,
|
||||
static ssize_t temp_max_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -891,7 +878,7 @@ static ssize_t show_temp_max(struct device *dev,
|
|||
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_max[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_crit(struct device *dev,
|
||||
static ssize_t temp_crit_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -900,7 +887,7 @@ static ssize_t show_temp_crit(struct device *dev,
|
|||
TEMP_FROM_REG(data->temp_crit[attr->index]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_status(struct device *dev,
|
||||
static ssize_t temp_status_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -908,9 +895,9 @@ static ssize_t show_temp_status(struct device *dev,
|
|||
return sprintf(buf, "%d\n", data->temp_status[attr->index]);
|
||||
}
|
||||
|
||||
static ssize_t set_temp_min(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_min_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -929,9 +916,9 @@ static ssize_t set_temp_min(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t set_temp_max(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t temp_max_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -950,9 +937,9 @@ static ssize_t set_temp_max(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t set_temp_crit(struct device *dev,
|
||||
struct device_attribute *devattr, const char *buf,
|
||||
size_t count)
|
||||
static ssize_t temp_crit_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct pc87360_data *data = dev_get_drvdata(dev);
|
||||
|
@ -972,38 +959,29 @@ static ssize_t set_temp_crit(struct device *dev,
|
|||
}
|
||||
|
||||
static struct sensor_device_attribute temp_input[] = {
|
||||
SENSOR_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL, 0),
|
||||
SENSOR_ATTR(temp2_input, S_IRUGO, show_temp_input, NULL, 1),
|
||||
SENSOR_ATTR(temp3_input, S_IRUGO, show_temp_input, NULL, 2),
|
||||
SENSOR_ATTR_RO(temp1_input, temp_input, 0),
|
||||
SENSOR_ATTR_RO(temp2_input, temp_input, 1),
|
||||
SENSOR_ATTR_RO(temp3_input, temp_input, 2),
|
||||
};
|
||||
static struct sensor_device_attribute temp_status[] = {
|
||||
SENSOR_ATTR(temp1_status, S_IRUGO, show_temp_status, NULL, 0),
|
||||
SENSOR_ATTR(temp2_status, S_IRUGO, show_temp_status, NULL, 1),
|
||||
SENSOR_ATTR(temp3_status, S_IRUGO, show_temp_status, NULL, 2),
|
||||
SENSOR_ATTR_RO(temp1_status, temp_status, 0),
|
||||
SENSOR_ATTR_RO(temp2_status, temp_status, 1),
|
||||
SENSOR_ATTR_RO(temp3_status, temp_status, 2),
|
||||
};
|
||||
static struct sensor_device_attribute temp_min[] = {
|
||||
SENSOR_ATTR(temp1_min, S_IRUGO | S_IWUSR,
|
||||
show_temp_min, set_temp_min, 0),
|
||||
SENSOR_ATTR(temp2_min, S_IRUGO | S_IWUSR,
|
||||
show_temp_min, set_temp_min, 1),
|
||||
SENSOR_ATTR(temp3_min, S_IRUGO | S_IWUSR,
|
||||
show_temp_min, set_temp_min, 2),
|
||||
SENSOR_ATTR_RW(temp1_min, temp_min, 0),
|
||||
SENSOR_ATTR_RW(temp2_min, temp_min, 1),
|
||||
SENSOR_ATTR_RW(temp3_min, temp_min, 2),
|
||||
};
|
||||
static struct sensor_device_attribute temp_max[] = {
|
||||
SENSOR_ATTR(temp1_max, S_IRUGO | S_IWUSR,
|
||||
show_temp_max, set_temp_max, 0),
|
||||
SENSOR_ATTR(temp2_max, S_IRUGO | S_IWUSR,
|
||||
show_temp_max, set_temp_max, 1),
|
||||
SENSOR_ATTR(temp3_max, S_IRUGO | S_IWUSR,
|
||||
show_temp_max, set_temp_max, 2),
|
||||
SENSOR_ATTR_RW(temp1_max, temp_max, 0),
|
||||
SENSOR_ATTR_RW(temp2_max, temp_max, 1),
|
||||
SENSOR_ATTR_RW(temp3_max, temp_max, 2),
|
||||
};
|
||||
static struct sensor_device_attribute temp_crit[] = {
|
||||
SENSOR_ATTR(temp1_crit, S_IRUGO | S_IWUSR,
|
||||
show_temp_crit, set_temp_crit, 0),
|
||||
SENSOR_ATTR(temp2_crit, S_IRUGO | S_IWUSR,
|
||||
show_temp_crit, set_temp_crit, 1),
|
||||
SENSOR_ATTR(temp3_crit, S_IRUGO | S_IWUSR,
|
||||
show_temp_crit, set_temp_crit, 2),
|
||||
SENSOR_ATTR_RW(temp1_crit, temp_crit, 0),
|
||||
SENSOR_ATTR_RW(temp2_crit, temp_crit, 1),
|
||||
SENSOR_ATTR_RW(temp3_crit, temp_crit, 2),
|
||||
};
|
||||
|
||||
static ssize_t alarms_temp_show(struct device *dev,
|
||||
|
@ -1021,8 +999,9 @@ static DEVICE_ATTR_RO(alarms_temp);
|
|||
* 12.3.2) that show_temp_alarm() reads (via data->temp_alarms)
|
||||
*/
|
||||
|
||||
static ssize_t show_temp_min_alarm(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t temp_min_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
unsigned nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -1030,8 +1009,9 @@ static ssize_t show_temp_min_alarm(struct device *dev,
|
|||
return sprintf(buf, "%u\n", !!(data->temp_status[nr] & CHAN_ALM_MIN));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_max_alarm(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t temp_max_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
unsigned nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -1039,8 +1019,9 @@ static ssize_t show_temp_max_alarm(struct device *dev,
|
|||
return sprintf(buf, "%u\n", !!(data->temp_status[nr] & CHAN_ALM_MAX));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_crit_alarm(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t temp_crit_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
unsigned nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -1049,26 +1030,26 @@ static ssize_t show_temp_crit_alarm(struct device *dev,
|
|||
}
|
||||
|
||||
static struct sensor_device_attribute temp_min_alarm[] = {
|
||||
SENSOR_ATTR(temp1_min_alarm, S_IRUGO, show_temp_min_alarm, NULL, 0),
|
||||
SENSOR_ATTR(temp2_min_alarm, S_IRUGO, show_temp_min_alarm, NULL, 1),
|
||||
SENSOR_ATTR(temp3_min_alarm, S_IRUGO, show_temp_min_alarm, NULL, 2),
|
||||
SENSOR_ATTR_RO(temp1_min_alarm, temp_min_alarm, 0),
|
||||
SENSOR_ATTR_RO(temp2_min_alarm, temp_min_alarm, 1),
|
||||
SENSOR_ATTR_RO(temp3_min_alarm, temp_min_alarm, 2),
|
||||
};
|
||||
|
||||
static struct sensor_device_attribute temp_max_alarm[] = {
|
||||
SENSOR_ATTR(temp1_max_alarm, S_IRUGO, show_temp_max_alarm, NULL, 0),
|
||||
SENSOR_ATTR(temp2_max_alarm, S_IRUGO, show_temp_max_alarm, NULL, 1),
|
||||
SENSOR_ATTR(temp3_max_alarm, S_IRUGO, show_temp_max_alarm, NULL, 2),
|
||||
SENSOR_ATTR_RO(temp1_max_alarm, temp_max_alarm, 0),
|
||||
SENSOR_ATTR_RO(temp2_max_alarm, temp_max_alarm, 1),
|
||||
SENSOR_ATTR_RO(temp3_max_alarm, temp_max_alarm, 2),
|
||||
};
|
||||
|
||||
static struct sensor_device_attribute temp_crit_alarm[] = {
|
||||
SENSOR_ATTR(temp1_crit_alarm, S_IRUGO, show_temp_crit_alarm, NULL, 0),
|
||||
SENSOR_ATTR(temp2_crit_alarm, S_IRUGO, show_temp_crit_alarm, NULL, 1),
|
||||
SENSOR_ATTR(temp3_crit_alarm, S_IRUGO, show_temp_crit_alarm, NULL, 2),
|
||||
SENSOR_ATTR_RO(temp1_crit_alarm, temp_crit_alarm, 0),
|
||||
SENSOR_ATTR_RO(temp2_crit_alarm, temp_crit_alarm, 1),
|
||||
SENSOR_ATTR_RO(temp3_crit_alarm, temp_crit_alarm, 2),
|
||||
};
|
||||
|
||||
#define TEMP_FAULT 0x40 /* open diode */
|
||||
static ssize_t show_temp_fault(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t temp_fault_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87360_data *data = pc87360_update_device(dev);
|
||||
unsigned nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -1076,9 +1057,9 @@ static ssize_t show_temp_fault(struct device *dev,
|
|||
return sprintf(buf, "%u\n", !!(data->temp_status[nr] & TEMP_FAULT));
|
||||
}
|
||||
static struct sensor_device_attribute temp_fault[] = {
|
||||
SENSOR_ATTR(temp1_fault, S_IRUGO, show_temp_fault, NULL, 0),
|
||||
SENSOR_ATTR(temp2_fault, S_IRUGO, show_temp_fault, NULL, 1),
|
||||
SENSOR_ATTR(temp3_fault, S_IRUGO, show_temp_fault, NULL, 2),
|
||||
SENSOR_ATTR_RO(temp1_fault, temp_fault, 0),
|
||||
SENSOR_ATTR_RO(temp2_fault, temp_fault, 1),
|
||||
SENSOR_ATTR_RO(temp3_fault, temp_fault, 2),
|
||||
};
|
||||
|
||||
#define TEMP_UNIT_ATTRS(X) \
|
||||
|
|
|
@ -384,8 +384,8 @@ static struct pc87427_data *pc87427_update_device(struct device *dev)
|
|||
return data;
|
||||
}
|
||||
|
||||
static ssize_t show_fan_input(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_input_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -393,8 +393,8 @@ static ssize_t show_fan_input(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%lu\n", fan_from_reg(data->fan[nr]));
|
||||
}
|
||||
|
||||
static ssize_t show_fan_min(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_min_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -402,8 +402,8 @@ static ssize_t show_fan_min(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%lu\n", fan_from_reg(data->fan_min[nr]));
|
||||
}
|
||||
|
||||
static ssize_t show_fan_alarm(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -412,8 +412,8 @@ static ssize_t show_fan_alarm(struct device *dev, struct device_attribute
|
|||
& FAN_STATUS_LOSPD));
|
||||
}
|
||||
|
||||
static ssize_t show_fan_fault(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_fault_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -422,8 +422,9 @@ static ssize_t show_fan_fault(struct device *dev, struct device_attribute
|
|||
& FAN_STATUS_STALL));
|
||||
}
|
||||
|
||||
static ssize_t set_fan_min(struct device *dev, struct device_attribute
|
||||
*devattr, const char *buf, size_t count)
|
||||
static ssize_t fan_min_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct pc87427_data *data = dev_get_drvdata(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -449,49 +450,41 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO, show_fan_input, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_input, S_IRUGO, show_fan_input, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(fan5_input, S_IRUGO, show_fan_input, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(fan6_input, S_IRUGO, show_fan_input, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(fan7_input, S_IRUGO, show_fan_input, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(fan8_input, S_IRUGO, show_fan_input, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, fan_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_input, fan_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan3_input, fan_input, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan4_input, fan_input, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan5_input, fan_input, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan6_input, fan_input, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan7_input, fan_input, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan8_input, fan_input, 7);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, set_fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, set_fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, set_fan_min, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, set_fan_min, 3);
|
||||
static SENSOR_DEVICE_ATTR(fan5_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, set_fan_min, 4);
|
||||
static SENSOR_DEVICE_ATTR(fan6_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, set_fan_min, 5);
|
||||
static SENSOR_DEVICE_ATTR(fan7_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, set_fan_min, 6);
|
||||
static SENSOR_DEVICE_ATTR(fan8_min, S_IWUSR | S_IRUGO,
|
||||
show_fan_min, set_fan_min, 7);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_min, fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_min, fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan3_min, fan_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan4_min, fan_min, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan5_min, fan_min, 4);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan6_min, fan_min, 5);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan7_min, fan_min, 6);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan8_min, fan_min, 7);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_alarm, S_IRUGO, show_fan_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_alarm, S_IRUGO, show_fan_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_alarm, S_IRUGO, show_fan_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_alarm, S_IRUGO, show_fan_alarm, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(fan5_alarm, S_IRUGO, show_fan_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(fan6_alarm, S_IRUGO, show_fan_alarm, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(fan7_alarm, S_IRUGO, show_fan_alarm, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(fan8_alarm, S_IRUGO, show_fan_alarm, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_alarm, fan_alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_alarm, fan_alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan3_alarm, fan_alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan4_alarm, fan_alarm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan5_alarm, fan_alarm, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan6_alarm, fan_alarm, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan7_alarm, fan_alarm, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan8_alarm, fan_alarm, 7);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_fault, S_IRUGO, show_fan_fault, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_fault, S_IRUGO, show_fan_fault, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_fault, S_IRUGO, show_fan_fault, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_fault, S_IRUGO, show_fan_fault, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(fan5_fault, S_IRUGO, show_fan_fault, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(fan6_fault, S_IRUGO, show_fan_fault, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(fan7_fault, S_IRUGO, show_fan_fault, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(fan8_fault, S_IRUGO, show_fan_fault, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_fault, fan_fault, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_fault, fan_fault, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan3_fault, fan_fault, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan4_fault, fan_fault, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan5_fault, fan_fault, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan6_fault, fan_fault, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan7_fault, fan_fault, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan8_fault, fan_fault, 7);
|
||||
|
||||
static struct attribute *pc87427_attributes_fan[8][5] = {
|
||||
{
|
||||
|
@ -568,8 +561,8 @@ static void update_pwm_enable(struct pc87427_data *data, int nr, u8 mode)
|
|||
outb(data->pwm_enable[nr], iobase + PC87427_REG_PWM_ENABLE);
|
||||
}
|
||||
|
||||
static ssize_t show_pwm_enable(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t pwm_enable_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -581,8 +574,9 @@ static ssize_t show_pwm_enable(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%d\n", pwm_enable);
|
||||
}
|
||||
|
||||
static ssize_t set_pwm_enable(struct device *dev, struct device_attribute
|
||||
*devattr, const char *buf, size_t count)
|
||||
static ssize_t pwm_enable_store(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct pc87427_data *data = dev_get_drvdata(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -602,8 +596,8 @@ static ssize_t set_pwm_enable(struct device *dev, struct device_attribute
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_pwm(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t pwm_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -611,8 +605,8 @@ static ssize_t show_pwm(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%d\n", (int)data->pwm[nr]);
|
||||
}
|
||||
|
||||
static ssize_t set_pwm(struct device *dev, struct device_attribute
|
||||
*devattr, const char *buf, size_t count)
|
||||
static ssize_t pwm_store(struct device *dev, struct device_attribute *devattr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct pc87427_data *data = dev_get_drvdata(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -657,19 +651,15 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(pwm1_enable, S_IWUSR | S_IRUGO,
|
||||
show_pwm_enable, set_pwm_enable, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm2_enable, S_IWUSR | S_IRUGO,
|
||||
show_pwm_enable, set_pwm_enable, 1);
|
||||
static SENSOR_DEVICE_ATTR(pwm3_enable, S_IWUSR | S_IRUGO,
|
||||
show_pwm_enable, set_pwm_enable, 2);
|
||||
static SENSOR_DEVICE_ATTR(pwm4_enable, S_IWUSR | S_IRUGO,
|
||||
show_pwm_enable, set_pwm_enable, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1_enable, pwm_enable, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm2_enable, pwm_enable, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm3_enable, pwm_enable, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm4_enable, pwm_enable, 3);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(pwm1, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm2, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 1);
|
||||
static SENSOR_DEVICE_ATTR(pwm3, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 2);
|
||||
static SENSOR_DEVICE_ATTR(pwm4, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1, pwm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm2, pwm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm3, pwm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm4, pwm, 3);
|
||||
|
||||
static struct attribute *pc87427_attributes_pwm[4][3] = {
|
||||
{
|
||||
|
@ -698,8 +688,8 @@ static const struct attribute_group pc87427_group_pwm[4] = {
|
|||
{ .attrs = pc87427_attributes_pwm[3] },
|
||||
};
|
||||
|
||||
static ssize_t show_temp_input(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_input_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -707,8 +697,8 @@ static ssize_t show_temp_input(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%ld\n", temp_from_reg(data->temp[nr]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_min(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_min_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -716,8 +706,8 @@ static ssize_t show_temp_min(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%ld\n", temp_from_reg8(data->temp_min[nr]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_max(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_max_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -725,8 +715,8 @@ static ssize_t show_temp_max(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%ld\n", temp_from_reg8(data->temp_max[nr]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_crit(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_crit_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -734,8 +724,8 @@ static ssize_t show_temp_crit(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%ld\n", temp_from_reg8(data->temp_crit[nr]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_type(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_type_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -743,8 +733,9 @@ static ssize_t show_temp_type(struct device *dev, struct device_attribute
|
|||
return sprintf(buf, "%u\n", temp_type_from_reg(data->temp_type[nr]));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_min_alarm(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_min_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -753,8 +744,9 @@ static ssize_t show_temp_min_alarm(struct device *dev, struct device_attribute
|
|||
& TEMP_STATUS_LOWFLG));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_max_alarm(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_max_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -763,8 +755,9 @@ static ssize_t show_temp_max_alarm(struct device *dev, struct device_attribute
|
|||
& TEMP_STATUS_HIGHFLG));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_crit_alarm(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_crit_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -773,8 +766,8 @@ static ssize_t show_temp_crit_alarm(struct device *dev, struct device_attribute
|
|||
& TEMP_STATUS_CRITFLG));
|
||||
}
|
||||
|
||||
static ssize_t show_temp_fault(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_fault_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct pc87427_data *data = pc87427_update_device(dev);
|
||||
int nr = to_sensor_dev_attr(devattr)->index;
|
||||
|
@ -783,86 +776,68 @@ static ssize_t show_temp_fault(struct device *dev, struct device_attribute
|
|||
& TEMP_STATUS_SENSERR));
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp_input, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp_input, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_input, S_IRUGO, show_temp_input, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_input, S_IRUGO, show_temp_input, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_input, S_IRUGO, show_temp_input, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp_input, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_input, temp_input, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_input, temp_input, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_input, temp_input, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_input, temp_input, 5);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, S_IRUGO, show_temp_min, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_min, S_IRUGO, show_temp_min, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_min, S_IRUGO, show_temp_min, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_min, S_IRUGO, show_temp_min, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_min, S_IRUGO, show_temp_min, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_min, S_IRUGO, show_temp_min, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_min, temp_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_min, temp_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_min, temp_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_min, temp_min, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_min, temp_min, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_min, temp_min, 5);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO, show_temp_max, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max, S_IRUGO, show_temp_max, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_max, S_IRUGO, show_temp_max, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_max, S_IRUGO, show_temp_max, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_max, S_IRUGO, show_temp_max, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_max, S_IRUGO, show_temp_max, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max, temp_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_max, temp_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_max, temp_max, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_max, temp_max, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_max, temp_max, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_max, temp_max, 5);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO, show_temp_crit, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit, S_IRUGO, show_temp_crit, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_crit, S_IRUGO, show_temp_crit, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_crit, S_IRUGO, show_temp_crit, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_crit, S_IRUGO, show_temp_crit, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_crit, S_IRUGO, show_temp_crit, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit, temp_crit, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_crit, temp_crit, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_crit, temp_crit, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_crit, temp_crit, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_crit, temp_crit, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_crit, temp_crit, 5);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_type, S_IRUGO, show_temp_type, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_type, S_IRUGO, show_temp_type, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_type, S_IRUGO, show_temp_type, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_type, S_IRUGO, show_temp_type, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_type, S_IRUGO, show_temp_type, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_type, S_IRUGO, show_temp_type, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_type, temp_type, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_type, temp_type, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_type, temp_type, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_type, temp_type, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_type, temp_type, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_type, temp_type, 5);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_min_alarm, S_IRUGO,
|
||||
show_temp_min_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_min_alarm, S_IRUGO,
|
||||
show_temp_min_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_min_alarm, S_IRUGO,
|
||||
show_temp_min_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_min_alarm, S_IRUGO,
|
||||
show_temp_min_alarm, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_min_alarm, S_IRUGO,
|
||||
show_temp_min_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_min_alarm, S_IRUGO,
|
||||
show_temp_min_alarm, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_min_alarm, temp_min_alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_min_alarm, temp_min_alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_min_alarm, temp_min_alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_min_alarm, temp_min_alarm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_min_alarm, temp_min_alarm, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_min_alarm, temp_min_alarm, 5);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO,
|
||||
show_temp_max_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max_alarm, S_IRUGO,
|
||||
show_temp_max_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_max_alarm, S_IRUGO,
|
||||
show_temp_max_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_max_alarm, S_IRUGO,
|
||||
show_temp_max_alarm, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_max_alarm, S_IRUGO,
|
||||
show_temp_max_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_max_alarm, S_IRUGO,
|
||||
show_temp_max_alarm, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, temp_max_alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_max_alarm, temp_max_alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_max_alarm, temp_max_alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_max_alarm, temp_max_alarm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_max_alarm, temp_max_alarm, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_max_alarm, temp_max_alarm, 5);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO,
|
||||
show_temp_crit_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit_alarm, S_IRUGO,
|
||||
show_temp_crit_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_crit_alarm, S_IRUGO,
|
||||
show_temp_crit_alarm, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_crit_alarm, S_IRUGO,
|
||||
show_temp_crit_alarm, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_crit_alarm, S_IRUGO,
|
||||
show_temp_crit_alarm, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_crit_alarm, S_IRUGO,
|
||||
show_temp_crit_alarm, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, temp_crit_alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_crit_alarm, temp_crit_alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_crit_alarm, temp_crit_alarm, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_crit_alarm, temp_crit_alarm, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_crit_alarm, temp_crit_alarm, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_crit_alarm, temp_crit_alarm, 5);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_fault, S_IRUGO, show_temp_fault, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO, show_temp_fault, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_fault, S_IRUGO, show_temp_fault, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_fault, S_IRUGO, show_temp_fault, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_fault, S_IRUGO, show_temp_fault, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_fault, S_IRUGO, show_temp_fault, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_fault, temp_fault, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_fault, temp_fault, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_fault, temp_fault, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_fault, temp_fault, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_fault, temp_fault, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_fault, temp_fault, 5);
|
||||
|
||||
static struct attribute *pc87427_attributes_temp[6][10] = {
|
||||
{
|
||||
|
|
|
@ -28,6 +28,11 @@
|
|||
#include <linux/pmbus.h>
|
||||
#include "pmbus.h"
|
||||
|
||||
struct pmbus_device_info {
|
||||
int pages;
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* Find sensor groups and status registers on each page.
|
||||
*/
|
||||
|
@ -172,13 +177,14 @@ static int pmbus_probe(struct i2c_client *client,
|
|||
struct pmbus_driver_info *info;
|
||||
struct pmbus_platform_data *pdata = NULL;
|
||||
struct device *dev = &client->dev;
|
||||
struct pmbus_device_info *device_info;
|
||||
|
||||
info = devm_kzalloc(dev, sizeof(struct pmbus_driver_info), GFP_KERNEL);
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!strcmp(id->name, "dps460") || !strcmp(id->name, "dps800") ||
|
||||
!strcmp(id->name, "sgd009")) {
|
||||
device_info = (struct pmbus_device_info *)id->driver_data;
|
||||
if (device_info->flags & PMBUS_SKIP_STATUS_CHECK) {
|
||||
pdata = devm_kzalloc(dev, sizeof(struct pmbus_platform_data),
|
||||
GFP_KERNEL);
|
||||
if (!pdata)
|
||||
|
@ -187,36 +193,50 @@ static int pmbus_probe(struct i2c_client *client,
|
|||
pdata->flags = PMBUS_SKIP_STATUS_CHECK;
|
||||
}
|
||||
|
||||
info->pages = id->driver_data;
|
||||
info->pages = device_info->pages;
|
||||
info->identify = pmbus_identify;
|
||||
dev->platform_data = pdata;
|
||||
|
||||
return pmbus_do_probe(client, id, info);
|
||||
}
|
||||
|
||||
static const struct pmbus_device_info pmbus_info_one = {
|
||||
.pages = 1,
|
||||
.flags = 0
|
||||
};
|
||||
static const struct pmbus_device_info pmbus_info_zero = {
|
||||
.pages = 0,
|
||||
.flags = 0
|
||||
};
|
||||
static const struct pmbus_device_info pmbus_info_one_skip = {
|
||||
.pages = 1,
|
||||
.flags = PMBUS_SKIP_STATUS_CHECK
|
||||
};
|
||||
|
||||
/*
|
||||
* Use driver_data to set the number of pages supported by the chip.
|
||||
*/
|
||||
static const struct i2c_device_id pmbus_id[] = {
|
||||
{"adp4000", 1},
|
||||
{"bmr453", 1},
|
||||
{"bmr454", 1},
|
||||
{"dps460", 1},
|
||||
{"dps800", 1},
|
||||
{"mdt040", 1},
|
||||
{"ncp4200", 1},
|
||||
{"ncp4208", 1},
|
||||
{"pdt003", 1},
|
||||
{"pdt006", 1},
|
||||
{"pdt012", 1},
|
||||
{"pmbus", 0},
|
||||
{"sgd009", 1},
|
||||
{"tps40400", 1},
|
||||
{"tps544b20", 1},
|
||||
{"tps544b25", 1},
|
||||
{"tps544c20", 1},
|
||||
{"tps544c25", 1},
|
||||
{"udt020", 1},
|
||||
{"adp4000", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"bmr453", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"bmr454", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"dps460", (kernel_ulong_t)&pmbus_info_one_skip},
|
||||
{"dps650ab", (kernel_ulong_t)&pmbus_info_one_skip},
|
||||
{"dps800", (kernel_ulong_t)&pmbus_info_one_skip},
|
||||
{"mdt040", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"ncp4200", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"ncp4208", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"pdt003", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"pdt006", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"pdt012", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"pmbus", (kernel_ulong_t)&pmbus_info_zero},
|
||||
{"sgd009", (kernel_ulong_t)&pmbus_info_one_skip},
|
||||
{"tps40400", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"tps544b20", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"tps544b25", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"tps544c20", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"tps544c25", (kernel_ulong_t)&pmbus_info_one},
|
||||
{"udt020", (kernel_ulong_t)&pmbus_info_one},
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
@ -80,7 +80,14 @@ static struct pmbus_driver_info tps53679_info = {
|
|||
static int tps53679_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
return pmbus_do_probe(client, id, &tps53679_info);
|
||||
struct pmbus_driver_info *info;
|
||||
|
||||
info = devm_kmemdup(&client->dev, &tps53679_info, sizeof(*info),
|
||||
GFP_KERNEL);
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
|
||||
return pmbus_do_probe(client, id, info);
|
||||
}
|
||||
|
||||
static const struct i2c_device_id tps53679_id[] = {
|
||||
|
|
|
@ -177,8 +177,9 @@ static int powr1220_read_adc(struct device *dev, int ch_num)
|
|||
}
|
||||
|
||||
/* Shows the voltage associated with the specified ADC channel */
|
||||
static ssize_t powr1220_show_voltage(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
static ssize_t powr1220_voltage_show(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
int adc_val = powr1220_read_adc(dev, attr->index);
|
||||
|
@ -190,8 +191,8 @@ static ssize_t powr1220_show_voltage(struct device *dev,
|
|||
}
|
||||
|
||||
/* Shows the maximum setting associated with the specified ADC channel */
|
||||
static ssize_t powr1220_show_max(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
static ssize_t powr1220_max_show(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
struct powr1220_data *data = dev_get_drvdata(dev);
|
||||
|
@ -200,100 +201,59 @@ static ssize_t powr1220_show_max(struct device *dev,
|
|||
}
|
||||
|
||||
/* Shows the label associated with the specified ADC channel */
|
||||
static ssize_t powr1220_show_label(struct device *dev,
|
||||
struct device_attribute *dev_attr, char *buf)
|
||||
static ssize_t powr1220_label_show(struct device *dev,
|
||||
struct device_attribute *dev_attr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
|
||||
|
||||
return sprintf(buf, "%s\n", input_names[attr->index]);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON1);
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON2);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON3);
|
||||
static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON4);
|
||||
static SENSOR_DEVICE_ATTR(in4_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON5);
|
||||
static SENSOR_DEVICE_ATTR(in5_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON6);
|
||||
static SENSOR_DEVICE_ATTR(in6_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON7);
|
||||
static SENSOR_DEVICE_ATTR(in7_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON8);
|
||||
static SENSOR_DEVICE_ATTR(in8_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON9);
|
||||
static SENSOR_DEVICE_ATTR(in9_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON10);
|
||||
static SENSOR_DEVICE_ATTR(in10_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON11);
|
||||
static SENSOR_DEVICE_ATTR(in11_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VMON12);
|
||||
static SENSOR_DEVICE_ATTR(in12_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VCCA);
|
||||
static SENSOR_DEVICE_ATTR(in13_input, S_IRUGO, powr1220_show_voltage, NULL,
|
||||
VCCINP);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_input, powr1220_voltage, VMON1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, powr1220_voltage, VMON2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, powr1220_voltage, VMON3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_input, powr1220_voltage, VMON4);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_input, powr1220_voltage, VMON5);
|
||||
static SENSOR_DEVICE_ATTR_RO(in5_input, powr1220_voltage, VMON6);
|
||||
static SENSOR_DEVICE_ATTR_RO(in6_input, powr1220_voltage, VMON7);
|
||||
static SENSOR_DEVICE_ATTR_RO(in7_input, powr1220_voltage, VMON8);
|
||||
static SENSOR_DEVICE_ATTR_RO(in8_input, powr1220_voltage, VMON9);
|
||||
static SENSOR_DEVICE_ATTR_RO(in9_input, powr1220_voltage, VMON10);
|
||||
static SENSOR_DEVICE_ATTR_RO(in10_input, powr1220_voltage, VMON11);
|
||||
static SENSOR_DEVICE_ATTR_RO(in11_input, powr1220_voltage, VMON12);
|
||||
static SENSOR_DEVICE_ATTR_RO(in12_input, powr1220_voltage, VCCA);
|
||||
static SENSOR_DEVICE_ATTR_RO(in13_input, powr1220_voltage, VCCINP);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON1);
|
||||
static SENSOR_DEVICE_ATTR(in1_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON2);
|
||||
static SENSOR_DEVICE_ATTR(in2_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON3);
|
||||
static SENSOR_DEVICE_ATTR(in3_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON4);
|
||||
static SENSOR_DEVICE_ATTR(in4_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON5);
|
||||
static SENSOR_DEVICE_ATTR(in5_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON6);
|
||||
static SENSOR_DEVICE_ATTR(in6_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON7);
|
||||
static SENSOR_DEVICE_ATTR(in7_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON8);
|
||||
static SENSOR_DEVICE_ATTR(in8_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON9);
|
||||
static SENSOR_DEVICE_ATTR(in9_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON10);
|
||||
static SENSOR_DEVICE_ATTR(in10_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON11);
|
||||
static SENSOR_DEVICE_ATTR(in11_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VMON12);
|
||||
static SENSOR_DEVICE_ATTR(in12_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VCCA);
|
||||
static SENSOR_DEVICE_ATTR(in13_highest, S_IRUGO, powr1220_show_max, NULL,
|
||||
VCCINP);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_highest, powr1220_max, VMON1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_highest, powr1220_max, VMON2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_highest, powr1220_max, VMON3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_highest, powr1220_max, VMON4);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_highest, powr1220_max, VMON5);
|
||||
static SENSOR_DEVICE_ATTR_RO(in5_highest, powr1220_max, VMON6);
|
||||
static SENSOR_DEVICE_ATTR_RO(in6_highest, powr1220_max, VMON7);
|
||||
static SENSOR_DEVICE_ATTR_RO(in7_highest, powr1220_max, VMON8);
|
||||
static SENSOR_DEVICE_ATTR_RO(in8_highest, powr1220_max, VMON9);
|
||||
static SENSOR_DEVICE_ATTR_RO(in9_highest, powr1220_max, VMON10);
|
||||
static SENSOR_DEVICE_ATTR_RO(in10_highest, powr1220_max, VMON11);
|
||||
static SENSOR_DEVICE_ATTR_RO(in11_highest, powr1220_max, VMON12);
|
||||
static SENSOR_DEVICE_ATTR_RO(in12_highest, powr1220_max, VCCA);
|
||||
static SENSOR_DEVICE_ATTR_RO(in13_highest, powr1220_max, VCCINP);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON1);
|
||||
static SENSOR_DEVICE_ATTR(in1_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON2);
|
||||
static SENSOR_DEVICE_ATTR(in2_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON3);
|
||||
static SENSOR_DEVICE_ATTR(in3_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON4);
|
||||
static SENSOR_DEVICE_ATTR(in4_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON5);
|
||||
static SENSOR_DEVICE_ATTR(in5_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON6);
|
||||
static SENSOR_DEVICE_ATTR(in6_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON7);
|
||||
static SENSOR_DEVICE_ATTR(in7_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON8);
|
||||
static SENSOR_DEVICE_ATTR(in8_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON9);
|
||||
static SENSOR_DEVICE_ATTR(in9_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON10);
|
||||
static SENSOR_DEVICE_ATTR(in10_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON11);
|
||||
static SENSOR_DEVICE_ATTR(in11_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VMON12);
|
||||
static SENSOR_DEVICE_ATTR(in12_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VCCA);
|
||||
static SENSOR_DEVICE_ATTR(in13_label, S_IRUGO, powr1220_show_label, NULL,
|
||||
VCCINP);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_label, powr1220_label, VMON1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_label, powr1220_label, VMON2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_label, powr1220_label, VMON3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_label, powr1220_label, VMON4);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_label, powr1220_label, VMON5);
|
||||
static SENSOR_DEVICE_ATTR_RO(in5_label, powr1220_label, VMON6);
|
||||
static SENSOR_DEVICE_ATTR_RO(in6_label, powr1220_label, VMON7);
|
||||
static SENSOR_DEVICE_ATTR_RO(in7_label, powr1220_label, VMON8);
|
||||
static SENSOR_DEVICE_ATTR_RO(in8_label, powr1220_label, VMON9);
|
||||
static SENSOR_DEVICE_ATTR_RO(in9_label, powr1220_label, VMON10);
|
||||
static SENSOR_DEVICE_ATTR_RO(in10_label, powr1220_label, VMON11);
|
||||
static SENSOR_DEVICE_ATTR_RO(in11_label, powr1220_label, VMON12);
|
||||
static SENSOR_DEVICE_ATTR_RO(in12_label, powr1220_label, VCCA);
|
||||
static SENSOR_DEVICE_ATTR_RO(in13_label, powr1220_label, VCCINP);
|
||||
|
||||
static struct attribute *powr1220_attrs[] = {
|
||||
&sensor_dev_attr_in0_input.dev_attr.attr,
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pwm.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/sysfs.h>
|
||||
#include <linux/thermal.h>
|
||||
|
||||
|
@ -31,6 +32,7 @@
|
|||
struct pwm_fan_ctx {
|
||||
struct mutex lock;
|
||||
struct pwm_device *pwm;
|
||||
struct regulator *reg_en;
|
||||
unsigned int pwm_value;
|
||||
unsigned int pwm_fan_state;
|
||||
unsigned int pwm_fan_max_state;
|
||||
|
@ -231,6 +233,21 @@ static int pwm_fan_probe(struct platform_device *pdev)
|
|||
|
||||
platform_set_drvdata(pdev, ctx);
|
||||
|
||||
ctx->reg_en = devm_regulator_get_optional(&pdev->dev, "fan");
|
||||
if (IS_ERR(ctx->reg_en)) {
|
||||
if (PTR_ERR(ctx->reg_en) != -ENODEV)
|
||||
return PTR_ERR(ctx->reg_en);
|
||||
|
||||
ctx->reg_en = NULL;
|
||||
} else {
|
||||
ret = regulator_enable(ctx->reg_en);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev,
|
||||
"Failed to enable fan supply: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
ctx->pwm_value = MAX_PWM;
|
||||
|
||||
/* Set duty cycle to maximum allowed and enable PWM output */
|
||||
|
@ -241,7 +258,7 @@ static int pwm_fan_probe(struct platform_device *pdev)
|
|||
ret = pwm_apply_state(ctx->pwm, &state);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Failed to configure PWM\n");
|
||||
return ret;
|
||||
goto err_reg_disable;
|
||||
}
|
||||
|
||||
hwmon = devm_hwmon_device_register_with_groups(&pdev->dev, "pwmfan",
|
||||
|
@ -277,6 +294,10 @@ static int pwm_fan_probe(struct platform_device *pdev)
|
|||
state.enabled = false;
|
||||
pwm_apply_state(ctx->pwm, &state);
|
||||
|
||||
err_reg_disable:
|
||||
if (ctx->reg_en)
|
||||
regulator_disable(ctx->reg_en);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -287,6 +308,10 @@ static int pwm_fan_remove(struct platform_device *pdev)
|
|||
thermal_cooling_device_unregister(ctx->cdev);
|
||||
if (ctx->pwm_value)
|
||||
pwm_disable(ctx->pwm);
|
||||
|
||||
if (ctx->reg_en)
|
||||
regulator_disable(ctx->reg_en);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -307,6 +332,14 @@ static int pwm_fan_suspend(struct device *dev)
|
|||
pwm_disable(ctx->pwm);
|
||||
}
|
||||
|
||||
if (ctx->reg_en) {
|
||||
ret = regulator_disable(ctx->reg_en);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to disable fan supply: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -317,6 +350,14 @@ static int pwm_fan_resume(struct device *dev)
|
|||
unsigned long duty;
|
||||
int ret;
|
||||
|
||||
if (ctx->reg_en) {
|
||||
ret = regulator_enable(ctx->reg_en);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to enable fan supply: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->pwm_value == 0)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -211,8 +211,8 @@ static ssize_t name_show(struct device *dev, struct device_attribute *devattr,
|
|||
return snprintf(buf, PAGE_SIZE, "%s\n", DEVNAME);
|
||||
}
|
||||
|
||||
static ssize_t show_temp(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5627_data *data = sch5627_update_device(dev);
|
||||
|
@ -225,8 +225,8 @@ static ssize_t show_temp(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_temp_fault(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_fault_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5627_data *data = sch5627_update_device(dev);
|
||||
|
@ -237,8 +237,8 @@ static ssize_t show_temp_fault(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", data->temp[attr->index] == 0);
|
||||
}
|
||||
|
||||
static ssize_t show_temp_max(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_max_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5627_data *data = dev_get_drvdata(dev);
|
||||
|
@ -248,8 +248,8 @@ static ssize_t show_temp_max(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_temp_crit(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_crit_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5627_data *data = dev_get_drvdata(dev);
|
||||
|
@ -259,8 +259,8 @@ static ssize_t show_temp_crit(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_fan(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5627_data *data = sch5627_update_device(dev);
|
||||
|
@ -276,8 +276,8 @@ static ssize_t show_fan(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_fan_fault(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_fault_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5627_data *data = sch5627_update_device(dev);
|
||||
|
@ -289,8 +289,8 @@ static ssize_t show_fan_fault(struct device *dev, struct device_attribute
|
|||
data->fan[attr->index] == 0xffff);
|
||||
}
|
||||
|
||||
static ssize_t show_fan_min(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_min_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5627_data *data = dev_get_drvdata(dev);
|
||||
|
@ -301,8 +301,8 @@ static ssize_t show_fan_min(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_in(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t in_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5627_data *data = sch5627_update_device(dev);
|
||||
|
@ -317,8 +317,8 @@ static ssize_t show_in(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_in_label(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t in_label_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
||||
|
@ -327,61 +327,61 @@ static ssize_t show_in_label(struct device *dev, struct device_attribute
|
|||
}
|
||||
|
||||
static DEVICE_ATTR_RO(name);
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_input, S_IRUGO, show_temp, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_input, S_IRUGO, show_temp, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_input, S_IRUGO, show_temp, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(temp7_input, S_IRUGO, show_temp, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp8_input, S_IRUGO, show_temp, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(temp1_fault, S_IRUGO, show_temp_fault, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO, show_temp_fault, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_fault, S_IRUGO, show_temp_fault, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_fault, S_IRUGO, show_temp_fault, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_fault, S_IRUGO, show_temp_fault, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_fault, S_IRUGO, show_temp_fault, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(temp7_fault, S_IRUGO, show_temp_fault, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp8_fault, S_IRUGO, show_temp_fault, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO, show_temp_max, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_max, S_IRUGO, show_temp_max, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_max, S_IRUGO, show_temp_max, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_max, S_IRUGO, show_temp_max, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_max, S_IRUGO, show_temp_max, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_max, S_IRUGO, show_temp_max, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(temp7_max, S_IRUGO, show_temp_max, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp8_max, S_IRUGO, show_temp_max, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO, show_temp_crit, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_crit, S_IRUGO, show_temp_crit, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_crit, S_IRUGO, show_temp_crit, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_crit, S_IRUGO, show_temp_crit, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(temp5_crit, S_IRUGO, show_temp_crit, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(temp6_crit, S_IRUGO, show_temp_crit, NULL, 5);
|
||||
static SENSOR_DEVICE_ATTR(temp7_crit, S_IRUGO, show_temp_crit, NULL, 6);
|
||||
static SENSOR_DEVICE_ATTR(temp8_crit, S_IRUGO, show_temp_crit, NULL, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_input, temp, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_input, temp, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_input, temp, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_input, temp, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp7_input, temp, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp8_input, temp, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_fault, temp_fault, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_fault, temp_fault, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_fault, temp_fault, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_fault, temp_fault, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_fault, temp_fault, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_fault, temp_fault, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp7_fault, temp_fault, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp8_fault, temp_fault, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max, temp_max, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_max, temp_max, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_max, temp_max, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_max, temp_max, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_max, temp_max, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_max, temp_max, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp7_max, temp_max, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp8_max, temp_max, 7);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit, temp_crit, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_crit, temp_crit, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_crit, temp_crit, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_crit, temp_crit, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp5_crit, temp_crit, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp6_crit, temp_crit, 5);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp7_crit, temp_crit, 6);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp8_crit, temp_crit, 7);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO, show_fan, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_input, S_IRUGO, show_fan, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(fan1_fault, S_IRUGO, show_fan_fault, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_fault, S_IRUGO, show_fan_fault, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_fault, S_IRUGO, show_fan_fault, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_fault, S_IRUGO, show_fan_fault, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(fan1_min, S_IRUGO, show_fan_min, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_min, S_IRUGO, show_fan_min, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_min, S_IRUGO, show_fan_min, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_min, S_IRUGO, show_fan_min, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, fan, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_input, fan, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan3_input, fan, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan4_input, fan, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_fault, fan_fault, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_fault, fan_fault, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan3_fault, fan_fault, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan4_fault, fan_fault, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_min, fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_min, fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan3_min, fan_min, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan4_min, fan_min, 3);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, show_in, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, show_in, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, show_in, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, show_in, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR(in4_input, S_IRUGO, show_in, NULL, 4);
|
||||
static SENSOR_DEVICE_ATTR(in0_label, S_IRUGO, show_in_label, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(in1_label, S_IRUGO, show_in_label, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(in2_label, S_IRUGO, show_in_label, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(in3_label, S_IRUGO, show_in_label, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_input, in, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, in, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_input, in, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_input, in, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(in4_input, in, 4);
|
||||
static SENSOR_DEVICE_ATTR_RO(in0_label, in_label, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_label, in_label, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(in2_label, in_label, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(in3_label, in_label, 3);
|
||||
|
||||
static struct attribute *sch5627_attributes[] = {
|
||||
&dev_attr_name.attr,
|
||||
|
|
|
@ -170,14 +170,14 @@ static int reg_to_rpm(u16 reg)
|
|||
return 5400540 / reg;
|
||||
}
|
||||
|
||||
static ssize_t show_name(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
static ssize_t name_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
return snprintf(buf, PAGE_SIZE, "%s\n", DEVNAME);
|
||||
}
|
||||
|
||||
static ssize_t show_in_value(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t in_value_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5636_data *data = sch5636_update_device(dev);
|
||||
|
@ -192,8 +192,8 @@ static ssize_t show_in_value(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_in_label(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t in_label_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
||||
|
@ -201,8 +201,8 @@ static ssize_t show_in_label(struct device *dev, struct device_attribute
|
|||
SCH5636_IN_LABELS[attr->index]);
|
||||
}
|
||||
|
||||
static ssize_t show_temp_value(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_value_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5636_data *data = sch5636_update_device(dev);
|
||||
|
@ -215,8 +215,8 @@ static ssize_t show_temp_value(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_temp_fault(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_fault_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5636_data *data = sch5636_update_device(dev);
|
||||
|
@ -229,8 +229,8 @@ static ssize_t show_temp_fault(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_temp_alarm(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5636_data *data = sch5636_update_device(dev);
|
||||
|
@ -243,8 +243,8 @@ static ssize_t show_temp_alarm(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_fan_value(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_value_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5636_data *data = sch5636_update_device(dev);
|
||||
|
@ -260,8 +260,8 @@ static ssize_t show_fan_value(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_fan_fault(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_fault_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5636_data *data = sch5636_update_device(dev);
|
||||
|
@ -274,8 +274,8 @@ static ssize_t show_fan_fault(struct device *dev, struct device_attribute
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_fan_alarm(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_alarm_show(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct sch5636_data *data = sch5636_update_device(dev);
|
||||
|
@ -289,95 +289,95 @@ static ssize_t show_fan_alarm(struct device *dev, struct device_attribute
|
|||
}
|
||||
|
||||
static struct sensor_device_attribute sch5636_attr[] = {
|
||||
SENSOR_ATTR(name, 0444, show_name, NULL, 0),
|
||||
SENSOR_ATTR(in0_input, 0444, show_in_value, NULL, 0),
|
||||
SENSOR_ATTR(in0_label, 0444, show_in_label, NULL, 0),
|
||||
SENSOR_ATTR(in1_input, 0444, show_in_value, NULL, 1),
|
||||
SENSOR_ATTR(in1_label, 0444, show_in_label, NULL, 1),
|
||||
SENSOR_ATTR(in2_input, 0444, show_in_value, NULL, 2),
|
||||
SENSOR_ATTR(in2_label, 0444, show_in_label, NULL, 2),
|
||||
SENSOR_ATTR(in3_input, 0444, show_in_value, NULL, 3),
|
||||
SENSOR_ATTR(in3_label, 0444, show_in_label, NULL, 3),
|
||||
SENSOR_ATTR(in4_input, 0444, show_in_value, NULL, 4),
|
||||
SENSOR_ATTR(in4_label, 0444, show_in_label, NULL, 4),
|
||||
SENSOR_ATTR_RO(name, name, 0),
|
||||
SENSOR_ATTR_RO(in0_input, in_value, 0),
|
||||
SENSOR_ATTR_RO(in0_label, in_label, 0),
|
||||
SENSOR_ATTR_RO(in1_input, in_value, 1),
|
||||
SENSOR_ATTR_RO(in1_label, in_label, 1),
|
||||
SENSOR_ATTR_RO(in2_input, in_value, 2),
|
||||
SENSOR_ATTR_RO(in2_label, in_label, 2),
|
||||
SENSOR_ATTR_RO(in3_input, in_value, 3),
|
||||
SENSOR_ATTR_RO(in3_label, in_label, 3),
|
||||
SENSOR_ATTR_RO(in4_input, in_value, 4),
|
||||
SENSOR_ATTR_RO(in4_label, in_label, 4),
|
||||
};
|
||||
|
||||
static struct sensor_device_attribute sch5636_temp_attr[] = {
|
||||
SENSOR_ATTR(temp1_input, 0444, show_temp_value, NULL, 0),
|
||||
SENSOR_ATTR(temp1_fault, 0444, show_temp_fault, NULL, 0),
|
||||
SENSOR_ATTR(temp1_alarm, 0444, show_temp_alarm, NULL, 0),
|
||||
SENSOR_ATTR(temp2_input, 0444, show_temp_value, NULL, 1),
|
||||
SENSOR_ATTR(temp2_fault, 0444, show_temp_fault, NULL, 1),
|
||||
SENSOR_ATTR(temp2_alarm, 0444, show_temp_alarm, NULL, 1),
|
||||
SENSOR_ATTR(temp3_input, 0444, show_temp_value, NULL, 2),
|
||||
SENSOR_ATTR(temp3_fault, 0444, show_temp_fault, NULL, 2),
|
||||
SENSOR_ATTR(temp3_alarm, 0444, show_temp_alarm, NULL, 2),
|
||||
SENSOR_ATTR(temp4_input, 0444, show_temp_value, NULL, 3),
|
||||
SENSOR_ATTR(temp4_fault, 0444, show_temp_fault, NULL, 3),
|
||||
SENSOR_ATTR(temp4_alarm, 0444, show_temp_alarm, NULL, 3),
|
||||
SENSOR_ATTR(temp5_input, 0444, show_temp_value, NULL, 4),
|
||||
SENSOR_ATTR(temp5_fault, 0444, show_temp_fault, NULL, 4),
|
||||
SENSOR_ATTR(temp5_alarm, 0444, show_temp_alarm, NULL, 4),
|
||||
SENSOR_ATTR(temp6_input, 0444, show_temp_value, NULL, 5),
|
||||
SENSOR_ATTR(temp6_fault, 0444, show_temp_fault, NULL, 5),
|
||||
SENSOR_ATTR(temp6_alarm, 0444, show_temp_alarm, NULL, 5),
|
||||
SENSOR_ATTR(temp7_input, 0444, show_temp_value, NULL, 6),
|
||||
SENSOR_ATTR(temp7_fault, 0444, show_temp_fault, NULL, 6),
|
||||
SENSOR_ATTR(temp7_alarm, 0444, show_temp_alarm, NULL, 6),
|
||||
SENSOR_ATTR(temp8_input, 0444, show_temp_value, NULL, 7),
|
||||
SENSOR_ATTR(temp8_fault, 0444, show_temp_fault, NULL, 7),
|
||||
SENSOR_ATTR(temp8_alarm, 0444, show_temp_alarm, NULL, 7),
|
||||
SENSOR_ATTR(temp9_input, 0444, show_temp_value, NULL, 8),
|
||||
SENSOR_ATTR(temp9_fault, 0444, show_temp_fault, NULL, 8),
|
||||
SENSOR_ATTR(temp9_alarm, 0444, show_temp_alarm, NULL, 8),
|
||||
SENSOR_ATTR(temp10_input, 0444, show_temp_value, NULL, 9),
|
||||
SENSOR_ATTR(temp10_fault, 0444, show_temp_fault, NULL, 9),
|
||||
SENSOR_ATTR(temp10_alarm, 0444, show_temp_alarm, NULL, 9),
|
||||
SENSOR_ATTR(temp11_input, 0444, show_temp_value, NULL, 10),
|
||||
SENSOR_ATTR(temp11_fault, 0444, show_temp_fault, NULL, 10),
|
||||
SENSOR_ATTR(temp11_alarm, 0444, show_temp_alarm, NULL, 10),
|
||||
SENSOR_ATTR(temp12_input, 0444, show_temp_value, NULL, 11),
|
||||
SENSOR_ATTR(temp12_fault, 0444, show_temp_fault, NULL, 11),
|
||||
SENSOR_ATTR(temp12_alarm, 0444, show_temp_alarm, NULL, 11),
|
||||
SENSOR_ATTR(temp13_input, 0444, show_temp_value, NULL, 12),
|
||||
SENSOR_ATTR(temp13_fault, 0444, show_temp_fault, NULL, 12),
|
||||
SENSOR_ATTR(temp13_alarm, 0444, show_temp_alarm, NULL, 12),
|
||||
SENSOR_ATTR(temp14_input, 0444, show_temp_value, NULL, 13),
|
||||
SENSOR_ATTR(temp14_fault, 0444, show_temp_fault, NULL, 13),
|
||||
SENSOR_ATTR(temp14_alarm, 0444, show_temp_alarm, NULL, 13),
|
||||
SENSOR_ATTR(temp15_input, 0444, show_temp_value, NULL, 14),
|
||||
SENSOR_ATTR(temp15_fault, 0444, show_temp_fault, NULL, 14),
|
||||
SENSOR_ATTR(temp15_alarm, 0444, show_temp_alarm, NULL, 14),
|
||||
SENSOR_ATTR(temp16_input, 0444, show_temp_value, NULL, 15),
|
||||
SENSOR_ATTR(temp16_fault, 0444, show_temp_fault, NULL, 15),
|
||||
SENSOR_ATTR(temp16_alarm, 0444, show_temp_alarm, NULL, 15),
|
||||
SENSOR_ATTR_RO(temp1_input, temp_value, 0),
|
||||
SENSOR_ATTR_RO(temp1_fault, temp_fault, 0),
|
||||
SENSOR_ATTR_RO(temp1_alarm, temp_alarm, 0),
|
||||
SENSOR_ATTR_RO(temp2_input, temp_value, 1),
|
||||
SENSOR_ATTR_RO(temp2_fault, temp_fault, 1),
|
||||
SENSOR_ATTR_RO(temp2_alarm, temp_alarm, 1),
|
||||
SENSOR_ATTR_RO(temp3_input, temp_value, 2),
|
||||
SENSOR_ATTR_RO(temp3_fault, temp_fault, 2),
|
||||
SENSOR_ATTR_RO(temp3_alarm, temp_alarm, 2),
|
||||
SENSOR_ATTR_RO(temp4_input, temp_value, 3),
|
||||
SENSOR_ATTR_RO(temp4_fault, temp_fault, 3),
|
||||
SENSOR_ATTR_RO(temp4_alarm, temp_alarm, 3),
|
||||
SENSOR_ATTR_RO(temp5_input, temp_value, 4),
|
||||
SENSOR_ATTR_RO(temp5_fault, temp_fault, 4),
|
||||
SENSOR_ATTR_RO(temp5_alarm, temp_alarm, 4),
|
||||
SENSOR_ATTR_RO(temp6_input, temp_value, 5),
|
||||
SENSOR_ATTR_RO(temp6_fault, temp_fault, 5),
|
||||
SENSOR_ATTR_RO(temp6_alarm, temp_alarm, 5),
|
||||
SENSOR_ATTR_RO(temp7_input, temp_value, 6),
|
||||
SENSOR_ATTR_RO(temp7_fault, temp_fault, 6),
|
||||
SENSOR_ATTR_RO(temp7_alarm, temp_alarm, 6),
|
||||
SENSOR_ATTR_RO(temp8_input, temp_value, 7),
|
||||
SENSOR_ATTR_RO(temp8_fault, temp_fault, 7),
|
||||
SENSOR_ATTR_RO(temp8_alarm, temp_alarm, 7),
|
||||
SENSOR_ATTR_RO(temp9_input, temp_value, 8),
|
||||
SENSOR_ATTR_RO(temp9_fault, temp_fault, 8),
|
||||
SENSOR_ATTR_RO(temp9_alarm, temp_alarm, 8),
|
||||
SENSOR_ATTR_RO(temp10_input, temp_value, 9),
|
||||
SENSOR_ATTR_RO(temp10_fault, temp_fault, 9),
|
||||
SENSOR_ATTR_RO(temp10_alarm, temp_alarm, 9),
|
||||
SENSOR_ATTR_RO(temp11_input, temp_value, 10),
|
||||
SENSOR_ATTR_RO(temp11_fault, temp_fault, 10),
|
||||
SENSOR_ATTR_RO(temp11_alarm, temp_alarm, 10),
|
||||
SENSOR_ATTR_RO(temp12_input, temp_value, 11),
|
||||
SENSOR_ATTR_RO(temp12_fault, temp_fault, 11),
|
||||
SENSOR_ATTR_RO(temp12_alarm, temp_alarm, 11),
|
||||
SENSOR_ATTR_RO(temp13_input, temp_value, 12),
|
||||
SENSOR_ATTR_RO(temp13_fault, temp_fault, 12),
|
||||
SENSOR_ATTR_RO(temp13_alarm, temp_alarm, 12),
|
||||
SENSOR_ATTR_RO(temp14_input, temp_value, 13),
|
||||
SENSOR_ATTR_RO(temp14_fault, temp_fault, 13),
|
||||
SENSOR_ATTR_RO(temp14_alarm, temp_alarm, 13),
|
||||
SENSOR_ATTR_RO(temp15_input, temp_value, 14),
|
||||
SENSOR_ATTR_RO(temp15_fault, temp_fault, 14),
|
||||
SENSOR_ATTR_RO(temp15_alarm, temp_alarm, 14),
|
||||
SENSOR_ATTR_RO(temp16_input, temp_value, 15),
|
||||
SENSOR_ATTR_RO(temp16_fault, temp_fault, 15),
|
||||
SENSOR_ATTR_RO(temp16_alarm, temp_alarm, 15),
|
||||
};
|
||||
|
||||
static struct sensor_device_attribute sch5636_fan_attr[] = {
|
||||
SENSOR_ATTR(fan1_input, 0444, show_fan_value, NULL, 0),
|
||||
SENSOR_ATTR(fan1_fault, 0444, show_fan_fault, NULL, 0),
|
||||
SENSOR_ATTR(fan1_alarm, 0444, show_fan_alarm, NULL, 0),
|
||||
SENSOR_ATTR(fan2_input, 0444, show_fan_value, NULL, 1),
|
||||
SENSOR_ATTR(fan2_fault, 0444, show_fan_fault, NULL, 1),
|
||||
SENSOR_ATTR(fan2_alarm, 0444, show_fan_alarm, NULL, 1),
|
||||
SENSOR_ATTR(fan3_input, 0444, show_fan_value, NULL, 2),
|
||||
SENSOR_ATTR(fan3_fault, 0444, show_fan_fault, NULL, 2),
|
||||
SENSOR_ATTR(fan3_alarm, 0444, show_fan_alarm, NULL, 2),
|
||||
SENSOR_ATTR(fan4_input, 0444, show_fan_value, NULL, 3),
|
||||
SENSOR_ATTR(fan4_fault, 0444, show_fan_fault, NULL, 3),
|
||||
SENSOR_ATTR(fan4_alarm, 0444, show_fan_alarm, NULL, 3),
|
||||
SENSOR_ATTR(fan5_input, 0444, show_fan_value, NULL, 4),
|
||||
SENSOR_ATTR(fan5_fault, 0444, show_fan_fault, NULL, 4),
|
||||
SENSOR_ATTR(fan5_alarm, 0444, show_fan_alarm, NULL, 4),
|
||||
SENSOR_ATTR(fan6_input, 0444, show_fan_value, NULL, 5),
|
||||
SENSOR_ATTR(fan6_fault, 0444, show_fan_fault, NULL, 5),
|
||||
SENSOR_ATTR(fan6_alarm, 0444, show_fan_alarm, NULL, 5),
|
||||
SENSOR_ATTR(fan7_input, 0444, show_fan_value, NULL, 6),
|
||||
SENSOR_ATTR(fan7_fault, 0444, show_fan_fault, NULL, 6),
|
||||
SENSOR_ATTR(fan7_alarm, 0444, show_fan_alarm, NULL, 6),
|
||||
SENSOR_ATTR(fan8_input, 0444, show_fan_value, NULL, 7),
|
||||
SENSOR_ATTR(fan8_fault, 0444, show_fan_fault, NULL, 7),
|
||||
SENSOR_ATTR(fan8_alarm, 0444, show_fan_alarm, NULL, 7),
|
||||
SENSOR_ATTR_RO(fan1_input, fan_value, 0),
|
||||
SENSOR_ATTR_RO(fan1_fault, fan_fault, 0),
|
||||
SENSOR_ATTR_RO(fan1_alarm, fan_alarm, 0),
|
||||
SENSOR_ATTR_RO(fan2_input, fan_value, 1),
|
||||
SENSOR_ATTR_RO(fan2_fault, fan_fault, 1),
|
||||
SENSOR_ATTR_RO(fan2_alarm, fan_alarm, 1),
|
||||
SENSOR_ATTR_RO(fan3_input, fan_value, 2),
|
||||
SENSOR_ATTR_RO(fan3_fault, fan_fault, 2),
|
||||
SENSOR_ATTR_RO(fan3_alarm, fan_alarm, 2),
|
||||
SENSOR_ATTR_RO(fan4_input, fan_value, 3),
|
||||
SENSOR_ATTR_RO(fan4_fault, fan_fault, 3),
|
||||
SENSOR_ATTR_RO(fan4_alarm, fan_alarm, 3),
|
||||
SENSOR_ATTR_RO(fan5_input, fan_value, 4),
|
||||
SENSOR_ATTR_RO(fan5_fault, fan_fault, 4),
|
||||
SENSOR_ATTR_RO(fan5_alarm, fan_alarm, 4),
|
||||
SENSOR_ATTR_RO(fan6_input, fan_value, 5),
|
||||
SENSOR_ATTR_RO(fan6_fault, fan_fault, 5),
|
||||
SENSOR_ATTR_RO(fan6_alarm, fan_alarm, 5),
|
||||
SENSOR_ATTR_RO(fan7_input, fan_value, 6),
|
||||
SENSOR_ATTR_RO(fan7_fault, fan_fault, 6),
|
||||
SENSOR_ATTR_RO(fan7_alarm, fan_alarm, 6),
|
||||
SENSOR_ATTR_RO(fan8_input, fan_value, 7),
|
||||
SENSOR_ATTR_RO(fan8_fault, fan_fault, 7),
|
||||
SENSOR_ATTR_RO(fan8_alarm, fan_alarm, 7),
|
||||
};
|
||||
|
||||
static int sch5636_remove(struct platform_device *pdev)
|
||||
|
|
|
@ -57,7 +57,7 @@ scmi_hwmon_is_visible(const void *drvdata, enum hwmon_sensor_types type,
|
|||
|
||||
sensor = *(scmi_sensors->info[type] + channel);
|
||||
if (sensor)
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -226,11 +226,11 @@ static int scpi_hwmon_probe(struct platform_device *pdev)
|
|||
|
||||
sensor->scale = scale[sensor->info.class];
|
||||
|
||||
sensor->dev_attr_input.attr.mode = S_IRUGO;
|
||||
sensor->dev_attr_input.attr.mode = 0444;
|
||||
sensor->dev_attr_input.show = scpi_show_sensor;
|
||||
sensor->dev_attr_input.attr.name = sensor->input;
|
||||
|
||||
sensor->dev_attr_label.attr.mode = S_IRUGO;
|
||||
sensor->dev_attr_label.attr.mode = 0444;
|
||||
sensor->dev_attr_label.show = scpi_show_label;
|
||||
sensor->dev_attr_label.attr.name = sensor->label;
|
||||
|
||||
|
|
|
@ -677,9 +677,8 @@ static inline int sht15_calc_humid(struct sht15_data *data)
|
|||
* and heater_enable sysfs attributes.
|
||||
* Returns number of bytes written into buffer, negative errno on error.
|
||||
*/
|
||||
static ssize_t sht15_show_status(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t sht15_status_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int ret;
|
||||
struct sht15_data *data = dev_get_drvdata(dev);
|
||||
|
@ -700,7 +699,7 @@ static ssize_t sht15_show_status(struct device *dev,
|
|||
* Will be called on write access to heater_enable sysfs attribute.
|
||||
* Returns number of bytes actually decoded, negative errno on error.
|
||||
*/
|
||||
static ssize_t sht15_store_heater(struct device *dev,
|
||||
static ssize_t sht15_status_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
|
@ -734,9 +733,8 @@ static ssize_t sht15_store_heater(struct device *dev,
|
|||
* Will be called on read access to temp1_input sysfs attribute.
|
||||
* Returns number of bytes written into buffer, negative errno on error.
|
||||
*/
|
||||
static ssize_t sht15_show_temp(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t sht15_temp_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int ret;
|
||||
struct sht15_data *data = dev_get_drvdata(dev);
|
||||
|
@ -757,9 +755,8 @@ static ssize_t sht15_show_temp(struct device *dev,
|
|||
* Will be called on read access to humidity1_input sysfs attribute.
|
||||
* Returns number of bytes written into buffer, negative errno on error.
|
||||
*/
|
||||
static ssize_t sht15_show_humidity(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t sht15_humidity_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int ret;
|
||||
struct sht15_data *data = dev_get_drvdata(dev);
|
||||
|
@ -777,16 +774,13 @@ static ssize_t name_show(struct device *dev,
|
|||
return sprintf(buf, "%s\n", pdev->name);
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO,
|
||||
sht15_show_temp, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_input, S_IRUGO,
|
||||
sht15_show_humidity, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_fault, S_IRUGO, sht15_show_status, NULL,
|
||||
SHT15_STATUS_LOW_BATTERY);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_fault, S_IRUGO, sht15_show_status, NULL,
|
||||
SHT15_STATUS_LOW_BATTERY);
|
||||
static SENSOR_DEVICE_ATTR(heater_enable, S_IRUGO | S_IWUSR, sht15_show_status,
|
||||
sht15_store_heater, SHT15_STATUS_HEATER);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, sht15_temp, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(humidity1_input, sht15_humidity, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_fault, sht15_status,
|
||||
SHT15_STATUS_LOW_BATTERY);
|
||||
static SENSOR_DEVICE_ATTR_RO(humidity1_fault, sht15_status,
|
||||
SHT15_STATUS_LOW_BATTERY);
|
||||
static SENSOR_DEVICE_ATTR_RW(heater_enable, sht15_status, SHT15_STATUS_HEATER);
|
||||
static DEVICE_ATTR_RO(name);
|
||||
static struct attribute *sht15_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -135,9 +135,9 @@ static int sht21_update_measurements(struct device *dev)
|
|||
* Will be called on read access to temp1_input sysfs attribute.
|
||||
* Returns number of bytes written into buffer, negative errno on error.
|
||||
*/
|
||||
static ssize_t sht21_show_temperature(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t sht21_temperature_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct sht21 *sht21 = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
@ -157,9 +157,8 @@ static ssize_t sht21_show_temperature(struct device *dev,
|
|||
* Will be called on read access to humidity1_input sysfs attribute.
|
||||
* Returns number of bytes written into buffer, negative errno on error.
|
||||
*/
|
||||
static ssize_t sht21_show_humidity(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t sht21_humidity_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct sht21 *sht21 = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
@ -251,10 +250,8 @@ static ssize_t eic_show(struct device *dev,
|
|||
}
|
||||
|
||||
/* sysfs attributes */
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, sht21_show_temperature,
|
||||
NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_input, S_IRUGO, sht21_show_humidity,
|
||||
NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, sht21_temperature, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(humidity1_input, sht21_humidity, 0);
|
||||
static DEVICE_ATTR_RO(eic);
|
||||
|
||||
static struct attribute *sht21_attrs[] = {
|
||||
|
|
|
@ -629,40 +629,22 @@ static ssize_t update_interval_store(struct device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, temp1_input_show, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_input, S_IRUGO, humidity1_input_show,
|
||||
NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO | S_IWUSR,
|
||||
temp1_limit_show, temp1_limit_store,
|
||||
limit_max);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_max, S_IRUGO | S_IWUSR,
|
||||
humidity1_limit_show, humidity1_limit_store,
|
||||
limit_max);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IRUGO | S_IWUSR,
|
||||
temp1_limit_show, temp1_limit_store,
|
||||
limit_max_hyst);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_max_hyst, S_IRUGO | S_IWUSR,
|
||||
humidity1_limit_show, humidity1_limit_store,
|
||||
limit_max_hyst);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, S_IRUGO | S_IWUSR,
|
||||
temp1_limit_show, temp1_limit_store,
|
||||
limit_min);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_min, S_IRUGO | S_IWUSR,
|
||||
humidity1_limit_show, humidity1_limit_store,
|
||||
limit_min);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min_hyst, S_IRUGO | S_IWUSR,
|
||||
temp1_limit_show, temp1_limit_store,
|
||||
limit_min_hyst);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_min_hyst, S_IRUGO | S_IWUSR,
|
||||
humidity1_limit_show, humidity1_limit_store,
|
||||
limit_min_hyst);
|
||||
static SENSOR_DEVICE_ATTR(temp1_alarm, S_IRUGO, temp1_alarm_show, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(humidity1_alarm, S_IRUGO, humidity1_alarm_show,
|
||||
NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(heater_enable, S_IRUGO | S_IWUSR,
|
||||
heater_enable_show, heater_enable_store, 0);
|
||||
static SENSOR_DEVICE_ATTR(update_interval, S_IRUGO | S_IWUSR,
|
||||
update_interval_show, update_interval_store, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp1_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(humidity1_input, humidity1_input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, temp1_limit, limit_max);
|
||||
static SENSOR_DEVICE_ATTR_RW(humidity1_max, humidity1_limit, limit_max);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max_hyst, temp1_limit, limit_max_hyst);
|
||||
static SENSOR_DEVICE_ATTR_RW(humidity1_max_hyst, humidity1_limit,
|
||||
limit_max_hyst);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_min, temp1_limit, limit_min);
|
||||
static SENSOR_DEVICE_ATTR_RW(humidity1_min, humidity1_limit, limit_min);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_min_hyst, temp1_limit, limit_min_hyst);
|
||||
static SENSOR_DEVICE_ATTR_RW(humidity1_min_hyst, humidity1_limit,
|
||||
limit_min_hyst);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_alarm, temp1_alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(humidity1_alarm, humidity1_alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(heater_enable, heater_enable, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(update_interval, update_interval, 0);
|
||||
|
||||
static struct attribute *sht3x_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -164,18 +164,18 @@ static int temp_from_reg(u8 reg)
|
|||
return (s8)reg * 1000;
|
||||
}
|
||||
|
||||
static ssize_t show_temp(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct smsc47b397_data *data = smsc47b397_update_device(dev);
|
||||
return sprintf(buf, "%d\n", temp_from_reg(data->temp[attr->index]));
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(temp4_input, S_IRUGO, show_temp, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp3_input, temp, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp4_input, temp, 3);
|
||||
|
||||
/*
|
||||
* FAN: 1 RPM/bit
|
||||
|
@ -188,17 +188,17 @@ static int fan_from_reg(u16 reg)
|
|||
return 90000 * 60 / reg;
|
||||
}
|
||||
|
||||
static ssize_t show_fan(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t fan_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
struct smsc47b397_data *data = smsc47b397_update_device(dev);
|
||||
return sprintf(buf, "%d\n", fan_from_reg(data->fan[attr->index]));
|
||||
}
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO, show_fan, NULL, 2);
|
||||
static SENSOR_DEVICE_ATTR(fan4_input, S_IRUGO, show_fan, NULL, 3);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, fan, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_input, fan, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan3_input, fan, 2);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan4_input, fan, 3);
|
||||
|
||||
static struct attribute *smsc47b397_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -382,8 +382,8 @@ static int stts751_update(struct stts751_priv *priv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t show_max_alarm(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t max_alarm_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int ret;
|
||||
struct stts751_priv *priv = dev_get_drvdata(dev);
|
||||
|
@ -399,8 +399,8 @@ static ssize_t show_max_alarm(struct device *dev, struct device_attribute *attr,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", priv->max_alert);
|
||||
}
|
||||
|
||||
static ssize_t show_min_alarm(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t min_alarm_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int ret;
|
||||
struct stts751_priv *priv = dev_get_drvdata(dev);
|
||||
|
@ -416,7 +416,7 @@ static ssize_t show_min_alarm(struct device *dev, struct device_attribute *attr,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", priv->min_alert);
|
||||
}
|
||||
|
||||
static ssize_t show_input(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t input_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int ret;
|
||||
|
@ -431,7 +431,7 @@ static ssize_t show_input(struct device *dev, struct device_attribute *attr,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", priv->temp);
|
||||
}
|
||||
|
||||
static ssize_t show_therm(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t therm_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct stts751_priv *priv = dev_get_drvdata(dev);
|
||||
|
@ -439,8 +439,8 @@ static ssize_t show_therm(struct device *dev, struct device_attribute *attr,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", priv->therm);
|
||||
}
|
||||
|
||||
static ssize_t set_therm(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t therm_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int ret;
|
||||
long temp;
|
||||
|
@ -473,7 +473,7 @@ static ssize_t set_therm(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_hyst(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t hyst_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct stts751_priv *priv = dev_get_drvdata(dev);
|
||||
|
@ -481,8 +481,8 @@ static ssize_t show_hyst(struct device *dev, struct device_attribute *attr,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", priv->hyst);
|
||||
}
|
||||
|
||||
static ssize_t set_hyst(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t hyst_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int ret;
|
||||
long temp;
|
||||
|
@ -506,7 +506,7 @@ static ssize_t set_hyst(struct device *dev, struct device_attribute *attr,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t show_therm_trip(struct device *dev,
|
||||
static ssize_t therm_trip_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int ret;
|
||||
|
@ -521,7 +521,7 @@ static ssize_t show_therm_trip(struct device *dev,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", priv->therm_trip);
|
||||
}
|
||||
|
||||
static ssize_t show_max(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t max_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct stts751_priv *priv = dev_get_drvdata(dev);
|
||||
|
@ -529,8 +529,8 @@ static ssize_t show_max(struct device *dev, struct device_attribute *attr,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", priv->event_max);
|
||||
}
|
||||
|
||||
static ssize_t set_max(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t max_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int ret;
|
||||
long temp;
|
||||
|
@ -555,7 +555,7 @@ static ssize_t set_max(struct device *dev, struct device_attribute *attr,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t show_min(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t min_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct stts751_priv *priv = dev_get_drvdata(dev);
|
||||
|
@ -563,8 +563,8 @@ static ssize_t show_min(struct device *dev, struct device_attribute *attr,
|
|||
return snprintf(buf, PAGE_SIZE, "%d\n", priv->event_min);
|
||||
}
|
||||
|
||||
static ssize_t set_min(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t min_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int ret;
|
||||
long temp;
|
||||
|
@ -589,8 +589,8 @@ static ssize_t set_min(struct device *dev, struct device_attribute *attr,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t show_interval(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t interval_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct stts751_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
|
@ -598,8 +598,9 @@ static ssize_t show_interval(struct device *dev, struct device_attribute *attr,
|
|||
stts751_intervals[priv->interval]);
|
||||
}
|
||||
|
||||
static ssize_t set_interval(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t interval_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
unsigned long val;
|
||||
int idx;
|
||||
|
@ -746,16 +747,15 @@ static int stts751_read_chip_config(struct stts751_priv *priv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, 0444, show_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, 0644, show_min, set_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, 0644, show_max, set_max, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_min_alarm, 0444, show_min_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_max_alarm, 0444, show_max_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit, 0644, show_therm, set_therm, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_hyst, 0644, show_hyst, set_hyst, 0);
|
||||
static SENSOR_DEVICE_ATTR(temp1_crit_alarm, 0444, show_therm_trip, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(update_interval, 0644,
|
||||
show_interval, set_interval, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, input, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_min, min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, max, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_min_alarm, min_alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, max_alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_crit, therm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_crit_hyst, hyst, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, therm_trip, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(update_interval, interval, 0);
|
||||
|
||||
static struct attribute *stts751_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -200,7 +200,7 @@ static struct tc654_data *tc654_update_client(struct device *dev)
|
|||
* sysfs attributes
|
||||
*/
|
||||
|
||||
static ssize_t show_fan(struct device *dev, struct device_attribute *da,
|
||||
static ssize_t fan_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(da)->index;
|
||||
|
@ -218,7 +218,7 @@ static ssize_t show_fan(struct device *dev, struct device_attribute *da,
|
|||
return sprintf(buf, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t show_fan_min(struct device *dev, struct device_attribute *da,
|
||||
static ssize_t fan_min_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(da)->index;
|
||||
|
@ -231,8 +231,8 @@ static ssize_t show_fan_min(struct device *dev, struct device_attribute *da,
|
|||
TC654_FAN_FAULT_FROM_REG(data->fan_fault[nr]));
|
||||
}
|
||||
|
||||
static ssize_t set_fan_min(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_min_store(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(da)->index;
|
||||
struct tc654_data *data = dev_get_drvdata(dev);
|
||||
|
@ -255,7 +255,7 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *da,
|
|||
return ret < 0 ? ret : count;
|
||||
}
|
||||
|
||||
static ssize_t show_fan_alarm(struct device *dev, struct device_attribute *da,
|
||||
static ssize_t fan_alarm_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(da)->index;
|
||||
|
@ -275,8 +275,8 @@ static ssize_t show_fan_alarm(struct device *dev, struct device_attribute *da,
|
|||
|
||||
static const u8 TC654_FAN_PULSE_SHIFT[] = { 1, 3 };
|
||||
|
||||
static ssize_t show_fan_pulses(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
static ssize_t fan_pulses_show(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(da)->index;
|
||||
struct tc654_data *data = tc654_update_client(dev);
|
||||
|
@ -289,8 +289,9 @@ static ssize_t show_fan_pulses(struct device *dev, struct device_attribute *da,
|
|||
return sprintf(buf, "%d\n", val);
|
||||
}
|
||||
|
||||
static ssize_t set_fan_pulses(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fan_pulses_store(struct device *dev,
|
||||
struct device_attribute *da, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
int nr = to_sensor_dev_attr(da)->index;
|
||||
struct tc654_data *data = dev_get_drvdata(dev);
|
||||
|
@ -329,8 +330,8 @@ static ssize_t set_fan_pulses(struct device *dev, struct device_attribute *da,
|
|||
return ret < 0 ? ret : count;
|
||||
}
|
||||
|
||||
static ssize_t show_pwm_mode(struct device *dev,
|
||||
struct device_attribute *da, char *buf)
|
||||
static ssize_t pwm_mode_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
struct tc654_data *data = tc654_update_client(dev);
|
||||
|
||||
|
@ -340,9 +341,8 @@ static ssize_t show_pwm_mode(struct device *dev,
|
|||
return sprintf(buf, "%d\n", !!(data->config & TC654_REG_CONFIG_DUTYC));
|
||||
}
|
||||
|
||||
static ssize_t set_pwm_mode(struct device *dev,
|
||||
struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t pwm_mode_store(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct tc654_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -371,7 +371,7 @@ static ssize_t set_pwm_mode(struct device *dev,
|
|||
static const int tc654_pwm_map[16] = { 77, 88, 102, 112, 124, 136, 148, 160,
|
||||
172, 184, 196, 207, 219, 231, 243, 255};
|
||||
|
||||
static ssize_t show_pwm(struct device *dev, struct device_attribute *da,
|
||||
static ssize_t pwm_show(struct device *dev, struct device_attribute *da,
|
||||
char *buf)
|
||||
{
|
||||
struct tc654_data *data = tc654_update_client(dev);
|
||||
|
@ -388,8 +388,8 @@ static ssize_t show_pwm(struct device *dev, struct device_attribute *da,
|
|||
return sprintf(buf, "%d\n", pwm);
|
||||
}
|
||||
|
||||
static ssize_t set_pwm(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t pwm_store(struct device *dev, struct device_attribute *da,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct tc654_data *data = dev_get_drvdata(dev);
|
||||
struct i2c_client *client = data->client;
|
||||
|
@ -423,22 +423,16 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *da,
|
|||
return ret < 0 ? ret : count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_min, S_IWUSR | S_IRUGO, show_fan_min,
|
||||
set_fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_min, S_IWUSR | S_IRUGO, show_fan_min,
|
||||
set_fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_alarm, S_IRUGO, show_fan_alarm, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_alarm, S_IRUGO, show_fan_alarm, NULL, 1);
|
||||
static SENSOR_DEVICE_ATTR(fan1_pulses, S_IWUSR | S_IRUGO, show_fan_pulses,
|
||||
set_fan_pulses, 0);
|
||||
static SENSOR_DEVICE_ATTR(fan2_pulses, S_IWUSR | S_IRUGO, show_fan_pulses,
|
||||
set_fan_pulses, 1);
|
||||
static SENSOR_DEVICE_ATTR(pwm1_mode, S_IWUSR | S_IRUGO,
|
||||
show_pwm_mode, set_pwm_mode, 0);
|
||||
static SENSOR_DEVICE_ATTR(pwm1, S_IWUSR | S_IRUGO, show_pwm,
|
||||
set_pwm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_input, fan, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_input, fan, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_min, fan_min, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_min, fan_min, 1);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan1_alarm, fan_alarm, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(fan2_alarm, fan_alarm, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan1_pulses, fan_pulses, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(fan2_pulses, fan_pulses, 1);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1_mode, pwm_mode, 0);
|
||||
static SENSOR_DEVICE_ATTR_RW(pwm1, pwm, 0);
|
||||
|
||||
/* Driver data */
|
||||
static struct attribute *tc654_attrs[] = {
|
||||
|
|
|
@ -86,7 +86,7 @@ static int tc74_update_device(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t show_temp_input(struct device *dev,
|
||||
static ssize_t temp_input_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct tc74_data *data = dev_get_drvdata(dev);
|
||||
|
@ -98,7 +98,7 @@ static ssize_t show_temp_input(struct device *dev,
|
|||
|
||||
return sprintf(buf, "%d\n", data->temp_input * 1000);
|
||||
}
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL, 0);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp_input, 0);
|
||||
|
||||
static struct attribute *tc74_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -141,10 +141,10 @@ static umode_t tmp102_is_visible(const void *data, enum hwmon_sensor_types type,
|
|||
|
||||
switch (attr) {
|
||||
case hwmon_temp_input:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
case hwmon_temp_max_hyst:
|
||||
case hwmon_temp_max:
|
||||
return S_IRUGO | S_IWUSR;
|
||||
return 0644;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -61,9 +61,8 @@ static inline u8 tmp103_mc_to_reg(int val)
|
|||
return DIV_ROUND_CLOSEST(val, 1000);
|
||||
}
|
||||
|
||||
static ssize_t tmp103_show_temp(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t tmp103_temp_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct sensor_device_attribute *sda = to_sensor_dev_attr(attr);
|
||||
struct regmap *regmap = dev_get_drvdata(dev);
|
||||
|
@ -77,9 +76,9 @@ static ssize_t tmp103_show_temp(struct device *dev,
|
|||
return sprintf(buf, "%d\n", tmp103_reg_to_mc(regval));
|
||||
}
|
||||
|
||||
static ssize_t tmp103_set_temp(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t tmp103_temp_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sensor_device_attribute *sda = to_sensor_dev_attr(attr);
|
||||
struct regmap *regmap = dev_get_drvdata(dev);
|
||||
|
@ -94,14 +93,11 @@ static ssize_t tmp103_set_temp(struct device *dev,
|
|||
return ret ? ret : count;
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, tmp103_show_temp, NULL ,
|
||||
TMP103_TEMP_REG);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, tmp103_temp, TMP103_TEMP_REG);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO, tmp103_show_temp,
|
||||
tmp103_set_temp, TMP103_TLOW_REG);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_min, tmp103_temp, TMP103_TLOW_REG);
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, tmp103_show_temp,
|
||||
tmp103_set_temp, TMP103_THIGH_REG);
|
||||
static SENSOR_DEVICE_ATTR_RW(temp1_max, tmp103_temp, TMP103_THIGH_REG);
|
||||
|
||||
static struct attribute *tmp103_attrs[] = {
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
|
|
@ -187,9 +187,9 @@ static umode_t tmp421_is_visible(const void *data, enum hwmon_sensor_types type,
|
|||
case hwmon_temp_fault:
|
||||
if (channel == 0)
|
||||
return 0;
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
case hwmon_temp_input:
|
||||
return S_IRUGO;
|
||||
return 0444;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -92,9 +92,8 @@ struct vexpress_hwmon_type {
|
|||
};
|
||||
|
||||
#if !defined(CONFIG_REGULATOR_VEXPRESS)
|
||||
static DEVICE_ATTR(in1_label, S_IRUGO, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, vexpress_hwmon_u32_show,
|
||||
NULL, 1000);
|
||||
static DEVICE_ATTR(in1_label, 0444, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR_RO(in1_input, vexpress_hwmon_u32, 1000);
|
||||
static struct attribute *vexpress_hwmon_attrs_volt[] = {
|
||||
&dev_attr_in1_label.attr,
|
||||
&sensor_dev_attr_in1_input.dev_attr.attr,
|
||||
|
@ -113,9 +112,8 @@ static struct vexpress_hwmon_type vexpress_hwmon_volt = {
|
|||
};
|
||||
#endif
|
||||
|
||||
static DEVICE_ATTR(curr1_label, S_IRUGO, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, vexpress_hwmon_u32_show,
|
||||
NULL, 1000);
|
||||
static DEVICE_ATTR(curr1_label, 0444, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR_RO(curr1_input, vexpress_hwmon_u32, 1000);
|
||||
static struct attribute *vexpress_hwmon_attrs_amp[] = {
|
||||
&dev_attr_curr1_label.attr,
|
||||
&sensor_dev_attr_curr1_input.dev_attr.attr,
|
||||
|
@ -133,9 +131,8 @@ static struct vexpress_hwmon_type vexpress_hwmon_amp = {
|
|||
},
|
||||
};
|
||||
|
||||
static DEVICE_ATTR(temp1_label, S_IRUGO, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, vexpress_hwmon_u32_show,
|
||||
NULL, 1000);
|
||||
static DEVICE_ATTR(temp1_label, 0444, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, vexpress_hwmon_u32, 1000);
|
||||
static struct attribute *vexpress_hwmon_attrs_temp[] = {
|
||||
&dev_attr_temp1_label.attr,
|
||||
&sensor_dev_attr_temp1_input.dev_attr.attr,
|
||||
|
@ -153,9 +150,8 @@ static struct vexpress_hwmon_type vexpress_hwmon_temp = {
|
|||
},
|
||||
};
|
||||
|
||||
static DEVICE_ATTR(power1_label, S_IRUGO, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR(power1_input, S_IRUGO, vexpress_hwmon_u32_show,
|
||||
NULL, 1);
|
||||
static DEVICE_ATTR(power1_label, 0444, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR_RO(power1_input, vexpress_hwmon_u32, 1);
|
||||
static struct attribute *vexpress_hwmon_attrs_power[] = {
|
||||
&dev_attr_power1_label.attr,
|
||||
&sensor_dev_attr_power1_input.dev_attr.attr,
|
||||
|
@ -173,9 +169,8 @@ static struct vexpress_hwmon_type vexpress_hwmon_power = {
|
|||
},
|
||||
};
|
||||
|
||||
static DEVICE_ATTR(energy1_label, S_IRUGO, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR(energy1_input, S_IRUGO, vexpress_hwmon_u64_show,
|
||||
NULL, 1);
|
||||
static DEVICE_ATTR(energy1_label, 0444, vexpress_hwmon_label_show, NULL);
|
||||
static SENSOR_DEVICE_ATTR_RO(energy1_input, vexpress_hwmon_u64, 1);
|
||||
static struct attribute *vexpress_hwmon_attrs_energy[] = {
|
||||
&dev_attr_energy1_label.attr,
|
||||
&sensor_dev_attr_energy1_input.dev_attr.attr,
|
||||
|
|
|
@ -60,8 +60,8 @@ struct via_cputemp_data {
|
|||
* Sysfs stuff
|
||||
*/
|
||||
|
||||
static ssize_t show_name(struct device *dev, struct device_attribute
|
||||
*devattr, char *buf)
|
||||
static ssize_t name_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
int ret;
|
||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||
|
@ -74,8 +74,8 @@ static ssize_t show_name(struct device *dev, struct device_attribute
|
|||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t show_temp(struct device *dev,
|
||||
struct device_attribute *devattr, char *buf)
|
||||
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
struct via_cputemp_data *data = dev_get_drvdata(dev);
|
||||
u32 eax, edx;
|
||||
|
@ -102,10 +102,9 @@ static ssize_t cpu0_vid_show(struct device *dev,
|
|||
return sprintf(buf, "%d\n", vid_from_reg(~edx & 0x7f, data->vrm));
|
||||
}
|
||||
|
||||
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL,
|
||||
SHOW_TEMP);
|
||||
static SENSOR_DEVICE_ATTR(temp1_label, S_IRUGO, show_name, NULL, SHOW_LABEL);
|
||||
static SENSOR_DEVICE_ATTR(name, S_IRUGO, show_name, NULL, SHOW_NAME);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, SHOW_TEMP);
|
||||
static SENSOR_DEVICE_ATTR_RO(temp1_label, name, SHOW_LABEL);
|
||||
static SENSOR_DEVICE_ATTR_RO(name, name, SHOW_NAME);
|
||||
|
||||
static struct attribute *via_cputemp_attributes[] = {
|
||||
&sensor_dev_attr_name.dev_attr.attr,
|
||||
|
|
Loading…
Reference in New Issue
Block a user