Lines Matching refs:wm831x_ts

59 struct wm831x_ts {  struct
71 struct wm831x_ts *wm831x_ts = in wm831x_pd_data_work() argument
72 container_of(work, struct wm831x_ts, pd_data_work); in wm831x_pd_data_work()
74 if (wm831x_ts->pen_down) { in wm831x_pd_data_work()
75 enable_irq(wm831x_ts->data_irq); in wm831x_pd_data_work()
76 dev_dbg(wm831x_ts->wm831x->dev, "IRQ PD->DATA done\n"); in wm831x_pd_data_work()
78 enable_irq(wm831x_ts->pd_irq); in wm831x_pd_data_work()
79 dev_dbg(wm831x_ts->wm831x->dev, "IRQ DATA->PD done\n"); in wm831x_pd_data_work()
85 struct wm831x_ts *wm831x_ts = irq_data; in wm831x_ts_data_irq() local
86 struct wm831x *wm831x = wm831x_ts->wm831x; in wm831x_ts_data_irq()
92 if (wm831x_ts->pressure) in wm831x_ts_data_irq()
112 wm831x_ts->pen_down = true; in wm831x_ts_data_irq()
115 wm831x_ts->pen_down = false; in wm831x_ts_data_irq()
118 input_report_abs(wm831x_ts->input_dev, data_types[i], in wm831x_ts_data_irq()
122 if (!wm831x_ts->pen_down) { in wm831x_ts_data_irq()
126 disable_irq_nosync(wm831x_ts->data_irq); in wm831x_ts_data_irq()
139 if (wm831x_ts->pressure) in wm831x_ts_data_irq()
140 input_report_abs(wm831x_ts->input_dev, in wm831x_ts_data_irq()
143 input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 0); in wm831x_ts_data_irq()
145 schedule_work(&wm831x_ts->pd_data_work); in wm831x_ts_data_irq()
147 input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1); in wm831x_ts_data_irq()
150 input_sync(wm831x_ts->input_dev); in wm831x_ts_data_irq()
157 struct wm831x_ts *wm831x_ts = irq_data; in wm831x_ts_pen_down_irq() local
158 struct wm831x *wm831x = wm831x_ts->wm831x; in wm831x_ts_pen_down_irq()
161 if (wm831x_ts->pen_down) in wm831x_ts_pen_down_irq()
164 disable_irq_nosync(wm831x_ts->pd_irq); in wm831x_ts_pen_down_irq()
167 if (wm831x_ts->pressure) in wm831x_ts_pen_down_irq()
177 wm831x_ts->pen_down = true; in wm831x_ts_pen_down_irq()
181 schedule_work(&wm831x_ts->pd_data_work); in wm831x_ts_pen_down_irq()
188 struct wm831x_ts *wm831x_ts = input_get_drvdata(idev); in wm831x_ts_input_open() local
189 struct wm831x *wm831x = wm831x_ts->wm831x; in wm831x_ts_input_open()
204 struct wm831x_ts *wm831x_ts = input_get_drvdata(idev); in wm831x_ts_input_close() local
205 struct wm831x *wm831x = wm831x_ts->wm831x; in wm831x_ts_input_close()
215 synchronize_irq(wm831x_ts->data_irq); in wm831x_ts_input_close()
216 synchronize_irq(wm831x_ts->pd_irq); in wm831x_ts_input_close()
219 flush_work(&wm831x_ts->pd_data_work); in wm831x_ts_input_close()
224 if (wm831x_ts->pen_down) { in wm831x_ts_input_close()
225 disable_irq(wm831x_ts->data_irq); in wm831x_ts_input_close()
226 enable_irq(wm831x_ts->pd_irq); in wm831x_ts_input_close()
227 wm831x_ts->pen_down = false; in wm831x_ts_input_close()
233 struct wm831x_ts *wm831x_ts; in wm831x_ts_probe() local
243 wm831x_ts = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_ts), in wm831x_ts_probe()
246 if (!wm831x_ts || !input_dev) { in wm831x_ts_probe()
251 wm831x_ts->wm831x = wm831x; in wm831x_ts_probe()
252 wm831x_ts->input_dev = input_dev; in wm831x_ts_probe()
253 INIT_WORK(&wm831x_ts->pd_data_work, wm831x_pd_data_work); in wm831x_ts_probe()
259 wm831x_ts->data_irq = wm831x_irq(wm831x, in wm831x_ts_probe()
263 wm831x_ts->data_irq = pdata->data_irq; in wm831x_ts_probe()
265 wm831x_ts->pd_irq = wm831x_irq(wm831x, in wm831x_ts_probe()
268 wm831x_ts->pd_irq = pdata->pd_irq; in wm831x_ts_probe()
271 wm831x_ts->pressure = pdata->pressure; in wm831x_ts_probe()
273 wm831x_ts->pressure = true; in wm831x_ts_probe()
282 wm831x_ts->pressure = false; in wm831x_ts_probe()
318 error = request_threaded_irq(wm831x_ts->data_irq, in wm831x_ts_probe()
321 "Touchscreen data", wm831x_ts); in wm831x_ts_probe()
324 wm831x_ts->data_irq, error); in wm831x_ts_probe()
333 error = request_threaded_irq(wm831x_ts->pd_irq, in wm831x_ts_probe()
336 "Touchscreen pen down", wm831x_ts); in wm831x_ts_probe()
339 wm831x_ts->pd_irq, error); in wm831x_ts_probe()
355 if (wm831x_ts->pressure) in wm831x_ts_probe()
358 input_set_drvdata(input_dev, wm831x_ts); in wm831x_ts_probe()
365 platform_set_drvdata(pdev, wm831x_ts); in wm831x_ts_probe()
369 free_irq(wm831x_ts->pd_irq, wm831x_ts); in wm831x_ts_probe()
371 free_irq(wm831x_ts->data_irq, wm831x_ts); in wm831x_ts_probe()
379 struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev); in wm831x_ts_remove() local
381 free_irq(wm831x_ts->pd_irq, wm831x_ts); in wm831x_ts_remove()
382 free_irq(wm831x_ts->data_irq, wm831x_ts); in wm831x_ts_remove()