Lines Matching refs:ab3100
67 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent); in ab3100_get_chip_id() local
69 return (int)ab3100->chip_id; in ab3100_get_chip_id()
72 static int ab3100_set_register_interruptible(struct ab3100 *ab3100, in ab3100_set_register_interruptible() argument
78 err = mutex_lock_interruptible(&ab3100->access_mutex); in ab3100_set_register_interruptible()
87 err = i2c_master_send(ab3100->i2c_client, regandval, 2); in ab3100_set_register_interruptible()
89 dev_err(ab3100->dev, in ab3100_set_register_interruptible()
93 dev_err(ab3100->dev, in ab3100_set_register_interruptible()
102 mutex_unlock(&ab3100->access_mutex); in ab3100_set_register_interruptible()
109 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent); in set_register_interruptible() local
111 return ab3100_set_register_interruptible(ab3100, reg, value); in set_register_interruptible()
121 static int ab3100_set_test_register_interruptible(struct ab3100 *ab3100, in ab3100_set_test_register_interruptible() argument
127 err = mutex_lock_interruptible(&ab3100->access_mutex); in ab3100_set_test_register_interruptible()
131 err = i2c_master_send(ab3100->testreg_client, regandval, 2); in ab3100_set_test_register_interruptible()
133 dev_err(ab3100->dev, in ab3100_set_test_register_interruptible()
137 dev_err(ab3100->dev, in ab3100_set_test_register_interruptible()
146 mutex_unlock(&ab3100->access_mutex); in ab3100_set_test_register_interruptible()
151 static int ab3100_get_register_interruptible(struct ab3100 *ab3100, in ab3100_get_register_interruptible() argument
156 err = mutex_lock_interruptible(&ab3100->access_mutex); in ab3100_get_register_interruptible()
166 err = i2c_master_send(ab3100->i2c_client, ®, 1); in ab3100_get_register_interruptible()
168 dev_err(ab3100->dev, in ab3100_get_register_interruptible()
173 dev_err(ab3100->dev, in ab3100_get_register_interruptible()
184 err = i2c_master_recv(ab3100->i2c_client, regval, 1); in ab3100_get_register_interruptible()
186 dev_err(ab3100->dev, in ab3100_get_register_interruptible()
191 dev_err(ab3100->dev, in ab3100_get_register_interruptible()
203 mutex_unlock(&ab3100->access_mutex); in ab3100_get_register_interruptible()
210 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent); in get_register_interruptible() local
212 return ab3100_get_register_interruptible(ab3100, reg, value); in get_register_interruptible()
215 static int ab3100_get_register_page_interruptible(struct ab3100 *ab3100, in ab3100_get_register_page_interruptible() argument
220 if (ab3100->chip_id == 0xa0 || in ab3100_get_register_page_interruptible()
221 ab3100->chip_id == 0xa1) in ab3100_get_register_page_interruptible()
225 err = mutex_lock_interruptible(&ab3100->access_mutex); in ab3100_get_register_page_interruptible()
232 err = i2c_master_send(ab3100->i2c_client, &first_reg, 1); in ab3100_get_register_page_interruptible()
234 dev_err(ab3100->dev, in ab3100_get_register_page_interruptible()
239 dev_err(ab3100->dev, in ab3100_get_register_page_interruptible()
247 err = i2c_master_recv(ab3100->i2c_client, regvals, numregs); in ab3100_get_register_page_interruptible()
249 dev_err(ab3100->dev, in ab3100_get_register_page_interruptible()
254 dev_err(ab3100->dev, in ab3100_get_register_page_interruptible()
266 mutex_unlock(&ab3100->access_mutex); in ab3100_get_register_page_interruptible()
273 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent); in get_register_page_interruptible() local
275 return ab3100_get_register_page_interruptible(ab3100, in get_register_page_interruptible()
279 static int ab3100_mask_and_set_register_interruptible(struct ab3100 *ab3100, in ab3100_mask_and_set_register_interruptible() argument
285 err = mutex_lock_interruptible(&ab3100->access_mutex); in ab3100_mask_and_set_register_interruptible()
290 err = i2c_master_send(ab3100->i2c_client, ®, 1); in ab3100_mask_and_set_register_interruptible()
292 dev_err(ab3100->dev, in ab3100_mask_and_set_register_interruptible()
297 dev_err(ab3100->dev, in ab3100_mask_and_set_register_interruptible()
305 err = i2c_master_recv(ab3100->i2c_client, ®andval[1], 1); in ab3100_mask_and_set_register_interruptible()
307 dev_err(ab3100->dev, in ab3100_mask_and_set_register_interruptible()
312 dev_err(ab3100->dev, in ab3100_mask_and_set_register_interruptible()
325 err = i2c_master_send(ab3100->i2c_client, regandval, 2); in ab3100_mask_and_set_register_interruptible()
327 dev_err(ab3100->dev, in ab3100_mask_and_set_register_interruptible()
332 dev_err(ab3100->dev, in ab3100_mask_and_set_register_interruptible()
344 mutex_unlock(&ab3100->access_mutex); in ab3100_mask_and_set_register_interruptible()
351 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent); in mask_and_set_register_interruptible() local
353 return ab3100_mask_and_set_register_interruptible(ab3100, in mask_and_set_register_interruptible()
360 int ab3100_event_register(struct ab3100 *ab3100, in ab3100_event_register() argument
363 return blocking_notifier_chain_register(&ab3100->event_subscribers, in ab3100_event_register()
371 int ab3100_event_unregister(struct ab3100 *ab3100, in ab3100_event_unregister() argument
374 return blocking_notifier_chain_unregister(&ab3100->event_subscribers, in ab3100_event_unregister()
383 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent); in ab3100_event_registers_startup_state_get() local
384 if (!ab3100->startup_events_read) in ab3100_event_registers_startup_state_get()
386 memcpy(event, ab3100->startup_events, 3); in ab3100_event_registers_startup_state_get()
408 struct ab3100 *ab3100 = data; in ab3100_irq_handler() local
413 err = ab3100_get_register_page_interruptible(ab3100, AB3100_EVENTA1, in ab3100_irq_handler()
422 if (!ab3100->startup_events_read) { in ab3100_irq_handler()
423 ab3100->startup_events[0] = event_regs[0]; in ab3100_irq_handler()
424 ab3100->startup_events[1] = event_regs[1]; in ab3100_irq_handler()
425 ab3100->startup_events[2] = event_regs[2]; in ab3100_irq_handler()
426 ab3100->startup_events_read = true; in ab3100_irq_handler()
434 blocking_notifier_call_chain(&ab3100->event_subscribers, in ab3100_irq_handler()
437 dev_dbg(ab3100->dev, in ab3100_irq_handler()
443 dev_dbg(ab3100->dev, in ab3100_irq_handler()
454 struct ab3100 *ab3100 = s->private; in ab3100_registers_print() local
461 ab3100_get_register_interruptible(ab3100, reg, &value); in ab3100_registers_print()
481 struct ab3100 *ab3100; member
490 struct ab3100 *ab3100 = priv->ab3100; in ab3100_get_set_reg() local
532 ab3100_get_register_interruptible(ab3100, user_reg, ®value); in ab3100_get_set_reg()
534 dev_info(ab3100->dev, in ab3100_get_set_reg()
559 ab3100_set_register_interruptible(ab3100, user_reg, user_value); in ab3100_get_set_reg()
560 ab3100_get_register_interruptible(ab3100, user_reg, ®value); in ab3100_get_set_reg()
562 dev_info(ab3100->dev, in ab3100_get_set_reg()
583 static void ab3100_setup_debugfs(struct ab3100 *ab3100) in ab3100_setup_debugfs() argument
592 S_IRUGO, ab3100_dir, ab3100, in ab3100_setup_debugfs()
599 ab3100_get_priv.ab3100 = ab3100; in ab3100_setup_debugfs()
609 ab3100_set_priv.ab3100 = ab3100; in ab3100_setup_debugfs()
637 static inline void ab3100_setup_debugfs(struct ab3100 *ab3100) in ab3100_setup_debugfs() argument
702 static int ab3100_setup(struct ab3100 *ab3100) in ab3100_setup() argument
708 err = ab3100_set_register_interruptible(ab3100, in ab3100_setup()
720 if (ab3100->chip_id == 0xc4) { in ab3100_setup()
721 dev_warn(ab3100->dev, in ab3100_setup()
723 err = ab3100_set_test_register_interruptible(ab3100, in ab3100_setup()
854 struct ab3100 *ab3100; in ab3100_probe() local
860 ab3100 = devm_kzalloc(&client->dev, sizeof(struct ab3100), GFP_KERNEL); in ab3100_probe()
861 if (!ab3100) { in ab3100_probe()
867 mutex_init(&ab3100->access_mutex); in ab3100_probe()
868 BLOCKING_INIT_NOTIFIER_HEAD(&ab3100->event_subscribers); in ab3100_probe()
870 ab3100->i2c_client = client; in ab3100_probe()
871 ab3100->dev = &ab3100->i2c_client->dev; in ab3100_probe()
873 i2c_set_clientdata(client, ab3100); in ab3100_probe()
876 err = ab3100_get_register_interruptible(ab3100, AB3100_CID, in ab3100_probe()
877 &ab3100->chip_id); in ab3100_probe()
885 if (ids[i].id == ab3100->chip_id) { in ab3100_probe()
887 snprintf(&ab3100->chip_name[0], in ab3100_probe()
888 sizeof(ab3100->chip_name) - 1, in ab3100_probe()
902 ab3100->chip_id); in ab3100_probe()
909 &ab3100->chip_name[0]); in ab3100_probe()
912 ab3100->testreg_client = i2c_new_dummy(client->adapter, in ab3100_probe()
914 if (!ab3100->testreg_client) { in ab3100_probe()
919 err = ab3100_setup(ab3100); in ab3100_probe()
925 IRQF_ONESHOT, "ab3100-core", ab3100); in ab3100_probe()
942 ab3100_setup_debugfs(ab3100); in ab3100_probe()
949 i2c_unregister_device(ab3100->testreg_client); in ab3100_probe()
957 struct ab3100 *ab3100 = i2c_get_clientdata(client); in ab3100_remove() local
962 i2c_unregister_device(ab3100->testreg_client); in ab3100_remove()