Lines Matching +full:data +full:- +full:channel

1 // SPDX-License-Identifier: GPL-2.0+
15 * MAX127 Control Byte. Refer to MAX127 datasheet, Table 1 "Control-Byte
29 * MAX127 channel input ranges. Refer to MAX127 datasheet, Table 3 "Range
37 * - the first byte contains data[11:4].
38 * - the second byte contains data[3:0] (MSB) and 4 dummy 0s (LSB).
57 .addr = client->addr, in max127_select_channel()
63 status = i2c_transfer(client->adapter, &msg, 1); in max127_select_channel()
67 return -EIO; in max127_select_channel()
77 .addr = client->addr, in max127_read_channel()
83 status = i2c_transfer(client->adapter, &msg, 1); in max127_read_channel()
87 return -EIO; in max127_read_channel()
99 * MAX127's data coding is binary in unipolar mode with 1 LSB = in max127_process_raw()
100 * (Full-Scale/4096) and two’s complement binary in bipolar mode in max127_process_raw()
110 raw -= weight; in max127_process_raw()
117 static int max127_read_input(struct max127_data *data, int channel, long *val) in max127_read_input() argument
121 struct i2c_client *client = data->client; in max127_read_input()
122 u8 ctrl_byte = data->ctrl_byte[channel]; in max127_read_input()
124 mutex_lock(&data->lock); in max127_read_input()
137 mutex_unlock(&data->lock); in max127_read_input()
141 static int max127_read_min(struct max127_data *data, int channel, long *val) in max127_read_min() argument
143 u8 rng_bip = (data->ctrl_byte[channel] >> 2) & 3; in max127_read_min()
146 -MAX127_HALF_RANGE, /* RNG=0, BIP=1 */ in max127_read_min()
148 -MAX127_FULL_RANGE, /* RNG=1, BIP=1 */ in max127_read_min()
155 static int max127_read_max(struct max127_data *data, int channel, long *val) in max127_read_max() argument
157 u8 rng_bip = (data->ctrl_byte[channel] >> 2) & 3; in max127_read_max()
169 static int max127_write_min(struct max127_data *data, int channel, long val) in max127_write_min() argument
173 mutex_lock(&data->lock); in max127_write_min()
175 ctrl = data->ctrl_byte[channel]; in max127_write_min()
176 if (val <= -MAX127_FULL_RANGE) { in max127_write_min()
184 data->ctrl_byte[channel] = ctrl; in max127_write_min()
186 mutex_unlock(&data->lock); in max127_write_min()
191 static int max127_write_max(struct max127_data *data, int channel, long val) in max127_write_max() argument
193 mutex_lock(&data->lock); in max127_write_max()
196 data->ctrl_byte[channel] |= MAX127_CTRL_RNG; in max127_write_max()
198 data->ctrl_byte[channel] &= ~MAX127_CTRL_RNG; in max127_write_max()
200 mutex_unlock(&data->lock); in max127_write_max()
207 u32 attr, int channel) in max127_is_visible() argument
227 u32 attr, int channel, long *val) in max127_read() argument
230 struct max127_data *data = dev_get_drvdata(dev); in max127_read() local
233 return -EOPNOTSUPP; in max127_read()
237 status = max127_read_input(data, channel, val); in max127_read()
241 status = max127_read_min(data, channel, val); in max127_read()
245 status = max127_read_max(data, channel, val); in max127_read()
249 status = -EOPNOTSUPP; in max127_read()
257 u32 attr, int channel, long val) in max127_write() argument
260 struct max127_data *data = dev_get_drvdata(dev); in max127_write() local
263 return -EOPNOTSUPP; in max127_write()
267 status = max127_write_min(data, channel, val); in max127_write()
271 status = max127_write_max(data, channel, val); in max127_write()
275 status = -EOPNOTSUPP; in max127_write()
310 struct max127_data *data; in max127_probe() local
311 struct device *dev = &client->dev; in max127_probe()
313 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); in max127_probe()
314 if (!data) in max127_probe()
315 return -ENOMEM; in max127_probe()
317 data->client = client; in max127_probe()
318 mutex_init(&data->lock); in max127_probe()
319 for (i = 0; i < ARRAY_SIZE(data->ctrl_byte); i++) in max127_probe()
320 data->ctrl_byte[i] = (MAX127_CTRL_START | in max127_probe()
323 hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name, in max127_probe()
324 data, in max127_probe()