Lines Matching refs:qt2160
59 struct qt2160_data *qt2160; member
89 struct qt2160_data *qt2160 = led->qt2160; in qt2160_led_work() local
90 struct i2c_client *client = qt2160->client; in qt2160_led_work()
94 mutex_lock(&qt2160->led_lock); in qt2160_led_work()
116 mutex_unlock(&qt2160->led_lock); in qt2160_led_work()
181 static int qt2160_get_key_matrix(struct qt2160_data *qt2160) in qt2160_get_key_matrix() argument
183 struct i2c_client *client = qt2160->client; in qt2160_get_key_matrix()
184 struct input_dev *input = qt2160->input; in qt2160_get_key_matrix()
202 old_matrix = qt2160->key_matrix; in qt2160_get_key_matrix()
203 qt2160->key_matrix = new_matrix = (regs[2] << 8) | regs[1]; in qt2160_get_key_matrix()
210 input_report_key(input, qt2160->keycodes[i], keyval); in qt2160_get_key_matrix()
223 struct qt2160_data *qt2160 = _qt2160; in qt2160_irq() local
226 spin_lock_irqsave(&qt2160->lock, flags); in qt2160_irq()
228 mod_delayed_work(system_wq, &qt2160->dwork, 0); in qt2160_irq()
230 spin_unlock_irqrestore(&qt2160->lock, flags); in qt2160_irq()
235 static void qt2160_schedule_read(struct qt2160_data *qt2160) in qt2160_schedule_read() argument
237 spin_lock_irq(&qt2160->lock); in qt2160_schedule_read()
238 schedule_delayed_work(&qt2160->dwork, QT2160_CYCLE_INTERVAL); in qt2160_schedule_read()
239 spin_unlock_irq(&qt2160->lock); in qt2160_schedule_read()
244 struct qt2160_data *qt2160 = in qt2160_worker() local
247 dev_dbg(&qt2160->client->dev, "worker\n"); in qt2160_worker()
249 qt2160_get_key_matrix(qt2160); in qt2160_worker()
252 qt2160_schedule_read(qt2160); in qt2160_worker()
290 static int qt2160_register_leds(struct qt2160_data *qt2160) in qt2160_register_leds() argument
292 struct i2c_client *client = qt2160->client; in qt2160_register_leds()
296 mutex_init(&qt2160->led_lock); in qt2160_register_leds()
299 struct qt2160_led *led = &qt2160->leds[i]; in qt2160_register_leds()
306 led->qt2160 = qt2160; in qt2160_register_leds()
323 static void qt2160_unregister_leds(struct qt2160_data *qt2160) in qt2160_unregister_leds() argument
328 led_classdev_unregister(&qt2160->leds[i].cdev); in qt2160_unregister_leds()
329 cancel_work_sync(&qt2160->leds[i].work); in qt2160_unregister_leds()
335 static inline int qt2160_register_leds(struct qt2160_data *qt2160) in qt2160_register_leds() argument
340 static inline void qt2160_unregister_leds(struct qt2160_data *qt2160) in qt2160_unregister_leds() argument
380 struct qt2160_data *qt2160; in qt2160_probe() local
398 qt2160 = kzalloc(sizeof(struct qt2160_data), GFP_KERNEL); in qt2160_probe()
400 if (!qt2160 || !input) { in qt2160_probe()
406 qt2160->client = client; in qt2160_probe()
407 qt2160->input = input; in qt2160_probe()
408 INIT_DELAYED_WORK(&qt2160->dwork, qt2160_worker); in qt2160_probe()
409 spin_lock_init(&qt2160->lock); in qt2160_probe()
414 input->keycode = qt2160->keycodes; in qt2160_probe()
415 input->keycodesize = sizeof(qt2160->keycodes[0]); in qt2160_probe()
421 qt2160->keycodes[i] = qt2160_key2code[i]; in qt2160_probe()
435 IRQF_TRIGGER_FALLING, "qt2160", qt2160); in qt2160_probe()
443 error = qt2160_register_leds(qt2160); in qt2160_probe()
449 error = input_register_device(qt2160->input); in qt2160_probe()
456 i2c_set_clientdata(client, qt2160); in qt2160_probe()
457 qt2160_schedule_read(qt2160); in qt2160_probe()
462 qt2160_unregister_leds(qt2160); in qt2160_probe()
465 free_irq(client->irq, qt2160); in qt2160_probe()
468 kfree(qt2160); in qt2160_probe()
474 struct qt2160_data *qt2160 = i2c_get_clientdata(client); in qt2160_remove() local
476 qt2160_unregister_leds(qt2160); in qt2160_remove()
480 free_irq(client->irq, qt2160); in qt2160_remove()
482 cancel_delayed_work_sync(&qt2160->dwork); in qt2160_remove()
484 input_unregister_device(qt2160->input); in qt2160_remove()
485 kfree(qt2160); in qt2160_remove()