Lines Matching full:pd
43 return &cd->pd; in get_prox_data()
46 static void cyttsp5_report_proximity(struct cyttsp5_proximity_data *pd, in cyttsp5_report_proximity() argument
51 input_report_abs(pd->input, ABS_DISTANCE, val); in cyttsp5_report_proximity()
52 input_sync(pd->input); in cyttsp5_report_proximity()
55 static void cyttsp5_get_touch_axis(struct cyttsp5_proximity_data *pd, in cyttsp5_get_touch_axis() argument
62 parade_debug(pd->dev, DEBUG_LEVEL_2, in cyttsp5_get_touch_axis()
72 parade_debug(pd->dev, DEBUG_LEVEL_2, in cyttsp5_get_touch_axis()
78 static void cyttsp5_get_touch_hdr(struct cyttsp5_proximity_data *pd, in cyttsp5_get_touch_hdr() argument
81 struct device *dev = pd->dev; in cyttsp5_get_touch_hdr()
82 struct cyttsp5_sysinfo *si = pd->si; in cyttsp5_get_touch_hdr()
88 cyttsp5_get_touch_axis(pd, &touch->hdr[hdr], in cyttsp5_get_touch_hdr()
99 static void cyttsp5_get_touch(struct cyttsp5_proximity_data *pd, in cyttsp5_get_touch() argument
102 struct device *dev = pd->dev; in cyttsp5_get_touch()
103 struct cyttsp5_sysinfo *si = pd->si; in cyttsp5_get_touch()
109 cyttsp5_get_touch_axis(pd, &touch->abs[abs], in cyttsp5_get_touch()
124 static void cyttsp5_get_proximity_touch(struct cyttsp5_proximity_data *pd, in cyttsp5_get_proximity_touch() argument
127 struct cyttsp5_sysinfo *si = pd->si; in cyttsp5_get_proximity_touch()
131 cyttsp5_get_touch(pd, tch, si->xy_data + in cyttsp5_get_proximity_touch()
137 cyttsp5_report_proximity(pd, true); in cyttsp5_get_proximity_touch()
139 cyttsp5_report_proximity(pd, false); in cyttsp5_get_proximity_touch()
146 static int cyttsp5_xy_worker(struct cyttsp5_proximity_data *pd) in cyttsp5_xy_worker() argument
148 struct device *dev = pd->dev; in cyttsp5_xy_worker()
149 struct cyttsp5_sysinfo *si = pd->si; in cyttsp5_xy_worker()
153 cyttsp5_get_touch_hdr(pd, &tch, si->xy_mode + 3); in cyttsp5_xy_worker()
170 cyttsp5_get_proximity_touch(pd, &tch, num_cur_tch); in cyttsp5_xy_worker()
172 cyttsp5_report_proximity(pd, false); in cyttsp5_xy_worker()
179 struct cyttsp5_proximity_data *pd = get_prox_data(dev); in cyttsp5_proximity_attention() local
182 if (pd->si->xy_mode[2] != pd->si->desc.tch_report_id) in cyttsp5_proximity_attention()
185 mutex_lock(&pd->prox_lock); in cyttsp5_proximity_attention()
186 rc = cyttsp5_xy_worker(pd); in cyttsp5_proximity_attention()
187 mutex_unlock(&pd->prox_lock); in cyttsp5_proximity_attention()
196 struct cyttsp5_proximity_data *pd = get_prox_data(dev); in cyttsp5_startup_attention() local
198 mutex_lock(&pd->prox_lock); in cyttsp5_startup_attention()
199 cyttsp5_report_proximity(pd, false); in cyttsp5_startup_attention()
200 mutex_unlock(&pd->prox_lock); in cyttsp5_startup_attention()
206 struct cyttsp5_proximity_data *pd, bool enable) in _cyttsp5_set_proximity_via_touchmode_enabled() argument
208 struct device *dev = pd->dev; in _cyttsp5_set_proximity_via_touchmode_enabled()
230 struct cyttsp5_proximity_data *pd, bool enable) in _cyttsp5_set_proximity_via_proximity_enable() argument
232 struct device *dev = pd->dev; in _cyttsp5_set_proximity_via_proximity_enable()
253 static int _cyttsp5_set_proximity(struct cyttsp5_proximity_data *pd, in _cyttsp5_set_proximity() argument
256 if (!IS_PIP_VER_GE(pd->si, 1, 4)) in _cyttsp5_set_proximity()
257 return _cyttsp5_set_proximity_via_touchmode_enabled(pd, in _cyttsp5_set_proximity()
260 return _cyttsp5_set_proximity_via_proximity_enable(pd, enable); in _cyttsp5_set_proximity()
263 static int _cyttsp5_proximity_enable(struct cyttsp5_proximity_data *pd) in _cyttsp5_proximity_enable() argument
265 struct device *dev = pd->dev; in _cyttsp5_proximity_enable()
278 rc = _cyttsp5_set_proximity(pd, true); in _cyttsp5_proximity_enable()
301 static int _cyttsp5_proximity_disable(struct cyttsp5_proximity_data *pd, in _cyttsp5_proximity_disable() argument
304 struct device *dev = pd->dev; in _cyttsp5_proximity_disable()
315 rc = _cyttsp5_set_proximity(pd, false); in _cyttsp5_proximity_disable()
343 struct cyttsp5_proximity_data *pd = get_prox_data(dev); in cyttsp5_proximity_enable_show() local
346 mutex_lock(&pd->sysfs_lock); in cyttsp5_proximity_enable_show()
347 val = pd->enable_count; in cyttsp5_proximity_enable_show()
348 mutex_unlock(&pd->sysfs_lock); in cyttsp5_proximity_enable_show()
356 struct cyttsp5_proximity_data *pd = get_prox_data(dev); in cyttsp5_proximity_enable_store() local
366 mutex_lock(&pd->sysfs_lock); in cyttsp5_proximity_enable_store()
368 if (pd->enable_count++) { in cyttsp5_proximity_enable_store()
370 __func__, pd->input->name); in cyttsp5_proximity_enable_store()
372 rc = _cyttsp5_proximity_enable(pd); in cyttsp5_proximity_enable_store()
374 pd->enable_count--; in cyttsp5_proximity_enable_store()
377 if (--pd->enable_count) { in cyttsp5_proximity_enable_store()
378 if (pd->enable_count < 0) { in cyttsp5_proximity_enable_store()
380 __func__, pd->input->name); in cyttsp5_proximity_enable_store()
381 pd->enable_count = 0; in cyttsp5_proximity_enable_store()
384 rc = _cyttsp5_proximity_disable(pd, false); in cyttsp5_proximity_enable_store()
386 pd->enable_count++; in cyttsp5_proximity_enable_store()
389 mutex_unlock(&pd->sysfs_lock); in cyttsp5_proximity_enable_store()
403 struct cyttsp5_proximity_data *pd = get_prox_data(dev); in cyttsp5_setup_input_device_and_sysfs() local
418 __set_bit(EV_ABS, pd->input->evbit); in cyttsp5_setup_input_device_and_sysfs()
421 for (i = 0; i < NUM_SIGNALS(pd->pdata->frmwrk); i++) { in cyttsp5_setup_input_device_and_sysfs()
422 signal = PARAM_SIGNAL(pd->pdata->frmwrk, i); in cyttsp5_setup_input_device_and_sysfs()
424 input_set_abs_params(pd->input, signal, in cyttsp5_setup_input_device_and_sysfs()
425 PARAM_MIN(pd->pdata->frmwrk, i), in cyttsp5_setup_input_device_and_sysfs()
426 PARAM_MAX(pd->pdata->frmwrk, i), in cyttsp5_setup_input_device_and_sysfs()
427 PARAM_FUZZ(pd->pdata->frmwrk, i), in cyttsp5_setup_input_device_and_sysfs()
428 PARAM_FLAT(pd->pdata->frmwrk, i)); in cyttsp5_setup_input_device_and_sysfs()
432 rc = input_register_device(pd->input); in cyttsp5_setup_input_device_and_sysfs()
439 pd->input_device_registered = true; in cyttsp5_setup_input_device_and_sysfs()
450 struct cyttsp5_proximity_data *pd = get_prox_data(dev); in cyttsp5_setup_input_attention() local
453 pd->si = _cyttsp5_request_sysinfo(dev); in cyttsp5_setup_input_attention()
454 if (!pd->si) in cyttsp5_setup_input_attention()
459 rc = _cyttsp5_set_proximity(pd, false); in cyttsp5_setup_input_attention()
470 struct cyttsp5_proximity_data *pd = &cd->pd; in cyttsp5_proximity_probe() local
482 mutex_init(&pd->prox_lock); in cyttsp5_proximity_probe()
483 mutex_init(&pd->sysfs_lock); in cyttsp5_proximity_probe()
484 pd->dev = dev; in cyttsp5_proximity_probe()
485 pd->pdata = prox_pdata; in cyttsp5_proximity_probe()
490 pd->input = input_allocate_device(); in cyttsp5_proximity_probe()
491 if (!pd->input) { in cyttsp5_proximity_probe()
498 if (pd->pdata->inp_dev_name) in cyttsp5_proximity_probe()
499 pd->input->name = pd->pdata->inp_dev_name; in cyttsp5_proximity_probe()
501 pd->input->name = CYTTSP5_PROXIMITY_NAME; in cyttsp5_proximity_probe()
502 scnprintf(pd->phys, sizeof(pd->phys), "%s/input%d", dev_name(dev), in cyttsp5_proximity_probe()
504 pd->input->phys = pd->phys; in cyttsp5_proximity_probe()
505 pd->input->dev.parent = pd->dev; in cyttsp5_proximity_probe()
506 input_set_drvdata(pd->input, pd); in cyttsp5_proximity_probe()
509 pd->si = _cyttsp5_request_sysinfo(dev); in cyttsp5_proximity_probe()
511 if (pd->si) { in cyttsp5_proximity_probe()
516 rc = _cyttsp5_set_proximity(pd, false); in cyttsp5_proximity_probe()
519 __func__, pd->si); in cyttsp5_proximity_probe()
528 input_free_device(pd->input); in cyttsp5_proximity_probe()
537 struct cyttsp5_proximity_data *pd = get_prox_data(dev); in cyttsp5_proximity_release() local
539 if (pd->input_device_registered) { in cyttsp5_proximity_release()
541 mutex_lock(&pd->sysfs_lock); in cyttsp5_proximity_release()
542 if (pd->enable_count) in cyttsp5_proximity_release()
543 _cyttsp5_proximity_disable(pd, true); in cyttsp5_proximity_release()
544 mutex_unlock(&pd->sysfs_lock); in cyttsp5_proximity_release()
546 input_unregister_device(pd->input); in cyttsp5_proximity_release()
548 input_free_device(pd->input); in cyttsp5_proximity_release()