ab3100             67 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
ab3100             69 drivers/mfd/ab3100-core.c 	return (int)ab3100->chip_id;
ab3100             72 drivers/mfd/ab3100-core.c static int ab3100_set_register_interruptible(struct ab3100 *ab3100,
ab3100             78 drivers/mfd/ab3100-core.c 	err = mutex_lock_interruptible(&ab3100->access_mutex);
ab3100             87 drivers/mfd/ab3100-core.c 	err = i2c_master_send(ab3100->i2c_client, regandval, 2);
ab3100             89 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100             93 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            102 drivers/mfd/ab3100-core.c 	mutex_unlock(&ab3100->access_mutex);
ab3100            109 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
ab3100            111 drivers/mfd/ab3100-core.c 	return ab3100_set_register_interruptible(ab3100, reg, value);
ab3100            121 drivers/mfd/ab3100-core.c static int ab3100_set_test_register_interruptible(struct ab3100 *ab3100,
ab3100            127 drivers/mfd/ab3100-core.c 	err = mutex_lock_interruptible(&ab3100->access_mutex);
ab3100            131 drivers/mfd/ab3100-core.c 	err = i2c_master_send(ab3100->testreg_client, regandval, 2);
ab3100            133 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            137 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            146 drivers/mfd/ab3100-core.c 	mutex_unlock(&ab3100->access_mutex);
ab3100            151 drivers/mfd/ab3100-core.c static int ab3100_get_register_interruptible(struct ab3100 *ab3100,
ab3100            156 drivers/mfd/ab3100-core.c 	err = mutex_lock_interruptible(&ab3100->access_mutex);
ab3100            166 drivers/mfd/ab3100-core.c 	err = i2c_master_send(ab3100->i2c_client, &reg, 1);
ab3100            168 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            173 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            184 drivers/mfd/ab3100-core.c 	err = i2c_master_recv(ab3100->i2c_client, regval, 1);
ab3100            186 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            191 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            203 drivers/mfd/ab3100-core.c 	mutex_unlock(&ab3100->access_mutex);
ab3100            210 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
ab3100            212 drivers/mfd/ab3100-core.c 	return ab3100_get_register_interruptible(ab3100, reg, value);
ab3100            215 drivers/mfd/ab3100-core.c static int ab3100_get_register_page_interruptible(struct ab3100 *ab3100,
ab3100            220 drivers/mfd/ab3100-core.c 	if (ab3100->chip_id == 0xa0 ||
ab3100            221 drivers/mfd/ab3100-core.c 	    ab3100->chip_id == 0xa1)
ab3100            225 drivers/mfd/ab3100-core.c 	err = mutex_lock_interruptible(&ab3100->access_mutex);
ab3100            232 drivers/mfd/ab3100-core.c 	err = i2c_master_send(ab3100->i2c_client, &first_reg, 1);
ab3100            234 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            239 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            247 drivers/mfd/ab3100-core.c 	err = i2c_master_recv(ab3100->i2c_client, regvals, numregs);
ab3100            249 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            254 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            266 drivers/mfd/ab3100-core.c 	mutex_unlock(&ab3100->access_mutex);
ab3100            273 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
ab3100            275 drivers/mfd/ab3100-core.c 	return ab3100_get_register_page_interruptible(ab3100,
ab3100            279 drivers/mfd/ab3100-core.c static int ab3100_mask_and_set_register_interruptible(struct ab3100 *ab3100,
ab3100            285 drivers/mfd/ab3100-core.c 	err = mutex_lock_interruptible(&ab3100->access_mutex);
ab3100            290 drivers/mfd/ab3100-core.c 	err = i2c_master_send(ab3100->i2c_client, &reg, 1);
ab3100            292 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            297 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            305 drivers/mfd/ab3100-core.c 	err = i2c_master_recv(ab3100->i2c_client, &regandval[1], 1);
ab3100            307 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            312 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            325 drivers/mfd/ab3100-core.c 	err = i2c_master_send(ab3100->i2c_client, regandval, 2);
ab3100            327 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            332 drivers/mfd/ab3100-core.c 		dev_err(ab3100->dev,
ab3100            344 drivers/mfd/ab3100-core.c 	mutex_unlock(&ab3100->access_mutex);
ab3100            351 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
ab3100            353 drivers/mfd/ab3100-core.c 	return ab3100_mask_and_set_register_interruptible(ab3100,
ab3100            360 drivers/mfd/ab3100-core.c int ab3100_event_register(struct ab3100 *ab3100,
ab3100            363 drivers/mfd/ab3100-core.c 	return blocking_notifier_chain_register(&ab3100->event_subscribers,
ab3100            371 drivers/mfd/ab3100-core.c int ab3100_event_unregister(struct ab3100 *ab3100,
ab3100            374 drivers/mfd/ab3100-core.c 	return blocking_notifier_chain_unregister(&ab3100->event_subscribers,
ab3100            383 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100 = dev_get_drvdata(dev->parent);
ab3100            385 drivers/mfd/ab3100-core.c 	if (!ab3100->startup_events_read)
ab3100            387 drivers/mfd/ab3100-core.c 	memcpy(event, ab3100->startup_events, 3);
ab3100            410 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100 = data;
ab3100            415 drivers/mfd/ab3100-core.c 	err = ab3100_get_register_page_interruptible(ab3100, AB3100_EVENTA1,
ab3100            424 drivers/mfd/ab3100-core.c 	if (!ab3100->startup_events_read) {
ab3100            425 drivers/mfd/ab3100-core.c 		ab3100->startup_events[0] = event_regs[0];
ab3100            426 drivers/mfd/ab3100-core.c 		ab3100->startup_events[1] = event_regs[1];
ab3100            427 drivers/mfd/ab3100-core.c 		ab3100->startup_events[2] = event_regs[2];
ab3100            428 drivers/mfd/ab3100-core.c 		ab3100->startup_events_read = true;
ab3100            436 drivers/mfd/ab3100-core.c 	blocking_notifier_call_chain(&ab3100->event_subscribers,
ab3100            439 drivers/mfd/ab3100-core.c 	dev_dbg(ab3100->dev,
ab3100            445 drivers/mfd/ab3100-core.c 	dev_dbg(ab3100->dev,
ab3100            456 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100 = s->private;
ab3100            463 drivers/mfd/ab3100-core.c 		ab3100_get_register_interruptible(ab3100, reg, &value);
ab3100            483 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100;
ab3100            492 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100 = priv->ab3100;
ab3100            534 drivers/mfd/ab3100-core.c 		ab3100_get_register_interruptible(ab3100, user_reg, &regvalue);
ab3100            536 drivers/mfd/ab3100-core.c 		dev_info(ab3100->dev,
ab3100            561 drivers/mfd/ab3100-core.c 		ab3100_set_register_interruptible(ab3100, user_reg, user_value);
ab3100            562 drivers/mfd/ab3100-core.c 		ab3100_get_register_interruptible(ab3100, user_reg, &regvalue);
ab3100            564 drivers/mfd/ab3100-core.c 		dev_info(ab3100->dev,
ab3100            581 drivers/mfd/ab3100-core.c static void ab3100_setup_debugfs(struct ab3100 *ab3100)
ab3100            587 drivers/mfd/ab3100-core.c 	debugfs_create_file("registers", S_IRUGO, ab3100_dir, ab3100,
ab3100            590 drivers/mfd/ab3100-core.c 	ab3100_get_priv.ab3100 = ab3100;
ab3100            595 drivers/mfd/ab3100-core.c 	ab3100_set_priv.ab3100 = ab3100;
ab3100            601 drivers/mfd/ab3100-core.c static inline void ab3100_setup_debugfs(struct ab3100 *ab3100)
ab3100            663 drivers/mfd/ab3100-core.c static int ab3100_setup(struct ab3100 *ab3100)
ab3100            669 drivers/mfd/ab3100-core.c 		err = ab3100_set_register_interruptible(ab3100,
ab3100            681 drivers/mfd/ab3100-core.c 	if (ab3100->chip_id == 0xc4) {
ab3100            682 drivers/mfd/ab3100-core.c 		dev_warn(ab3100->dev,
ab3100            684 drivers/mfd/ab3100-core.c 		err = ab3100_set_test_register_interruptible(ab3100,
ab3100            815 drivers/mfd/ab3100-core.c 	struct ab3100 *ab3100;
ab3100            821 drivers/mfd/ab3100-core.c 	ab3100 = devm_kzalloc(&client->dev, sizeof(struct ab3100), GFP_KERNEL);
ab3100            822 drivers/mfd/ab3100-core.c 	if (!ab3100)
ab3100            826 drivers/mfd/ab3100-core.c 	mutex_init(&ab3100->access_mutex);
ab3100            827 drivers/mfd/ab3100-core.c 	BLOCKING_INIT_NOTIFIER_HEAD(&ab3100->event_subscribers);
ab3100            829 drivers/mfd/ab3100-core.c 	ab3100->i2c_client = client;
ab3100            830 drivers/mfd/ab3100-core.c 	ab3100->dev = &ab3100->i2c_client->dev;
ab3100            832 drivers/mfd/ab3100-core.c 	i2c_set_clientdata(client, ab3100);
ab3100            835 drivers/mfd/ab3100-core.c 	err = ab3100_get_register_interruptible(ab3100, AB3100_CID,
ab3100            836 drivers/mfd/ab3100-core.c 						&ab3100->chip_id);
ab3100            844 drivers/mfd/ab3100-core.c 		if (ids[i].id == ab3100->chip_id) {
ab3100            853 drivers/mfd/ab3100-core.c 	snprintf(&ab3100->chip_name[0],
ab3100            854 drivers/mfd/ab3100-core.c 		 sizeof(ab3100->chip_name) - 1, "AB3100 %s", ids[i].name);
ab3100            858 drivers/mfd/ab3100-core.c 			ab3100->chip_id);
ab3100            865 drivers/mfd/ab3100-core.c 		 &ab3100->chip_name[0]);
ab3100            868 drivers/mfd/ab3100-core.c 	ab3100->testreg_client = i2c_new_dummy_device(client->adapter,
ab3100            870 drivers/mfd/ab3100-core.c 	if (IS_ERR(ab3100->testreg_client)) {
ab3100            871 drivers/mfd/ab3100-core.c 		err = PTR_ERR(ab3100->testreg_client);
ab3100            875 drivers/mfd/ab3100-core.c 	err = ab3100_setup(ab3100);
ab3100            881 drivers/mfd/ab3100-core.c 					IRQF_ONESHOT, "ab3100-core", ab3100);
ab3100            898 drivers/mfd/ab3100-core.c 	ab3100_setup_debugfs(ab3100);
ab3100            905 drivers/mfd/ab3100-core.c 	i2c_unregister_device(ab3100->testreg_client);
ab3100            123 include/linux/mfd/ab3100.h int ab3100_event_register(struct ab3100 *ab3100,
ab3100            125 include/linux/mfd/ab3100.h int ab3100_event_unregister(struct ab3100 *ab3100,