Lines Matching refs:wac_i2c
181 struct wacom_i2c *wac_i2c = dev_id; in wacom_i2c_irq() local
182 struct input_dev *input = wac_i2c->input; in wacom_i2c_irq()
184 u8 *data = wac_i2c->data; in wacom_i2c_irq()
189 if (device_can_wakeup(&wac_i2c->client->dev)) in wacom_i2c_irq()
190 pm_stay_awake(&wac_i2c->client->dev); in wacom_i2c_irq()
191 error = i2c_master_recv(wac_i2c->client, in wacom_i2c_irq()
192 wac_i2c->data, sizeof(wac_i2c->data)); in wacom_i2c_irq()
204 if (!wac_i2c->prox) in wacom_i2c_irq()
205 wac_i2c->tool = (data[3] & 0x0c) ? in wacom_i2c_irq()
208 wac_i2c->prox = data[3] & 0x20; in wacom_i2c_irq()
221 input_report_key(input, wac_i2c->tool, wac_i2c->prox); in wacom_i2c_irq()
230 if (device_can_wakeup(&wac_i2c->client->dev)) in wacom_i2c_irq()
231 pm_relax(&wac_i2c->client->dev); in wacom_i2c_irq()
238 struct wacom_i2c *wac_i2c = input_get_drvdata(dev); in wacom_i2c_open() local
239 struct i2c_client *client = wac_i2c->client; in wacom_i2c_open()
248 struct wacom_i2c *wac_i2c = input_get_drvdata(dev); in wacom_i2c_close() local
249 struct i2c_client *client = wac_i2c->client; in wacom_i2c_close()
256 struct wacom_i2c *wac_i2c = container_of(tp_d, struct wacom_i2c, tp); in wacom_i2c_suspend() local
258 dev_dbg(&wac_i2c->client->dev, "%s\n", __func__); in wacom_i2c_suspend()
259 disable_irq(wac_i2c->client->irq); in wacom_i2c_suspend()
260 if (wac_i2c->supply) { in wacom_i2c_suspend()
261 gpio_direction_output(wac_i2c->irq_gpio, 0); in wacom_i2c_suspend()
262 gpio_direction_output(wac_i2c->pen_detect_gpio, 0); in wacom_i2c_suspend()
263 gpio_direction_output(wac_i2c->reset_gpio, 0); in wacom_i2c_suspend()
264 regulator_disable(wac_i2c->supply); in wacom_i2c_suspend()
271 struct wacom_i2c *wac_i2c = container_of(tp_d, struct wacom_i2c, tp); in wacom_i2c_resume() local
274 dev_dbg(&wac_i2c->client->dev, "%s\n", __func__); in wacom_i2c_resume()
275 if (wac_i2c->supply) { in wacom_i2c_resume()
276 gpio_direction_input(wac_i2c->irq_gpio); in wacom_i2c_resume()
277 gpio_direction_input(wac_i2c->pen_detect_gpio); in wacom_i2c_resume()
278 gpio_direction_output(wac_i2c->reset_gpio, 1); in wacom_i2c_resume()
279 ret = regulator_enable(wac_i2c->supply); in wacom_i2c_resume()
281 dev_err(&wac_i2c->client->dev, "failed to enable wacom power supply\n"); in wacom_i2c_resume()
283 enable_irq(wac_i2c->client->irq); in wacom_i2c_resume()
291 struct wacom_i2c *wac_i2c; in wacom_i2c_probe() local
329 wac_i2c = kzalloc(sizeof(*wac_i2c), GFP_KERNEL); in wacom_i2c_probe()
331 if (!wac_i2c || !input) { in wacom_i2c_probe()
337 wac_i2c->supply = power_supply; in wacom_i2c_probe()
339 wac_i2c->reset_gpio = of_get_named_gpio(wac_np, "gpio_rst", 0); in wacom_i2c_probe()
340 if (!gpio_is_valid(wac_i2c->reset_gpio)) { in wacom_i2c_probe()
345 error = devm_gpio_request_one(&client->dev, wac_i2c->reset_gpio, GPIOF_OUT_INIT_LOW, "gpio-rst"); in wacom_i2c_probe()
349 gpio_direction_output(wac_i2c->reset_gpio, 0); in wacom_i2c_probe()
351 gpio_direction_output(wac_i2c->reset_gpio, 1); in wacom_i2c_probe()
353 wac_i2c->pen_detect_gpio = of_get_named_gpio(wac_np, "gpio_detect", 0); in wacom_i2c_probe()
354 if (!gpio_is_valid(wac_i2c->pen_detect_gpio)) { in wacom_i2c_probe()
358 error = devm_gpio_request_one(&client->dev, wac_i2c->pen_detect_gpio, GPIOF_IN, "gpio_detect"); in wacom_i2c_probe()
363 wac_i2c->irq_gpio = of_get_named_gpio(wac_np, "gpio_intr", 0); in wacom_i2c_probe()
364 if (!gpio_is_valid(wac_i2c->irq_gpio)) { in wacom_i2c_probe()
369 error = devm_gpio_request_one(&client->dev, wac_i2c->irq_gpio, GPIOF_IN, "gpio_intr"); in wacom_i2c_probe()
374 client->irq = gpio_to_irq(wac_i2c->irq_gpio); in wacom_i2c_probe()
376 …dev_err(&client->dev, "Unable to get irq number for GPIO %d, error %d\n", wac_i2c->irq_gpio, clien… in wacom_i2c_probe()
380 wac_i2c->features = &features; in wacom_i2c_probe()
381 wac_i2c->client = client; in wacom_i2c_probe()
382 wac_i2c->input = input; in wacom_i2c_probe()
407 input_set_drvdata(input, wac_i2c); in wacom_i2c_probe()
411 "wacom", wac_i2c); in wacom_i2c_probe()
421 error = input_register_device(wac_i2c->input); in wacom_i2c_probe()
431 wac_i2c->tp.tp_resume = wacom_i2c_resume; in wacom_i2c_probe()
432 wac_i2c->tp.tp_suspend = wacom_i2c_suspend; in wacom_i2c_probe()
433 tp_register_fb(&wac_i2c->tp); in wacom_i2c_probe()
434 i2c_set_clientdata(client, wac_i2c); in wacom_i2c_probe()
439 free_irq(client->irq, wac_i2c); in wacom_i2c_probe()
445 kfree(wac_i2c); in wacom_i2c_probe()
452 struct wacom_i2c *wac_i2c = i2c_get_clientdata(client); in wacom_i2c_remove() local
454 free_irq(client->irq, wac_i2c); in wacom_i2c_remove()
455 input_unregister_device(wac_i2c->input); in wacom_i2c_remove()
456 kfree(wac_i2c); in wacom_i2c_remove()