• Home
  • Raw
  • Download

Lines Matching +full:has +full:- +full:touchscreen

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Driver for Motorola PCAP2 touchscreen as found in the EZX phone platform.
18 #include <linux/mfd/ezx-pcap.h>
42 switch (pcap_ts->read_state) { in pcap_ts_read_xy()
46 pcap_ts->pressure = res[0]; in pcap_ts_read_xy()
47 pcap_ts->read_state = PCAP_ADC_TS_M_XY; in pcap_ts_read_xy()
48 schedule_delayed_work(&pcap_ts->work, 0); in pcap_ts_read_xy()
51 pcap_ts->y = res[0]; in pcap_ts_read_xy()
52 pcap_ts->x = res[1]; in pcap_ts_read_xy()
53 if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX || in pcap_ts_read_xy()
54 pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) { in pcap_ts_read_xy()
55 /* pen has been released */ in pcap_ts_read_xy()
56 input_report_abs(pcap_ts->input, ABS_PRESSURE, 0); in pcap_ts_read_xy()
57 input_report_key(pcap_ts->input, BTN_TOUCH, 0); in pcap_ts_read_xy()
59 pcap_ts->read_state = PCAP_ADC_TS_M_STANDBY; in pcap_ts_read_xy()
60 schedule_delayed_work(&pcap_ts->work, 0); in pcap_ts_read_xy()
63 input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x); in pcap_ts_read_xy()
64 input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y); in pcap_ts_read_xy()
65 input_report_key(pcap_ts->input, BTN_TOUCH, 1); in pcap_ts_read_xy()
66 input_report_abs(pcap_ts->input, ABS_PRESSURE, in pcap_ts_read_xy()
67 pcap_ts->pressure); in pcap_ts_read_xy()
70 pcap_ts->read_state = PCAP_ADC_TS_M_PRESSURE; in pcap_ts_read_xy()
71 schedule_delayed_work(&pcap_ts->work, in pcap_ts_read_xy()
74 input_sync(pcap_ts->input); in pcap_ts_read_xy()
77 dev_warn(&pcap_ts->input->dev, in pcap_ts_read_xy()
79 pcap_ts->read_state); in pcap_ts_read_xy()
90 pcap_set_ts_bits(pcap_ts->pcap, in pcap_ts_work()
91 pcap_ts->read_state << PCAP_ADC_TS_M_SHIFT); in pcap_ts_work()
93 if (pcap_ts->read_state == PCAP_ADC_TS_M_STANDBY) in pcap_ts_work()
99 pcap_adc_async(pcap_ts->pcap, PCAP_ADC_BANK_1, 0, ch, in pcap_ts_work()
107 if (pcap_ts->read_state == PCAP_ADC_TS_M_STANDBY) { in pcap_ts_event_touch()
108 pcap_ts->read_state = PCAP_ADC_TS_M_PRESSURE; in pcap_ts_event_touch()
109 schedule_delayed_work(&pcap_ts->work, 0); in pcap_ts_event_touch()
118 pcap_ts->read_state = PCAP_ADC_TS_M_STANDBY; in pcap_ts_open()
119 schedule_delayed_work(&pcap_ts->work, 0); in pcap_ts_open()
128 cancel_delayed_work_sync(&pcap_ts->work); in pcap_ts_close()
130 pcap_ts->read_state = PCAP_ADC_TS_M_NONTS; in pcap_ts_close()
131 pcap_set_ts_bits(pcap_ts->pcap, in pcap_ts_close()
132 pcap_ts->read_state << PCAP_ADC_TS_M_SHIFT); in pcap_ts_close()
139 int err = -ENOMEM; in pcap_ts_probe()
145 pcap_ts->pcap = dev_get_drvdata(pdev->dev.parent); in pcap_ts_probe()
152 INIT_DELAYED_WORK(&pcap_ts->work, pcap_ts_work); in pcap_ts_probe()
154 pcap_ts->read_state = PCAP_ADC_TS_M_NONTS; in pcap_ts_probe()
155 pcap_set_ts_bits(pcap_ts->pcap, in pcap_ts_probe()
156 pcap_ts->read_state << PCAP_ADC_TS_M_SHIFT); in pcap_ts_probe()
158 pcap_ts->input = input_dev; in pcap_ts_probe()
161 input_dev->name = "pcap-touchscreen"; in pcap_ts_probe()
162 input_dev->phys = "pcap_ts/input0"; in pcap_ts_probe()
163 input_dev->id.bustype = BUS_HOST; in pcap_ts_probe()
164 input_dev->id.vendor = 0x0001; in pcap_ts_probe()
165 input_dev->id.product = 0x0002; in pcap_ts_probe()
166 input_dev->id.version = 0x0100; in pcap_ts_probe()
167 input_dev->dev.parent = &pdev->dev; in pcap_ts_probe()
168 input_dev->open = pcap_ts_open; in pcap_ts_probe()
169 input_dev->close = pcap_ts_close; in pcap_ts_probe()
171 input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in pcap_ts_probe()
172 input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH); in pcap_ts_probe()
178 err = input_register_device(pcap_ts->input); in pcap_ts_probe()
182 err = request_irq(pcap_to_irq(pcap_ts->pcap, PCAP_IRQ_TS), in pcap_ts_probe()
204 free_irq(pcap_to_irq(pcap_ts->pcap, PCAP_IRQ_TS), pcap_ts); in pcap_ts_remove()
205 cancel_delayed_work_sync(&pcap_ts->work); in pcap_ts_remove()
207 input_unregister_device(pcap_ts->input); in pcap_ts_remove()
219 pcap_set_ts_bits(pcap_ts->pcap, PCAP_ADC_TS_REF_LOWPWR); in pcap_ts_suspend()
227 pcap_set_ts_bits(pcap_ts->pcap, in pcap_ts_resume()
228 pcap_ts->read_state << PCAP_ADC_TS_M_SHIFT); in pcap_ts_resume()
245 .name = "pcap-ts",
251 MODULE_DESCRIPTION("Motorola PCAP2 touchscreen driver");