Lines Matching refs:wm831x_ts
63 struct wm831x_ts { struct
75 struct wm831x_ts *wm831x_ts = in wm831x_pd_data_work() argument
76 container_of(work, struct wm831x_ts, pd_data_work); in wm831x_pd_data_work()
78 if (wm831x_ts->pen_down) { in wm831x_pd_data_work()
79 enable_irq(wm831x_ts->data_irq); in wm831x_pd_data_work()
80 dev_dbg(wm831x_ts->wm831x->dev, "IRQ PD->DATA done\n"); in wm831x_pd_data_work()
82 enable_irq(wm831x_ts->pd_irq); in wm831x_pd_data_work()
83 dev_dbg(wm831x_ts->wm831x->dev, "IRQ DATA->PD done\n"); in wm831x_pd_data_work()
89 struct wm831x_ts *wm831x_ts = irq_data; in wm831x_ts_data_irq() local
90 struct wm831x *wm831x = wm831x_ts->wm831x; in wm831x_ts_data_irq()
96 if (wm831x_ts->pressure) in wm831x_ts_data_irq()
116 wm831x_ts->pen_down = true; in wm831x_ts_data_irq()
119 wm831x_ts->pen_down = false; in wm831x_ts_data_irq()
122 input_report_abs(wm831x_ts->input_dev, data_types[i], in wm831x_ts_data_irq()
126 if (!wm831x_ts->pen_down) { in wm831x_ts_data_irq()
130 disable_irq_nosync(wm831x_ts->data_irq); in wm831x_ts_data_irq()
143 if (wm831x_ts->pressure) in wm831x_ts_data_irq()
144 input_report_abs(wm831x_ts->input_dev, in wm831x_ts_data_irq()
147 input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 0); in wm831x_ts_data_irq()
149 schedule_work(&wm831x_ts->pd_data_work); in wm831x_ts_data_irq()
151 input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1); in wm831x_ts_data_irq()
154 input_sync(wm831x_ts->input_dev); in wm831x_ts_data_irq()
161 struct wm831x_ts *wm831x_ts = irq_data; in wm831x_ts_pen_down_irq() local
162 struct wm831x *wm831x = wm831x_ts->wm831x; in wm831x_ts_pen_down_irq()
165 if (wm831x_ts->pen_down) in wm831x_ts_pen_down_irq()
168 disable_irq_nosync(wm831x_ts->pd_irq); in wm831x_ts_pen_down_irq()
171 if (wm831x_ts->pressure) in wm831x_ts_pen_down_irq()
181 wm831x_ts->pen_down = true; in wm831x_ts_pen_down_irq()
185 schedule_work(&wm831x_ts->pd_data_work); in wm831x_ts_pen_down_irq()
192 struct wm831x_ts *wm831x_ts = input_get_drvdata(idev); in wm831x_ts_input_open() local
193 struct wm831x *wm831x = wm831x_ts->wm831x; in wm831x_ts_input_open()
208 struct wm831x_ts *wm831x_ts = input_get_drvdata(idev); in wm831x_ts_input_close() local
209 struct wm831x *wm831x = wm831x_ts->wm831x; in wm831x_ts_input_close()
219 synchronize_irq(wm831x_ts->data_irq); in wm831x_ts_input_close()
220 synchronize_irq(wm831x_ts->pd_irq); in wm831x_ts_input_close()
223 flush_work(&wm831x_ts->pd_data_work); in wm831x_ts_input_close()
228 if (wm831x_ts->pen_down) { in wm831x_ts_input_close()
229 disable_irq(wm831x_ts->data_irq); in wm831x_ts_input_close()
230 enable_irq(wm831x_ts->pd_irq); in wm831x_ts_input_close()
231 wm831x_ts->pen_down = false; in wm831x_ts_input_close()
237 struct wm831x_ts *wm831x_ts; in wm831x_ts_probe() local
247 wm831x_ts = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_ts), in wm831x_ts_probe()
250 if (!wm831x_ts || !input_dev) { in wm831x_ts_probe()
255 wm831x_ts->wm831x = wm831x; in wm831x_ts_probe()
256 wm831x_ts->input_dev = input_dev; in wm831x_ts_probe()
257 INIT_WORK(&wm831x_ts->pd_data_work, wm831x_pd_data_work); in wm831x_ts_probe()
263 wm831x_ts->data_irq = wm831x_irq(wm831x, in wm831x_ts_probe()
267 wm831x_ts->data_irq = pdata->data_irq; in wm831x_ts_probe()
269 wm831x_ts->pd_irq = wm831x_irq(wm831x, in wm831x_ts_probe()
272 wm831x_ts->pd_irq = pdata->pd_irq; in wm831x_ts_probe()
275 wm831x_ts->pressure = pdata->pressure; in wm831x_ts_probe()
277 wm831x_ts->pressure = true; in wm831x_ts_probe()
286 wm831x_ts->pressure = false; in wm831x_ts_probe()
322 error = request_threaded_irq(wm831x_ts->data_irq, in wm831x_ts_probe()
325 "Touchscreen data", wm831x_ts); in wm831x_ts_probe()
328 wm831x_ts->data_irq, error); in wm831x_ts_probe()
331 disable_irq(wm831x_ts->data_irq); in wm831x_ts_probe()
338 error = request_threaded_irq(wm831x_ts->pd_irq, in wm831x_ts_probe()
341 "Touchscreen pen down", wm831x_ts); in wm831x_ts_probe()
344 wm831x_ts->pd_irq, error); in wm831x_ts_probe()
360 if (wm831x_ts->pressure) in wm831x_ts_probe()
363 input_set_drvdata(input_dev, wm831x_ts); in wm831x_ts_probe()
370 platform_set_drvdata(pdev, wm831x_ts); in wm831x_ts_probe()
374 free_irq(wm831x_ts->pd_irq, wm831x_ts); in wm831x_ts_probe()
376 free_irq(wm831x_ts->data_irq, wm831x_ts); in wm831x_ts_probe()
384 struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev); in wm831x_ts_remove() local
386 free_irq(wm831x_ts->pd_irq, wm831x_ts); in wm831x_ts_remove()
387 free_irq(wm831x_ts->data_irq, wm831x_ts); in wm831x_ts_remove()