Lines Matching +full:int +full:- +full:gpios
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
24 static int gpio_decoder_get_gpios_state(struct gpio_decoder *decoder) in gpio_decoder_get_gpios_state()
26 struct gpio_descs *gpios = decoder->input_gpios; in gpio_decoder_get_gpios_state() local
27 unsigned int ret = 0; in gpio_decoder_get_gpios_state()
28 int i, val; in gpio_decoder_get_gpios_state()
30 for (i = 0; i < gpios->ndescs; i++) { in gpio_decoder_get_gpios_state()
31 val = gpiod_get_value_cansleep(gpios->desc[i]); in gpio_decoder_get_gpios_state()
33 dev_err(decoder->dev, in gpio_decoder_get_gpios_state()
35 desc_to_gpio(gpios->desc[i]), val); in gpio_decoder_get_gpios_state()
49 int state; in gpio_decoder_poll_gpios()
52 if (state >= 0 && state != decoder->last_stable) { in gpio_decoder_poll_gpios()
53 input_report_abs(input, decoder->axis, state); in gpio_decoder_poll_gpios()
55 decoder->last_stable = state; in gpio_decoder_poll_gpios()
59 static int gpio_decoder_probe(struct platform_device *pdev) in gpio_decoder_probe()
61 struct device *dev = &pdev->dev; in gpio_decoder_probe()
65 int err; in gpio_decoder_probe()
69 return -ENOMEM; in gpio_decoder_probe()
71 decoder->dev = dev; in gpio_decoder_probe()
72 device_property_read_u32(dev, "linux,axis", &decoder->axis); in gpio_decoder_probe()
74 decoder->input_gpios = devm_gpiod_get_array(dev, NULL, GPIOD_IN); in gpio_decoder_probe()
75 if (IS_ERR(decoder->input_gpios)) { in gpio_decoder_probe()
76 dev_err(dev, "unable to acquire input gpios\n"); in gpio_decoder_probe()
77 return PTR_ERR(decoder->input_gpios); in gpio_decoder_probe()
80 if (decoder->input_gpios->ndescs < 2) { in gpio_decoder_probe()
81 dev_err(dev, "not enough gpios found\n"); in gpio_decoder_probe()
82 return -EINVAL; in gpio_decoder_probe()
85 if (device_property_read_u32(dev, "decoder-max-value", &max)) in gpio_decoder_probe()
86 max = (1U << decoder->input_gpios->ndescs) - 1; in gpio_decoder_probe()
90 return -ENOMEM; in gpio_decoder_probe()
94 input->name = pdev->name; in gpio_decoder_probe()
95 input->id.bustype = BUS_HOST; in gpio_decoder_probe()
96 input_set_abs_params(input, decoder->axis, 0, max, 0, 0); in gpio_decoder_probe()
115 { .compatible = "gpio-decoder", },
124 .name = "gpio-decoder",