Lines Matching +full:gpio +full:- +full:mouse
1 // SPDX-License-Identifier: GPL-2.0
14 - auto idle mode support
23 #include <linux/gpio/consumer.h>
31 * Mouse Mode: some panel may configure the controller to mouse mode,
68 struct input_dev *input_dev = ts->input_dev; in egalax_ts_interrupt()
69 struct i2c_client *client = ts->client; in egalax_ts_interrupt()
78 } while (ret == -EAGAIN && tries++ < EGALAX_MAX_TRIES); in egalax_ts_interrupt()
84 /* ignore mouse events and vendor events */ in egalax_ts_interrupt()
98 dev_dbg(&client->dev, "point invalid\n"); in egalax_ts_interrupt()
105 dev_dbg(&client->dev, "%s id:%d x:%d y:%d z:%d", in egalax_ts_interrupt()
120 /* wake up controller by an falling edge of interrupt gpio. */
123 struct gpio_desc *gpio; in egalax_wake_up_device() local
126 /* wake up controller via an falling edge on IRQ gpio. */ in egalax_wake_up_device()
127 gpio = gpiod_get(&client->dev, "wakeup", GPIOD_OUT_HIGH); in egalax_wake_up_device()
128 ret = PTR_ERR_OR_ZERO(gpio); in egalax_wake_up_device()
130 if (ret != -EPROBE_DEFER) in egalax_wake_up_device()
131 dev_err(&client->dev, in egalax_wake_up_device()
132 "failed to request wakeup gpio, cannot wake up controller: %d\n", in egalax_wake_up_device()
138 gpiod_set_value_cansleep(gpio, 0); in egalax_wake_up_device()
141 gpiod_direction_input(gpio); in egalax_wake_up_device()
142 gpiod_put(gpio); in egalax_wake_up_device()
165 ts = devm_kzalloc(&client->dev, sizeof(struct egalax_ts), GFP_KERNEL); in egalax_ts_probe()
167 dev_err(&client->dev, "Failed to allocate memory\n"); in egalax_ts_probe()
168 return -ENOMEM; in egalax_ts_probe()
171 input_dev = devm_input_allocate_device(&client->dev); in egalax_ts_probe()
173 dev_err(&client->dev, "Failed to allocate memory\n"); in egalax_ts_probe()
174 return -ENOMEM; in egalax_ts_probe()
177 ts->client = client; in egalax_ts_probe()
178 ts->input_dev = input_dev; in egalax_ts_probe()
187 dev_err(&client->dev, "Failed to read firmware version\n"); in egalax_ts_probe()
191 input_dev->name = "EETI eGalax Touch Screen"; in egalax_ts_probe()
192 input_dev->id.bustype = BUS_I2C; in egalax_ts_probe()
194 __set_bit(EV_ABS, input_dev->evbit); in egalax_ts_probe()
195 __set_bit(EV_KEY, input_dev->evbit); in egalax_ts_probe()
196 __set_bit(BTN_TOUCH, input_dev->keybit); in egalax_ts_probe()
206 error = devm_request_threaded_irq(&client->dev, client->irq, in egalax_ts_probe()
210 dev_err(&client->dev, "Failed to register interrupt\n"); in egalax_ts_probe()
214 error = input_register_device(ts->input_dev); in egalax_ts_probe()
236 return enable_irq_wake(client->irq); in egalax_ts_suspend()
247 return disable_irq_wake(client->irq); in egalax_ts_resume()