Lines Matching defs:ts

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