Source
72
72
*/
73
73
val = val * 300;
74
74
break;
75
75
default:
76
76
return -EINVAL;
77
77
}
78
78
79
79
return val;
80
80
}
81
81
82
-
static ssize_t ltc4260_show_value(struct device *dev,
82
+
static ssize_t ltc4260_value_show(struct device *dev,
83
83
struct device_attribute *da, char *buf)
84
84
{
85
85
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
86
86
int value;
87
87
88
88
value = ltc4260_get_value(dev, attr->index);
89
89
if (value < 0)
90
90
return value;
91
91
return snprintf(buf, PAGE_SIZE, "%d\n", value);
92
92
}
93
93
94
-
static ssize_t ltc4260_show_bool(struct device *dev,
94
+
static ssize_t ltc4260_bool_show(struct device *dev,
95
95
struct device_attribute *da, char *buf)
96
96
{
97
97
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
98
98
struct regmap *regmap = dev_get_drvdata(dev);
99
99
unsigned int fault;
100
100
int ret;
101
101
102
102
ret = regmap_read(regmap, LTC4260_FAULT, &fault);
103
103
if (ret < 0)
104
104
return ret;
105
105
106
106
fault &= attr->index;
107
107
if (fault) /* Clear reported faults in chip register */
108
108
regmap_update_bits(regmap, LTC4260_FAULT, attr->index, 0);
109
109
110
110
return snprintf(buf, PAGE_SIZE, "%d\n", !!fault);
111
111
}
112
112
113
113
/* Voltages */
114
-
static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, ltc4260_show_value, NULL,
115
-
LTC4260_SOURCE);
116
-
static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, ltc4260_show_value, NULL,
117
-
LTC4260_ADIN);
114
+
static SENSOR_DEVICE_ATTR_RO(in1_input, ltc4260_value, LTC4260_SOURCE);
115
+
static SENSOR_DEVICE_ATTR_RO(in2_input, ltc4260_value, LTC4260_ADIN);
118
116
119
117
/*
120
118
* Voltage alarms
121
119
* UV/OV faults are associated with the input voltage, and the POWER BAD and
122
120
* FET SHORT faults are associated with the output voltage.
123
121
*/
124
-
static SENSOR_DEVICE_ATTR(in1_min_alarm, S_IRUGO, ltc4260_show_bool, NULL,
125
-
FAULT_UV);
126
-
static SENSOR_DEVICE_ATTR(in1_max_alarm, S_IRUGO, ltc4260_show_bool, NULL,
127
-
FAULT_OV);
128
-
static SENSOR_DEVICE_ATTR(in2_alarm, S_IRUGO, ltc4260_show_bool, NULL,
129
-
FAULT_POWER_BAD | FAULT_FET_SHORT);
122
+
static SENSOR_DEVICE_ATTR_RO(in1_min_alarm, ltc4260_bool, FAULT_UV);
123
+
static SENSOR_DEVICE_ATTR_RO(in1_max_alarm, ltc4260_bool, FAULT_OV);
124
+
static SENSOR_DEVICE_ATTR_RO(in2_alarm, ltc4260_bool,
125
+
FAULT_POWER_BAD | FAULT_FET_SHORT);
130
126
131
127
/* Current (via sense resistor) */
132
-
static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, ltc4260_show_value, NULL,
133
-
LTC4260_SENSE);
128
+
static SENSOR_DEVICE_ATTR_RO(curr1_input, ltc4260_value, LTC4260_SENSE);
134
129
135
130
/* Overcurrent alarm */
136
-
static SENSOR_DEVICE_ATTR(curr1_max_alarm, S_IRUGO, ltc4260_show_bool, NULL,
137
-
FAULT_OC);
131
+
static SENSOR_DEVICE_ATTR_RO(curr1_max_alarm, ltc4260_bool, FAULT_OC);
138
132
139
133
static struct attribute *ltc4260_attrs[] = {
140
134
&sensor_dev_attr_in1_input.dev_attr.attr,
141
135
&sensor_dev_attr_in1_min_alarm.dev_attr.attr,
142
136
&sensor_dev_attr_in1_max_alarm.dev_attr.attr,
143
137
&sensor_dev_attr_in2_input.dev_attr.attr,
144
138
&sensor_dev_attr_in2_alarm.dev_attr.attr,
145
139
146
140
&sensor_dev_attr_curr1_input.dev_attr.attr,
147
141
&sensor_dev_attr_curr1_max_alarm.dev_attr.attr,