Lines Matching +full:abs +full:- +full:fuzz

1 // SPDX-License-Identifier: GPL-2.0
4 * Copyright (c) 2019-2020 Artur Rojek <contact@artur-rojek.eu>
19 s32 fuzz; member
39 bytes = joy->chans[0].channel->scan_type.storagebits >> 3; in adc_joystick_handle()
41 for (i = 0; i < joy->num_chans; ++i) { in adc_joystick_handle()
42 idx = joy->chans[i].channel->scan_index; in adc_joystick_handle()
43 endianness = joy->chans[i].channel->scan_type.endianness; in adc_joystick_handle()
44 msb = joy->chans[i].channel->scan_type.realbits - 1; in adc_joystick_handle()
45 sign = tolower(joy->chans[i].channel->scan_type.sign) == 's'; in adc_joystick_handle()
66 return -EINVAL; in adc_joystick_handle()
69 val >>= joy->chans[i].channel->scan_type.shift; in adc_joystick_handle()
74 input_report_abs(joy->input, joy->axes[i].code, val); in adc_joystick_handle()
77 input_sync(joy->input); in adc_joystick_handle()
85 struct device *devp = &dev->dev; in adc_joystick_open()
88 ret = iio_channel_start_all_cb(joy->buffer); in adc_joystick_open()
99 iio_channel_stop_all_cb(joy->buffer); in adc_joystick_close()
116 return -EINVAL; in adc_joystick_set_axes()
119 if (num_axes != joy->num_chans) { in adc_joystick_set_axes()
121 num_axes, joy->num_chans); in adc_joystick_set_axes()
122 return -EINVAL; in adc_joystick_set_axes()
127 return -ENOMEM; in adc_joystick_set_axes()
137 error = -EINVAL; in adc_joystick_set_axes()
149 error = fwnode_property_read_u32_array(child, "abs-range", in adc_joystick_set_axes()
152 dev_err(dev, "abs-range invalid or missing\n"); in adc_joystick_set_axes()
156 fwnode_property_read_u32(child, "abs-fuzz", &axes[i].fuzz); in adc_joystick_set_axes()
157 fwnode_property_read_u32(child, "abs-flat", &axes[i].flat); in adc_joystick_set_axes()
159 input_set_abs_params(joy->input, axes[i].code, in adc_joystick_set_axes()
161 axes[i].fuzz, axes[i].flat); in adc_joystick_set_axes()
162 input_set_capability(joy->input, EV_ABS, axes[i].code); in adc_joystick_set_axes()
165 joy->axes = axes; in adc_joystick_set_axes()
176 struct device *dev = &pdev->dev; in adc_joystick_probe()
185 return -ENOMEM; in adc_joystick_probe()
187 joy->chans = devm_iio_channel_get_all(dev); in adc_joystick_probe()
188 if (IS_ERR(joy->chans)) { in adc_joystick_probe()
189 error = PTR_ERR(joy->chans); in adc_joystick_probe()
190 if (error != -EPROBE_DEFER) in adc_joystick_probe()
196 for (i = 0; joy->chans[i].indio_dev; i++) { in adc_joystick_probe()
197 bits = joy->chans[i].channel->scan_type.storagebits; in adc_joystick_probe()
200 return -EINVAL; in adc_joystick_probe()
202 if (bits != joy->chans[0].channel->scan_type.storagebits) { in adc_joystick_probe()
204 return -EINVAL; in adc_joystick_probe()
207 joy->num_chans = i; in adc_joystick_probe()
212 return -ENOMEM; in adc_joystick_probe()
215 joy->input = input; in adc_joystick_probe()
216 input->name = pdev->name; in adc_joystick_probe()
217 input->id.bustype = BUS_HOST; in adc_joystick_probe()
218 input->open = adc_joystick_open; in adc_joystick_probe()
219 input->close = adc_joystick_close; in adc_joystick_probe()
232 joy->buffer = iio_channel_get_all_cb(dev, adc_joystick_handle, joy); in adc_joystick_probe()
233 if (IS_ERR(joy->buffer)) { in adc_joystick_probe()
235 return PTR_ERR(joy->buffer); in adc_joystick_probe()
238 error = devm_add_action_or_reset(dev, adc_joystick_cleanup, joy->buffer); in adc_joystick_probe()
248 { .compatible = "adc-joystick", },
255 .name = "adc-joystick",
263 MODULE_AUTHOR("Artur Rojek <contact@artur-rojek.eu>");