Lines Matching refs:decoder
34 static int gpio_decoder_get_gpios_state(struct gpio_decoder *decoder) in gpio_decoder_get_gpios_state() argument
36 struct gpio_descs *gpios = decoder->input_gpios; in gpio_decoder_get_gpios_state()
43 dev_err(decoder->dev, in gpio_decoder_get_gpios_state()
58 struct gpio_decoder *decoder = poll_dev->private; in gpio_decoder_poll_gpios() local
61 state = gpio_decoder_get_gpios_state(decoder); in gpio_decoder_poll_gpios()
62 if (state >= 0 && state != decoder->last_stable) { in gpio_decoder_poll_gpios()
63 input_report_abs(poll_dev->input, decoder->axis, state); in gpio_decoder_poll_gpios()
65 decoder->last_stable = state; in gpio_decoder_poll_gpios()
72 struct gpio_decoder *decoder; in gpio_decoder_probe() local
77 decoder = devm_kzalloc(dev, sizeof(struct gpio_decoder), GFP_KERNEL); in gpio_decoder_probe()
78 if (!decoder) in gpio_decoder_probe()
81 device_property_read_u32(dev, "linux,axis", &decoder->axis); in gpio_decoder_probe()
82 decoder->input_gpios = devm_gpiod_get_array(dev, NULL, GPIOD_IN); in gpio_decoder_probe()
83 if (IS_ERR(decoder->input_gpios)) { in gpio_decoder_probe()
85 return PTR_ERR(decoder->input_gpios); in gpio_decoder_probe()
87 if (decoder->input_gpios->ndescs < 2) { in gpio_decoder_probe()
93 max = (1U << decoder->input_gpios->ndescs) - 1; in gpio_decoder_probe()
95 decoder->dev = dev; in gpio_decoder_probe()
96 poll_dev = devm_input_allocate_polled_device(decoder->dev); in gpio_decoder_probe()
100 poll_dev->private = decoder; in gpio_decoder_probe()
102 decoder->poll_dev = poll_dev; in gpio_decoder_probe()
106 input_set_abs_params(poll_dev->input, decoder->axis, 0, max, 0, 0); in gpio_decoder_probe()