Lines Matching defs:ab3100

24 #include <linux/mfd/ab3100.h>
67 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
69 return (int)ab3100->chip_id;
72 static int ab3100_set_register_interruptible(struct ab3100 *ab3100,
78 err = mutex_lock_interruptible(&ab3100->access_mutex);
87 err = i2c_master_send(ab3100->i2c_client, regandval, 2);
89 dev_err(ab3100->dev,
93 dev_err(ab3100->dev,
102 mutex_unlock(&ab3100->access_mutex);
109 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
111 return ab3100_set_register_interruptible(ab3100, reg, value);
121 static int ab3100_set_test_register_interruptible(struct ab3100 *ab3100,
127 err = mutex_lock_interruptible(&ab3100->access_mutex);
131 err = i2c_master_send(ab3100->testreg_client, regandval, 2);
133 dev_err(ab3100->dev,
137 dev_err(ab3100->dev,
146 mutex_unlock(&ab3100->access_mutex);
151 static int ab3100_get_register_interruptible(struct ab3100 *ab3100,
156 err = mutex_lock_interruptible(&ab3100->access_mutex);
166 err = i2c_master_send(ab3100->i2c_client, &reg, 1);
168 dev_err(ab3100->dev,
173 dev_err(ab3100->dev,
184 err = i2c_master_recv(ab3100->i2c_client, regval, 1);
186 dev_err(ab3100->dev,
191 dev_err(ab3100->dev,
203 mutex_unlock(&ab3100->access_mutex);
210 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
212 return ab3100_get_register_interruptible(ab3100, reg, value);
215 static int ab3100_get_register_page_interruptible(struct ab3100 *ab3100,
220 if (ab3100->chip_id == 0xa0 ||
221 ab3100->chip_id == 0xa1)
225 err = mutex_lock_interruptible(&ab3100->access_mutex);
232 err = i2c_master_send(ab3100->i2c_client, &first_reg, 1);
234 dev_err(ab3100->dev,
239 dev_err(ab3100->dev,
247 err = i2c_master_recv(ab3100->i2c_client, regvals, numregs);
249 dev_err(ab3100->dev,
254 dev_err(ab3100->dev,
266 mutex_unlock(&ab3100->access_mutex);
273 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
275 return ab3100_get_register_page_interruptible(ab3100,
279 static int ab3100_mask_and_set_register_interruptible(struct ab3100 *ab3100,
285 err = mutex_lock_interruptible(&ab3100->access_mutex);
290 err = i2c_master_send(ab3100->i2c_client, &reg, 1);
292 dev_err(ab3100->dev,
297 dev_err(ab3100->dev,
305 err = i2c_master_recv(ab3100->i2c_client, &regandval[1], 1);
307 dev_err(ab3100->dev,
312 dev_err(ab3100->dev,
325 err = i2c_master_send(ab3100->i2c_client, regandval, 2);
327 dev_err(ab3100->dev,
332 dev_err(ab3100->dev,
344 mutex_unlock(&ab3100->access_mutex);
351 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
353 return ab3100_mask_and_set_register_interruptible(ab3100,
360 int ab3100_event_register(struct ab3100 *ab3100,
363 return blocking_notifier_chain_register(&ab3100->event_subscribers,
371 int ab3100_event_unregister(struct ab3100 *ab3100,
374 return blocking_notifier_chain_unregister(&ab3100->event_subscribers,
383 struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
384 if (!ab3100->startup_events_read)
386 memcpy(event, ab3100->startup_events, 3);
408 struct ab3100 *ab3100 = data;
413 err = ab3100_get_register_page_interruptible(ab3100, AB3100_EVENTA1,
422 if (!ab3100->startup_events_read) {
423 ab3100->startup_events[0] = event_regs[0];
424 ab3100->startup_events[1] = event_regs[1];
425 ab3100->startup_events[2] = event_regs[2];
426 ab3100->startup_events_read = true;
434 blocking_notifier_call_chain(&ab3100->event_subscribers,
437 dev_dbg(ab3100->dev,
443 dev_dbg(ab3100->dev,
454 struct ab3100 *ab3100 = s->private;
461 ab3100_get_register_interruptible(ab3100, reg, &value);
481 struct ab3100 *ab3100;
490 struct ab3100 *ab3100 = priv->ab3100;
532 ab3100_get_register_interruptible(ab3100, user_reg, &regvalue);
534 dev_info(ab3100->dev,
559 ab3100_set_register_interruptible(ab3100, user_reg, user_value);
560 ab3100_get_register_interruptible(ab3100, user_reg, &regvalue);
562 dev_info(ab3100->dev,
583 static void ab3100_setup_debugfs(struct ab3100 *ab3100)
587 ab3100_dir = debugfs_create_dir("ab3100", NULL);
592 S_IRUGO, ab3100_dir, ab3100,
599 ab3100_get_priv.ab3100 = ab3100;
609 ab3100_set_priv.ab3100 = ab3100;
637 static inline void ab3100_setup_debugfs(struct ab3100 *ab3100)
702 static int ab3100_setup(struct ab3100 *ab3100)
708 err = ab3100_set_register_interruptible(ab3100,
720 if (ab3100->chip_id == 0xc4) {
721 dev_warn(ab3100->dev,
723 err = ab3100_set_test_register_interruptible(ab3100,
734 .name = "ab3100-dac",
738 .name = "ab3100-leds",
742 .name = "ab3100-power",
746 .name = "ab3100-regulators",
747 .of_compatible = "stericsson,ab3100-regulators",
751 .name = "ab3100-sim",
755 .name = "ab3100-uart",
759 .name = "ab3100-rtc",
763 .name = "ab3100-charger",
767 .name = "ab3100-boost",
771 .name = "ab3100-adc",
775 .name = "ab3100-fuelgauge",
779 .name = "ab3100-vibrator",
783 .name = "ab3100-otp",
787 .name = "ab3100-codec",
854 struct ab3100 *ab3100;
860 ab3100 = devm_kzalloc(&client->dev, sizeof(struct ab3100), GFP_KERNEL);
861 if (!ab3100) {
867 mutex_init(&ab3100->access_mutex);
868 BLOCKING_INIT_NOTIFIER_HEAD(&ab3100->event_subscribers);
870 ab3100->i2c_client = client;
871 ab3100->dev = &ab3100->i2c_client->dev;
873 i2c_set_clientdata(client, ab3100);
876 err = ab3100_get_register_interruptible(ab3100, AB3100_CID,
877 &ab3100->chip_id);
885 if (ids[i].id == ab3100->chip_id) {
887 snprintf(&ab3100->chip_name[0],
888 sizeof(ab3100->chip_name) - 1,
902 ab3100->chip_id);
909 &ab3100->chip_name[0]);
912 ab3100->testreg_client = i2c_new_dummy(client->adapter,
914 if (!ab3100->testreg_client) {
919 err = ab3100_setup(ab3100);
925 IRQF_ONESHOT, "ab3100-core", ab3100);
942 ab3100_setup_debugfs(ab3100);
949 i2c_unregister_device(ab3100->testreg_client);
957 struct ab3100 *ab3100 = i2c_get_clientdata(client);
962 i2c_unregister_device(ab3100->testreg_client);
967 { "ab3100", 0 },
974 .name = "ab3100",