Lines Matching refs:ts

66 static int imagis_i2c_read_reg(struct imagis_ts *ts,  in imagis_i2c_read_reg()  argument
73 .addr = ts->client->addr, in imagis_i2c_read_reg()
78 .addr = ts->client->addr, in imagis_i2c_read_reg()
89 ret = i2c_transfer(ts->client->adapter, msg, ARRAY_SIZE(msg)); in imagis_i2c_read_reg()
96 dev_err(&ts->client->dev, in imagis_i2c_read_reg()
106 struct imagis_ts *ts = dev_id; in imagis_interrupt() local
112 error = imagis_i2c_read_reg(ts, ts->tdata->interrupt_msg_cmd, &intr_message); in imagis_interrupt()
114 dev_err(&ts->client->dev, in imagis_interrupt()
121 dev_err(&ts->client->dev, in imagis_interrupt()
130 if (ts->tdata->protocol_b) in imagis_interrupt()
131 error = imagis_i2c_read_reg(ts, in imagis_interrupt()
132 ts->tdata->touch_coord_cmd + (i * 4), in imagis_interrupt()
135 error = imagis_i2c_read_reg(ts, in imagis_interrupt()
136 ts->tdata->touch_coord_cmd, &finger_status); in imagis_interrupt()
138 dev_err(&ts->client->dev, in imagis_interrupt()
144 input_mt_slot(ts->input_dev, i); in imagis_interrupt()
145 input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, in imagis_interrupt()
147 touchscreen_report_pos(ts->input_dev, &ts->prop, in imagis_interrupt()
151 input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, in imagis_interrupt()
157 for (int i = 0; i < ts->num_keycodes; i++) in imagis_interrupt()
158 input_report_key(ts->input_dev, ts->keycodes[i], in imagis_interrupt()
161 input_mt_sync_frame(ts->input_dev); in imagis_interrupt()
162 input_sync(ts->input_dev); in imagis_interrupt()
170 struct imagis_ts *ts = _ts; in imagis_power_off() local
172 regulator_bulk_disable(ARRAY_SIZE(ts->supplies), ts->supplies); in imagis_power_off()
175 static int imagis_power_on(struct imagis_ts *ts) in imagis_power_on() argument
179 error = regulator_bulk_enable(ARRAY_SIZE(ts->supplies), ts->supplies); in imagis_power_on()
188 static int imagis_start(struct imagis_ts *ts) in imagis_start() argument
192 error = imagis_power_on(ts); in imagis_start()
196 enable_irq(ts->client->irq); in imagis_start()
201 static int imagis_stop(struct imagis_ts *ts) in imagis_stop() argument
203 disable_irq(ts->client->irq); in imagis_stop()
205 imagis_power_off(ts); in imagis_stop()
212 struct imagis_ts *ts = input_get_drvdata(dev); in imagis_input_open() local
214 return imagis_start(ts); in imagis_input_open()
219 struct imagis_ts *ts = input_get_drvdata(dev); in imagis_input_close() local
221 imagis_stop(ts); in imagis_input_close()
224 static int imagis_init_input_dev(struct imagis_ts *ts) in imagis_init_input_dev() argument
229 input_dev = devm_input_allocate_device(&ts->client->dev); in imagis_init_input_dev()
233 ts->input_dev = input_dev; in imagis_init_input_dev()
241 input_set_drvdata(input_dev, ts); in imagis_init_input_dev()
246 if (ts->tdata->touch_keys_supported) { in imagis_init_input_dev()
247 ts->num_keycodes = of_property_read_variable_u32_array( in imagis_init_input_dev()
248 ts->client->dev.of_node, "linux,keycodes", in imagis_init_input_dev()
249 ts->keycodes, 0, ARRAY_SIZE(ts->keycodes)); in imagis_init_input_dev()
250 if (ts->num_keycodes <= 0) { in imagis_init_input_dev()
251 ts->keycodes[0] = KEY_APPSELECT; in imagis_init_input_dev()
252 ts->keycodes[1] = KEY_BACK; in imagis_init_input_dev()
253 ts->num_keycodes = 2; in imagis_init_input_dev()
256 input_dev->keycodemax = ts->num_keycodes; in imagis_init_input_dev()
257 input_dev->keycodesize = sizeof(ts->keycodes[0]); in imagis_init_input_dev()
258 input_dev->keycode = ts->keycodes; in imagis_init_input_dev()
261 for (int i = 0; i < ts->num_keycodes; i++) in imagis_init_input_dev()
262 input_set_capability(input_dev, EV_KEY, ts->keycodes[i]); in imagis_init_input_dev()
264 touchscreen_parse_properties(input_dev, true, &ts->prop); in imagis_init_input_dev()
265 if (!ts->prop.max_x || !ts->prop.max_y) { in imagis_init_input_dev()
266 dev_err(&ts->client->dev, in imagis_init_input_dev()
275 dev_err(&ts->client->dev, in imagis_init_input_dev()
282 dev_err(&ts->client->dev, in imagis_init_input_dev()
290 static int imagis_init_regulators(struct imagis_ts *ts) in imagis_init_regulators() argument
292 struct i2c_client *client = ts->client; in imagis_init_regulators()
294 ts->supplies[0].supply = "vdd"; in imagis_init_regulators()
295 ts->supplies[1].supply = "vddio"; in imagis_init_regulators()
297 ARRAY_SIZE(ts->supplies), in imagis_init_regulators()
298 ts->supplies); in imagis_init_regulators()
304 struct imagis_ts *ts; in imagis_probe() local
307 ts = devm_kzalloc(dev, sizeof(*ts), GFP_KERNEL); in imagis_probe()
308 if (!ts) in imagis_probe()
311 ts->client = i2c; in imagis_probe()
313 ts->tdata = device_get_match_data(dev); in imagis_probe()
314 if (!ts->tdata) { in imagis_probe()
319 error = imagis_init_regulators(ts); in imagis_probe()
325 error = imagis_power_on(ts); in imagis_probe()
331 error = devm_add_action_or_reset(dev, imagis_power_off, ts); in imagis_probe()
337 error = imagis_i2c_read_reg(ts, ts->tdata->whoami_cmd, &chip_id); in imagis_probe()
343 if (chip_id != ts->tdata->whoami_val) { in imagis_probe()
351 "imagis-touchscreen", ts); in imagis_probe()
358 error = imagis_init_input_dev(ts); in imagis_probe()
368 struct imagis_ts *ts = i2c_get_clientdata(client); in imagis_suspend() local
371 mutex_lock(&ts->input_dev->mutex); in imagis_suspend()
373 if (input_device_enabled(ts->input_dev)) in imagis_suspend()
374 retval = imagis_stop(ts); in imagis_suspend()
376 mutex_unlock(&ts->input_dev->mutex); in imagis_suspend()
384 struct imagis_ts *ts = i2c_get_clientdata(client); in imagis_resume() local
387 mutex_lock(&ts->input_dev->mutex); in imagis_resume()
389 if (input_device_enabled(ts->input_dev)) in imagis_resume()
390 retval = imagis_start(ts); in imagis_resume()
392 mutex_unlock(&ts->input_dev->mutex); in imagis_resume()