1/* i2c-core.c - a device driver for the iic-bus interface		     */
2/* ------------------------------------------------------------------------- */
3/*   Copyright (C) 1995-99 Simon G. Vogl
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 2 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.		     */
18/* ------------------------------------------------------------------------- */
19
20/* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi>.
21   All SMBus-related things are written by Frodo Looijaard <frodol@dds.nl>
22   SMBus 2.0 support by Mark Studebaker <mdsxyz123@yahoo.com> and
23   Jean Delvare <khali@linux-fr.org>
24   Mux support by Rodolfo Giometti <giometti@enneenne.com> and
25   Michael Lawnick <michael.lawnick.ext@nsn.com> */
26
27#include <linux/module.h>
28#include <linux/kernel.h>
29#include <linux/errno.h>
30#include <linux/slab.h>
31#include <linux/i2c.h>
32#include <linux/init.h>
33#include <linux/idr.h>
34#include <linux/mutex.h>
35#include <linux/of_device.h>
36#include <linux/completion.h>
37#include <linux/hardirq.h>
38#include <linux/irqflags.h>
39#include <linux/rwsem.h>
40#include <linux/pm_runtime.h>
41#include <asm/uaccess.h>
42
43#include "i2c-core.h"
44
45
46/* core_lock protects i2c_adapter_idr, and guarantees
47   that device detection, deletion of detected devices, and attach_adapter
48   and detach_adapter calls are serialized */
49static DEFINE_MUTEX(core_lock);
50static DEFINE_IDR(i2c_adapter_idr);
51
52static struct device_type i2c_client_type;
53static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver);
54
55/* ------------------------------------------------------------------------- */
56
57static const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id,
58						const struct i2c_client *client)
59{
60	while (id->name[0]) {
61		if (strcmp(client->name, id->name) == 0)
62			return id;
63		id++;
64	}
65	return NULL;
66}
67
68static int i2c_device_match(struct device *dev, struct device_driver *drv)
69{
70	struct i2c_client	*client = i2c_verify_client(dev);
71	struct i2c_driver	*driver;
72
73	if (!client)
74		return 0;
75
76	/* Attempt an OF style match */
77	if (of_driver_match_device(dev, drv))
78		return 1;
79
80	driver = to_i2c_driver(drv);
81	/* match on an id table if there is one */
82	if (driver->id_table)
83		return i2c_match_id(driver->id_table, client) != NULL;
84
85	return 0;
86}
87
88#ifdef	CONFIG_HOTPLUG
89
90/* uevent helps with hotplug: modprobe -q $(MODALIAS) */
91static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env)
92{
93	struct i2c_client	*client = to_i2c_client(dev);
94
95	if (add_uevent_var(env, "MODALIAS=%s%s",
96			   I2C_MODULE_PREFIX, client->name))
97		return -ENOMEM;
98	dev_dbg(dev, "uevent\n");
99	return 0;
100}
101
102#else
103#define i2c_device_uevent	NULL
104#endif	/* CONFIG_HOTPLUG */
105
106static int i2c_device_probe(struct device *dev)
107{
108	struct i2c_client	*client = i2c_verify_client(dev);
109	struct i2c_driver	*driver;
110	int status;
111
112	if (!client)
113		return 0;
114
115	driver = to_i2c_driver(dev->driver);
116	if (!driver->probe || !driver->id_table)
117		return -ENODEV;
118	client->driver = driver;
119	if (!device_can_wakeup(&client->dev))
120		device_init_wakeup(&client->dev,
121					client->flags & I2C_CLIENT_WAKE);
122	dev_dbg(dev, "probe\n");
123
124	status = driver->probe(client, i2c_match_id(driver->id_table, client));
125	if (status) {
126		client->driver = NULL;
127		i2c_set_clientdata(client, NULL);
128	}
129	return status;
130}
131
132static int i2c_device_remove(struct device *dev)
133{
134	struct i2c_client	*client = i2c_verify_client(dev);
135	struct i2c_driver	*driver;
136	int			status;
137
138	if (!client || !dev->driver)
139		return 0;
140
141	driver = to_i2c_driver(dev->driver);
142	if (driver->remove) {
143		dev_dbg(dev, "remove\n");
144		status = driver->remove(client);
145	} else {
146		dev->driver = NULL;
147		status = 0;
148	}
149	if (status == 0) {
150		client->driver = NULL;
151		i2c_set_clientdata(client, NULL);
152	}
153	return status;
154}
155
156static void i2c_device_shutdown(struct device *dev)
157{
158	struct i2c_client *client = i2c_verify_client(dev);
159	struct i2c_driver *driver;
160
161	if (!client || !dev->driver)
162		return;
163	driver = to_i2c_driver(dev->driver);
164	if (driver->shutdown)
165		driver->shutdown(client);
166}
167
168#ifdef CONFIG_PM_SLEEP
169static int i2c_legacy_suspend(struct device *dev, pm_message_t mesg)
170{
171	struct i2c_client *client = i2c_verify_client(dev);
172	struct i2c_driver *driver;
173
174	if (!client || !dev->driver)
175		return 0;
176	driver = to_i2c_driver(dev->driver);
177	if (!driver->suspend)
178		return 0;
179	return driver->suspend(client, mesg);
180}
181
182static int i2c_legacy_resume(struct device *dev)
183{
184	struct i2c_client *client = i2c_verify_client(dev);
185	struct i2c_driver *driver;
186
187	if (!client || !dev->driver)
188		return 0;
189	driver = to_i2c_driver(dev->driver);
190	if (!driver->resume)
191		return 0;
192	return driver->resume(client);
193}
194
195static int i2c_device_pm_suspend(struct device *dev)
196{
197	const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
198
199	if (pm)
200		return pm_generic_suspend(dev);
201	else
202		return i2c_legacy_suspend(dev, PMSG_SUSPEND);
203}
204
205static int i2c_device_pm_resume(struct device *dev)
206{
207	const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
208
209	if (pm)
210		return pm_generic_resume(dev);
211	else
212		return i2c_legacy_resume(dev);
213}
214
215static int i2c_device_pm_freeze(struct device *dev)
216{
217	const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
218
219	if (pm)
220		return pm_generic_freeze(dev);
221	else
222		return i2c_legacy_suspend(dev, PMSG_FREEZE);
223}
224
225static int i2c_device_pm_thaw(struct device *dev)
226{
227	const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
228
229	if (pm)
230		return pm_generic_thaw(dev);
231	else
232		return i2c_legacy_resume(dev);
233}
234
235static int i2c_device_pm_poweroff(struct device *dev)
236{
237	const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
238
239	if (pm)
240		return pm_generic_poweroff(dev);
241	else
242		return i2c_legacy_suspend(dev, PMSG_HIBERNATE);
243}
244
245static int i2c_device_pm_restore(struct device *dev)
246{
247	const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
248
249	if (pm)
250		return pm_generic_restore(dev);
251	else
252		return i2c_legacy_resume(dev);
253}
254#else /* !CONFIG_PM_SLEEP */
255#define i2c_device_pm_suspend	NULL
256#define i2c_device_pm_resume	NULL
257#define i2c_device_pm_freeze	NULL
258#define i2c_device_pm_thaw	NULL
259#define i2c_device_pm_poweroff	NULL
260#define i2c_device_pm_restore	NULL
261#endif /* !CONFIG_PM_SLEEP */
262
263static void i2c_client_dev_release(struct device *dev)
264{
265	kfree(to_i2c_client(dev));
266}
267
268static ssize_t
269show_name(struct device *dev, struct device_attribute *attr, char *buf)
270{
271	return sprintf(buf, "%s\n", dev->type == &i2c_client_type ?
272		       to_i2c_client(dev)->name : to_i2c_adapter(dev)->name);
273}
274
275static ssize_t
276show_modalias(struct device *dev, struct device_attribute *attr, char *buf)
277{
278	struct i2c_client *client = to_i2c_client(dev);
279	return sprintf(buf, "%s%s\n", I2C_MODULE_PREFIX, client->name);
280}
281
282static DEVICE_ATTR(name, S_IRUGO, show_name, NULL);
283static DEVICE_ATTR(modalias, S_IRUGO, show_modalias, NULL);
284
285static struct attribute *i2c_dev_attrs[] = {
286	&dev_attr_name.attr,
287	/* modalias helps coldplug:  modprobe $(cat .../modalias) */
288	&dev_attr_modalias.attr,
289	NULL
290};
291
292static struct attribute_group i2c_dev_attr_group = {
293	.attrs		= i2c_dev_attrs,
294};
295
296static const struct attribute_group *i2c_dev_attr_groups[] = {
297	&i2c_dev_attr_group,
298	NULL
299};
300
301static const struct dev_pm_ops i2c_device_pm_ops = {
302	.suspend = i2c_device_pm_suspend,
303	.resume = i2c_device_pm_resume,
304	.freeze = i2c_device_pm_freeze,
305	.thaw = i2c_device_pm_thaw,
306	.poweroff = i2c_device_pm_poweroff,
307	.restore = i2c_device_pm_restore,
308	SET_RUNTIME_PM_OPS(
309		pm_generic_runtime_suspend,
310		pm_generic_runtime_resume,
311		pm_generic_runtime_idle
312	)
313};
314
315struct bus_type i2c_bus_type = {
316	.name		= "i2c",
317	.match		= i2c_device_match,
318	.probe		= i2c_device_probe,
319	.remove		= i2c_device_remove,
320	.shutdown	= i2c_device_shutdown,
321	.pm		= &i2c_device_pm_ops,
322};
323EXPORT_SYMBOL_GPL(i2c_bus_type);
324
325static struct device_type i2c_client_type = {
326	.groups		= i2c_dev_attr_groups,
327	.uevent		= i2c_device_uevent,
328	.release	= i2c_client_dev_release,
329};
330
331
332/**
333 * i2c_verify_client - return parameter as i2c_client, or NULL
334 * @dev: device, probably from some driver model iterator
335 *
336 * When traversing the driver model tree, perhaps using driver model
337 * iterators like @device_for_each_child(), you can't assume very much
338 * about the nodes you find.  Use this function to avoid oopses caused
339 * by wrongly treating some non-I2C device as an i2c_client.
340 */
341struct i2c_client *i2c_verify_client(struct device *dev)
342{
343	return (dev->type == &i2c_client_type)
344			? to_i2c_client(dev)
345			: NULL;
346}
347EXPORT_SYMBOL(i2c_verify_client);
348
349
350/* This is a permissive address validity check, I2C address map constraints
351 * are purposely not enforced, except for the general call address. */
352static int i2c_check_client_addr_validity(const struct i2c_client *client)
353{
354	if (client->flags & I2C_CLIENT_TEN) {
355		/* 10-bit address, all values are valid */
356		if (client->addr > 0x3ff)
357			return -EINVAL;
358	} else {
359		/* 7-bit address, reject the general call address */
360		if (client->addr == 0x00 || client->addr > 0x7f)
361			return -EINVAL;
362	}
363	return 0;
364}
365
366/* And this is a strict address validity check, used when probing. If a
367 * device uses a reserved address, then it shouldn't be probed. 7-bit
368 * addressing is assumed, 10-bit address devices are rare and should be
369 * explicitly enumerated. */
370static int i2c_check_addr_validity(unsigned short addr)
371{
372	/*
373	 * Reserved addresses per I2C specification:
374	 *  0x00       General call address / START byte
375	 *  0x01       CBUS address
376	 *  0x02       Reserved for different bus format
377	 *  0x03       Reserved for future purposes
378	 *  0x04-0x07  Hs-mode master code
379	 *  0x78-0x7b  10-bit slave addressing
380	 *  0x7c-0x7f  Reserved for future purposes
381	 */
382	if (addr < 0x08 || addr > 0x77)
383		return -EINVAL;
384	return 0;
385}
386
387static int __i2c_check_addr_busy(struct device *dev, void *addrp)
388{
389	struct i2c_client	*client = i2c_verify_client(dev);
390	int			addr = *(int *)addrp;
391
392	if (client && client->addr == addr)
393		return -EBUSY;
394	return 0;
395}
396
397/* walk up mux tree */
398static int i2c_check_mux_parents(struct i2c_adapter *adapter, int addr)
399{
400	struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
401	int result;
402
403	result = device_for_each_child(&adapter->dev, &addr,
404					__i2c_check_addr_busy);
405
406	if (!result && parent)
407		result = i2c_check_mux_parents(parent, addr);
408
409	return result;
410}
411
412/* recurse down mux tree */
413static int i2c_check_mux_children(struct device *dev, void *addrp)
414{
415	int result;
416
417	if (dev->type == &i2c_adapter_type)
418		result = device_for_each_child(dev, addrp,
419						i2c_check_mux_children);
420	else
421		result = __i2c_check_addr_busy(dev, addrp);
422
423	return result;
424}
425
426static int i2c_check_addr_busy(struct i2c_adapter *adapter, int addr)
427{
428	struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
429	int result = 0;
430
431	if (parent)
432		result = i2c_check_mux_parents(parent, addr);
433
434	if (!result)
435		result = device_for_each_child(&adapter->dev, &addr,
436						i2c_check_mux_children);
437
438	return result;
439}
440
441/**
442 * i2c_lock_adapter - Get exclusive access to an I2C bus segment
443 * @adapter: Target I2C bus segment
444 */
445void i2c_lock_adapter(struct i2c_adapter *adapter)
446{
447	struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
448
449	if (parent)
450		i2c_lock_adapter(parent);
451	else
452		rt_mutex_lock(&adapter->bus_lock);
453}
454EXPORT_SYMBOL_GPL(i2c_lock_adapter);
455
456/**
457 * i2c_trylock_adapter - Try to get exclusive access to an I2C bus segment
458 * @adapter: Target I2C bus segment
459 */
460static int i2c_trylock_adapter(struct i2c_adapter *adapter)
461{
462	struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
463
464	if (parent)
465		return i2c_trylock_adapter(parent);
466	else
467		return rt_mutex_trylock(&adapter->bus_lock);
468}
469
470/**
471 * i2c_unlock_adapter - Release exclusive access to an I2C bus segment
472 * @adapter: Target I2C bus segment
473 */
474void i2c_unlock_adapter(struct i2c_adapter *adapter)
475{
476	struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
477
478	if (parent)
479		i2c_unlock_adapter(parent);
480	else
481		rt_mutex_unlock(&adapter->bus_lock);
482}
483EXPORT_SYMBOL_GPL(i2c_unlock_adapter);
484
485/**
486 * i2c_new_device - instantiate an i2c device
487 * @adap: the adapter managing the device
488 * @info: describes one I2C device; bus_num is ignored
489 * Context: can sleep
490 *
491 * Create an i2c device. Binding is handled through driver model
492 * probe()/remove() methods.  A driver may be bound to this device when we
493 * return from this function, or any later moment (e.g. maybe hotplugging will
494 * load the driver module).  This call is not appropriate for use by mainboard
495 * initialization logic, which usually runs during an arch_initcall() long
496 * before any i2c_adapter could exist.
497 *
498 * This returns the new i2c client, which may be saved for later use with
499 * i2c_unregister_device(); or NULL to indicate an error.
500 */
501struct i2c_client *
502i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
503{
504	struct i2c_client	*client;
505	int			status;
506
507	client = kzalloc(sizeof *client, GFP_KERNEL);
508	if (!client)
509		return NULL;
510
511	client->adapter = adap;
512
513	client->dev.platform_data = info->platform_data;
514
515	if (info->archdata)
516		client->dev.archdata = *info->archdata;
517
518	client->flags = info->flags;
519	client->addr = info->addr;
520	client->irq = info->irq;
521
522	strlcpy(client->name, info->type, sizeof(client->name));
523
524	/* Check for address validity */
525	status = i2c_check_client_addr_validity(client);
526	if (status) {
527		dev_err(&adap->dev, "Invalid %d-bit I2C address 0x%02hx\n",
528			client->flags & I2C_CLIENT_TEN ? 10 : 7, client->addr);
529		goto out_err_silent;
530	}
531
532	/* Check for address business */
533	status = i2c_check_addr_busy(adap, client->addr);
534	if (status)
535		goto out_err;
536
537	client->dev.parent = &client->adapter->dev;
538	client->dev.bus = &i2c_bus_type;
539	client->dev.type = &i2c_client_type;
540	client->dev.of_node = info->of_node;
541
542	/* For 10-bit clients, add an arbitrary offset to avoid collisions */
543	dev_set_name(&client->dev, "%d-%04x", i2c_adapter_id(adap),
544		     client->addr | ((client->flags & I2C_CLIENT_TEN)
545				     ? 0xa000 : 0));
546	status = device_register(&client->dev);
547	if (status)
548		goto out_err;
549
550	dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n",
551		client->name, dev_name(&client->dev));
552
553	return client;
554
555out_err:
556	dev_err(&adap->dev, "Failed to register i2c client %s at 0x%02x "
557		"(%d)\n", client->name, client->addr, status);
558out_err_silent:
559	kfree(client);
560	return NULL;
561}
562EXPORT_SYMBOL_GPL(i2c_new_device);
563
564
565/**
566 * i2c_unregister_device - reverse effect of i2c_new_device()
567 * @client: value returned from i2c_new_device()
568 * Context: can sleep
569 */
570void i2c_unregister_device(struct i2c_client *client)
571{
572	device_unregister(&client->dev);
573}
574EXPORT_SYMBOL_GPL(i2c_unregister_device);
575
576
577static const struct i2c_device_id dummy_id[] = {
578	{ "dummy", 0 },
579	{ },
580};
581
582static int dummy_probe(struct i2c_client *client,
583		       const struct i2c_device_id *id)
584{
585	return 0;
586}
587
588static int dummy_remove(struct i2c_client *client)
589{
590	return 0;
591}
592
593static struct i2c_driver dummy_driver = {
594	.driver.name	= "dummy",
595	.probe		= dummy_probe,
596	.remove		= dummy_remove,
597	.id_table	= dummy_id,
598};
599
600/**
601 * i2c_new_dummy - return a new i2c device bound to a dummy driver
602 * @adapter: the adapter managing the device
603 * @address: seven bit address to be used
604 * Context: can sleep
605 *
606 * This returns an I2C client bound to the "dummy" driver, intended for use
607 * with devices that consume multiple addresses.  Examples of such chips
608 * include various EEPROMS (like 24c04 and 24c08 models).
609 *
610 * These dummy devices have two main uses.  First, most I2C and SMBus calls
611 * except i2c_transfer() need a client handle; the dummy will be that handle.
612 * And second, this prevents the specified address from being bound to a
613 * different driver.
614 *
615 * This returns the new i2c client, which should be saved for later use with
616 * i2c_unregister_device(); or NULL to indicate an error.
617 */
618struct i2c_client *i2c_new_dummy(struct i2c_adapter *adapter, u16 address)
619{
620	struct i2c_board_info info = {
621		I2C_BOARD_INFO("dummy", address),
622	};
623
624	return i2c_new_device(adapter, &info);
625}
626EXPORT_SYMBOL_GPL(i2c_new_dummy);
627
628/* ------------------------------------------------------------------------- */
629
630/* I2C bus adapters -- one roots each I2C or SMBUS segment */
631
632static void i2c_adapter_dev_release(struct device *dev)
633{
634	struct i2c_adapter *adap = to_i2c_adapter(dev);
635	complete(&adap->dev_released);
636}
637
638/*
639 * Let users instantiate I2C devices through sysfs. This can be used when
640 * platform initialization code doesn't contain the proper data for
641 * whatever reason. Also useful for drivers that do device detection and
642 * detection fails, either because the device uses an unexpected address,
643 * or this is a compatible device with different ID register values.
644 *
645 * Parameter checking may look overzealous, but we really don't want
646 * the user to provide incorrect parameters.
647 */
648static ssize_t
649i2c_sysfs_new_device(struct device *dev, struct device_attribute *attr,
650		     const char *buf, size_t count)
651{
652	struct i2c_adapter *adap = to_i2c_adapter(dev);
653	struct i2c_board_info info;
654	struct i2c_client *client;
655	char *blank, end;
656	int res;
657
658	memset(&info, 0, sizeof(struct i2c_board_info));
659
660	blank = strchr(buf, ' ');
661	if (!blank) {
662		dev_err(dev, "%s: Missing parameters\n", "new_device");
663		return -EINVAL;
664	}
665	if (blank - buf > I2C_NAME_SIZE - 1) {
666		dev_err(dev, "%s: Invalid device name\n", "new_device");
667		return -EINVAL;
668	}
669	memcpy(info.type, buf, blank - buf);
670
671	/* Parse remaining parameters, reject extra parameters */
672	res = sscanf(++blank, "%hi%c", &info.addr, &end);
673	if (res < 1) {
674		dev_err(dev, "%s: Can't parse I2C address\n", "new_device");
675		return -EINVAL;
676	}
677	if (res > 1  && end != '\n') {
678		dev_err(dev, "%s: Extra parameters\n", "new_device");
679		return -EINVAL;
680	}
681
682	client = i2c_new_device(adap, &info);
683	if (!client)
684		return -EINVAL;
685
686	/* Keep track of the added device */
687	mutex_lock(&adap->userspace_clients_lock);
688	list_add_tail(&client->detected, &adap->userspace_clients);
689	mutex_unlock(&adap->userspace_clients_lock);
690	dev_info(dev, "%s: Instantiated device %s at 0x%02hx\n", "new_device",
691		 info.type, info.addr);
692
693	return count;
694}
695
696/*
697 * And of course let the users delete the devices they instantiated, if
698 * they got it wrong. This interface can only be used to delete devices
699 * instantiated by i2c_sysfs_new_device above. This guarantees that we
700 * don't delete devices to which some kernel code still has references.
701 *
702 * Parameter checking may look overzealous, but we really don't want
703 * the user to delete the wrong device.
704 */
705static ssize_t
706i2c_sysfs_delete_device(struct device *dev, struct device_attribute *attr,
707			const char *buf, size_t count)
708{
709	struct i2c_adapter *adap = to_i2c_adapter(dev);
710	struct i2c_client *client, *next;
711	unsigned short addr;
712	char end;
713	int res;
714
715	/* Parse parameters, reject extra parameters */
716	res = sscanf(buf, "%hi%c", &addr, &end);
717	if (res < 1) {
718		dev_err(dev, "%s: Can't parse I2C address\n", "delete_device");
719		return -EINVAL;
720	}
721	if (res > 1  && end != '\n') {
722		dev_err(dev, "%s: Extra parameters\n", "delete_device");
723		return -EINVAL;
724	}
725
726	/* Make sure the device was added through sysfs */
727	res = -ENOENT;
728	mutex_lock(&adap->userspace_clients_lock);
729	list_for_each_entry_safe(client, next, &adap->userspace_clients,
730				 detected) {
731		if (client->addr == addr) {
732			dev_info(dev, "%s: Deleting device %s at 0x%02hx\n",
733				 "delete_device", client->name, client->addr);
734
735			list_del(&client->detected);
736			i2c_unregister_device(client);
737			res = count;
738			break;
739		}
740	}
741	mutex_unlock(&adap->userspace_clients_lock);
742
743	if (res < 0)
744		dev_err(dev, "%s: Can't find device in list\n",
745			"delete_device");
746	return res;
747}
748
749static DEVICE_ATTR(new_device, S_IWUSR, NULL, i2c_sysfs_new_device);
750static DEVICE_ATTR(delete_device, S_IWUSR, NULL, i2c_sysfs_delete_device);
751
752static struct attribute *i2c_adapter_attrs[] = {
753	&dev_attr_name.attr,
754	&dev_attr_new_device.attr,
755	&dev_attr_delete_device.attr,
756	NULL
757};
758
759static struct attribute_group i2c_adapter_attr_group = {
760	.attrs		= i2c_adapter_attrs,
761};
762
763static const struct attribute_group *i2c_adapter_attr_groups[] = {
764	&i2c_adapter_attr_group,
765	NULL
766};
767
768struct device_type i2c_adapter_type = {
769	.groups		= i2c_adapter_attr_groups,
770	.release	= i2c_adapter_dev_release,
771};
772EXPORT_SYMBOL_GPL(i2c_adapter_type);
773
774#ifdef CONFIG_I2C_COMPAT
775static struct class_compat *i2c_adapter_compat_class;
776#endif
777
778static void i2c_scan_static_board_info(struct i2c_adapter *adapter)
779{
780	struct i2c_devinfo	*devinfo;
781
782	down_read(&__i2c_board_lock);
783	list_for_each_entry(devinfo, &__i2c_board_list, list) {
784		if (devinfo->busnum == adapter->nr
785				&& !i2c_new_device(adapter,
786						&devinfo->board_info))
787			dev_err(&adapter->dev,
788				"Can't create device at 0x%02x\n",
789				devinfo->board_info.addr);
790	}
791	up_read(&__i2c_board_lock);
792}
793
794static int i2c_do_add_adapter(struct i2c_driver *driver,
795			      struct i2c_adapter *adap)
796{
797	/* Detect supported devices on that bus, and instantiate them */
798	i2c_detect(adap, driver);
799
800	/* Let legacy drivers scan this bus for matching devices */
801	if (driver->attach_adapter) {
802		dev_warn(&adap->dev, "%s: attach_adapter method is deprecated\n",
803			 driver->driver.name);
804		dev_warn(&adap->dev, "Please use another way to instantiate "
805			 "your i2c_client\n");
806		/* We ignore the return code; if it fails, too bad */
807		driver->attach_adapter(adap);
808	}
809	return 0;
810}
811
812static int __process_new_adapter(struct device_driver *d, void *data)
813{
814	return i2c_do_add_adapter(to_i2c_driver(d), data);
815}
816
817static int i2c_register_adapter(struct i2c_adapter *adap)
818{
819	int res = 0;
820
821	/* Can't register until after driver model init */
822	if (unlikely(WARN_ON(!i2c_bus_type.p))) {
823		res = -EAGAIN;
824		goto out_list;
825	}
826
827	/* Sanity checks */
828	if (unlikely(adap->name[0] == '\0')) {
829		pr_err("i2c-core: Attempt to register an adapter with "
830		       "no name!\n");
831		return -EINVAL;
832	}
833	if (unlikely(!adap->algo)) {
834		pr_err("i2c-core: Attempt to register adapter '%s' with "
835		       "no algo!\n", adap->name);
836		return -EINVAL;
837	}
838
839	rt_mutex_init(&adap->bus_lock);
840	mutex_init(&adap->userspace_clients_lock);
841	INIT_LIST_HEAD(&adap->userspace_clients);
842
843	/* Set default timeout to 1 second if not already set */
844	if (adap->timeout == 0)
845		adap->timeout = HZ;
846
847	dev_set_name(&adap->dev, "i2c-%d", adap->nr);
848	adap->dev.bus = &i2c_bus_type;
849	adap->dev.type = &i2c_adapter_type;
850	res = device_register(&adap->dev);
851	if (res)
852		goto out_list;
853
854	dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
855
856#ifdef CONFIG_I2C_COMPAT
857	res = class_compat_create_link(i2c_adapter_compat_class, &adap->dev,
858				       adap->dev.parent);
859	if (res)
860		dev_warn(&adap->dev,
861			 "Failed to create compatibility class link\n");
862#endif
863
864	/* create pre-declared device nodes */
865	if (adap->nr < __i2c_first_dynamic_bus_num)
866		i2c_scan_static_board_info(adap);
867
868	/* Notify drivers */
869	mutex_lock(&core_lock);
870	bus_for_each_drv(&i2c_bus_type, NULL, adap, __process_new_adapter);
871	mutex_unlock(&core_lock);
872
873	return 0;
874
875out_list:
876	mutex_lock(&core_lock);
877	idr_remove(&i2c_adapter_idr, adap->nr);
878	mutex_unlock(&core_lock);
879	return res;
880}
881
882/**
883 * i2c_add_adapter - declare i2c adapter, use dynamic bus number
884 * @adapter: the adapter to add
885 * Context: can sleep
886 *
887 * This routine is used to declare an I2C adapter when its bus number
888 * doesn't matter.  Examples: for I2C adapters dynamically added by
889 * USB links or PCI plugin cards.
890 *
891 * When this returns zero, a new bus number was allocated and stored
892 * in adap->nr, and the specified adapter became available for clients.
893 * Otherwise, a negative errno value is returned.
894 */
895int i2c_add_adapter(struct i2c_adapter *adapter)
896{
897	int	id, res = 0;
898
899retry:
900	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
901		return -ENOMEM;
902
903	mutex_lock(&core_lock);
904	/* "above" here means "above or equal to", sigh */
905	res = idr_get_new_above(&i2c_adapter_idr, adapter,
906				__i2c_first_dynamic_bus_num, &id);
907	mutex_unlock(&core_lock);
908
909	if (res < 0) {
910		if (res == -EAGAIN)
911			goto retry;
912		return res;
913	}
914
915	adapter->nr = id;
916	return i2c_register_adapter(adapter);
917}
918EXPORT_SYMBOL(i2c_add_adapter);
919
920/**
921 * i2c_add_numbered_adapter - declare i2c adapter, use static bus number
922 * @adap: the adapter to register (with adap->nr initialized)
923 * Context: can sleep
924 *
925 * This routine is used to declare an I2C adapter when its bus number
926 * matters.  For example, use it for I2C adapters from system-on-chip CPUs,
927 * or otherwise built in to the system's mainboard, and where i2c_board_info
928 * is used to properly configure I2C devices.
929 *
930 * If the requested bus number is set to -1, then this function will behave
931 * identically to i2c_add_adapter, and will dynamically assign a bus number.
932 *
933 * If no devices have pre-been declared for this bus, then be sure to
934 * register the adapter before any dynamically allocated ones.  Otherwise
935 * the required bus ID may not be available.
936 *
937 * When this returns zero, the specified adapter became available for
938 * clients using the bus number provided in adap->nr.  Also, the table
939 * of I2C devices pre-declared using i2c_register_board_info() is scanned,
940 * and the appropriate driver model device nodes are created.  Otherwise, a
941 * negative errno value is returned.
942 */
943int i2c_add_numbered_adapter(struct i2c_adapter *adap)
944{
945	int	id;
946	int	status;
947
948	if (adap->nr == -1) /* -1 means dynamically assign bus id */
949		return i2c_add_adapter(adap);
950	if (adap->nr & ~MAX_ID_MASK)
951		return -EINVAL;
952
953retry:
954	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
955		return -ENOMEM;
956
957	mutex_lock(&core_lock);
958	/* "above" here means "above or equal to", sigh;
959	 * we need the "equal to" result to force the result
960	 */
961	status = idr_get_new_above(&i2c_adapter_idr, adap, adap->nr, &id);
962	if (status == 0 && id != adap->nr) {
963		status = -EBUSY;
964		idr_remove(&i2c_adapter_idr, id);
965	}
966	mutex_unlock(&core_lock);
967	if (status == -EAGAIN)
968		goto retry;
969
970	if (status == 0)
971		status = i2c_register_adapter(adap);
972	return status;
973}
974EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
975
976static int i2c_do_del_adapter(struct i2c_driver *driver,
977			      struct i2c_adapter *adapter)
978{
979	struct i2c_client *client, *_n;
980	int res;
981
982	/* Remove the devices we created ourselves as the result of hardware
983	 * probing (using a driver's detect method) */
984	list_for_each_entry_safe(client, _n, &driver->clients, detected) {
985		if (client->adapter == adapter) {
986			dev_dbg(&adapter->dev, "Removing %s at 0x%x\n",
987				client->name, client->addr);
988			list_del(&client->detected);
989			i2c_unregister_device(client);
990		}
991	}
992
993	if (!driver->detach_adapter)
994		return 0;
995	dev_warn(&adapter->dev, "%s: detach_adapter method is deprecated\n",
996		 driver->driver.name);
997	res = driver->detach_adapter(adapter);
998	if (res)
999		dev_err(&adapter->dev, "detach_adapter failed (%d) "
1000			"for driver [%s]\n", res, driver->driver.name);
1001	return res;
1002}
1003
1004static int __unregister_client(struct device *dev, void *dummy)
1005{
1006	struct i2c_client *client = i2c_verify_client(dev);
1007	if (client && strcmp(client->name, "dummy"))
1008		i2c_unregister_device(client);
1009	return 0;
1010}
1011
1012static int __unregister_dummy(struct device *dev, void *dummy)
1013{
1014	struct i2c_client *client = i2c_verify_client(dev);
1015	if (client)
1016		i2c_unregister_device(client);
1017	return 0;
1018}
1019
1020static int __process_removed_adapter(struct device_driver *d, void *data)
1021{
1022	return i2c_do_del_adapter(to_i2c_driver(d), data);
1023}
1024
1025/**
1026 * i2c_del_adapter - unregister I2C adapter
1027 * @adap: the adapter being unregistered
1028 * Context: can sleep
1029 *
1030 * This unregisters an I2C adapter which was previously registered
1031 * by @i2c_add_adapter or @i2c_add_numbered_adapter.
1032 */
1033int i2c_del_adapter(struct i2c_adapter *adap)
1034{
1035	int res = 0;
1036	struct i2c_adapter *found;
1037	struct i2c_client *client, *next;
1038
1039	/* First make sure that this adapter was ever added */
1040	mutex_lock(&core_lock);
1041	found = idr_find(&i2c_adapter_idr, adap->nr);
1042	mutex_unlock(&core_lock);
1043	if (found != adap) {
1044		pr_debug("i2c-core: attempting to delete unregistered "
1045			 "adapter [%s]\n", adap->name);
1046		return -EINVAL;
1047	}
1048
1049	/* Tell drivers about this removal */
1050	mutex_lock(&core_lock);
1051	res = bus_for_each_drv(&i2c_bus_type, NULL, adap,
1052			       __process_removed_adapter);
1053	mutex_unlock(&core_lock);
1054	if (res)
1055		return res;
1056
1057	/* Remove devices instantiated from sysfs */
1058	mutex_lock(&adap->userspace_clients_lock);
1059	list_for_each_entry_safe(client, next, &adap->userspace_clients,
1060				 detected) {
1061		dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name,
1062			client->addr);
1063		list_del(&client->detected);
1064		i2c_unregister_device(client);
1065	}
1066	mutex_unlock(&adap->userspace_clients_lock);
1067
1068	/* Detach any active clients. This can't fail, thus we do not
1069	 * check the returned value. This is a two-pass process, because
1070	 * we can't remove the dummy devices during the first pass: they
1071	 * could have been instantiated by real devices wishing to clean
1072	 * them up properly, so we give them a chance to do that first. */
1073	res = device_for_each_child(&adap->dev, NULL, __unregister_client);
1074	res = device_for_each_child(&adap->dev, NULL, __unregister_dummy);
1075
1076#ifdef CONFIG_I2C_COMPAT
1077	class_compat_remove_link(i2c_adapter_compat_class, &adap->dev,
1078				 adap->dev.parent);
1079#endif
1080
1081	/* device name is gone after device_unregister */
1082	dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
1083
1084	/* clean up the sysfs representation */
1085	init_completion(&adap->dev_released);
1086	device_unregister(&adap->dev);
1087
1088	/* wait for sysfs to drop all references */
1089	wait_for_completion(&adap->dev_released);
1090
1091	/* free bus id */
1092	mutex_lock(&core_lock);
1093	idr_remove(&i2c_adapter_idr, adap->nr);
1094	mutex_unlock(&core_lock);
1095
1096	/* Clear the device structure in case this adapter is ever going to be
1097	   added again */
1098	memset(&adap->dev, 0, sizeof(adap->dev));
1099
1100	return 0;
1101}
1102EXPORT_SYMBOL(i2c_del_adapter);
1103
1104
1105/* ------------------------------------------------------------------------- */
1106
1107int i2c_for_each_dev(void *data, int (*fn)(struct device *, void *))
1108{
1109	int res;
1110
1111	mutex_lock(&core_lock);
1112	res = bus_for_each_dev(&i2c_bus_type, NULL, data, fn);
1113	mutex_unlock(&core_lock);
1114
1115	return res;
1116}
1117EXPORT_SYMBOL_GPL(i2c_for_each_dev);
1118
1119static int __process_new_driver(struct device *dev, void *data)
1120{
1121	if (dev->type != &i2c_adapter_type)
1122		return 0;
1123	return i2c_do_add_adapter(data, to_i2c_adapter(dev));
1124}
1125
1126/*
1127 * An i2c_driver is used with one or more i2c_client (device) nodes to access
1128 * i2c slave chips, on a bus instance associated with some i2c_adapter.
1129 */
1130
1131int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
1132{
1133	int res;
1134
1135	/* Can't register until after driver model init */
1136	if (unlikely(WARN_ON(!i2c_bus_type.p)))
1137		return -EAGAIN;
1138
1139	/* add the driver to the list of i2c drivers in the driver core */
1140	driver->driver.owner = owner;
1141	driver->driver.bus = &i2c_bus_type;
1142
1143	/* When registration returns, the driver core
1144	 * will have called probe() for all matching-but-unbound devices.
1145	 */
1146	res = driver_register(&driver->driver);
1147	if (res)
1148		return res;
1149
1150	/* Drivers should switch to dev_pm_ops instead. */
1151	if (driver->suspend)
1152		pr_warn("i2c-core: driver [%s] using legacy suspend method\n",
1153			driver->driver.name);
1154	if (driver->resume)
1155		pr_warn("i2c-core: driver [%s] using legacy resume method\n",
1156			driver->driver.name);
1157
1158	pr_debug("i2c-core: driver [%s] registered\n", driver->driver.name);
1159
1160	INIT_LIST_HEAD(&driver->clients);
1161	/* Walk the adapters that are already present */
1162	i2c_for_each_dev(driver, __process_new_driver);
1163
1164	return 0;
1165}
1166EXPORT_SYMBOL(i2c_register_driver);
1167
1168static int __process_removed_driver(struct device *dev, void *data)
1169{
1170	if (dev->type != &i2c_adapter_type)
1171		return 0;
1172	return i2c_do_del_adapter(data, to_i2c_adapter(dev));
1173}
1174
1175/**
1176 * i2c_del_driver - unregister I2C driver
1177 * @driver: the driver being unregistered
1178 * Context: can sleep
1179 */
1180void i2c_del_driver(struct i2c_driver *driver)
1181{
1182	i2c_for_each_dev(driver, __process_removed_driver);
1183
1184	driver_unregister(&driver->driver);
1185	pr_debug("i2c-core: driver [%s] unregistered\n", driver->driver.name);
1186}
1187EXPORT_SYMBOL(i2c_del_driver);
1188
1189/* ------------------------------------------------------------------------- */
1190
1191/**
1192 * i2c_use_client - increments the reference count of the i2c client structure
1193 * @client: the client being referenced
1194 *
1195 * Each live reference to a client should be refcounted. The driver model does
1196 * that automatically as part of driver binding, so that most drivers don't
1197 * need to do this explicitly: they hold a reference until they're unbound
1198 * from the device.
1199 *
1200 * A pointer to the client with the incremented reference counter is returned.
1201 */
1202struct i2c_client *i2c_use_client(struct i2c_client *client)
1203{
1204	if (client && get_device(&client->dev))
1205		return client;
1206	return NULL;
1207}
1208EXPORT_SYMBOL(i2c_use_client);
1209
1210/**
1211 * i2c_release_client - release a use of the i2c client structure
1212 * @client: the client being no longer referenced
1213 *
1214 * Must be called when a user of a client is finished with it.
1215 */
1216void i2c_release_client(struct i2c_client *client)
1217{
1218	if (client)
1219		put_device(&client->dev);
1220}
1221EXPORT_SYMBOL(i2c_release_client);
1222
1223struct i2c_cmd_arg {
1224	unsigned	cmd;
1225	void		*arg;
1226};
1227
1228static int i2c_cmd(struct device *dev, void *_arg)
1229{
1230	struct i2c_client	*client = i2c_verify_client(dev);
1231	struct i2c_cmd_arg	*arg = _arg;
1232
1233	if (client && client->driver && client->driver->command)
1234		client->driver->command(client, arg->cmd, arg->arg);
1235	return 0;
1236}
1237
1238void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg)
1239{
1240	struct i2c_cmd_arg	cmd_arg;
1241
1242	cmd_arg.cmd = cmd;
1243	cmd_arg.arg = arg;
1244	device_for_each_child(&adap->dev, &cmd_arg, i2c_cmd);
1245}
1246EXPORT_SYMBOL(i2c_clients_command);
1247
1248static int __init i2c_init(void)
1249{
1250	int retval;
1251
1252	retval = bus_register(&i2c_bus_type);
1253	if (retval)
1254		return retval;
1255#ifdef CONFIG_I2C_COMPAT
1256	i2c_adapter_compat_class = class_compat_register("i2c-adapter");
1257	if (!i2c_adapter_compat_class) {
1258		retval = -ENOMEM;
1259		goto bus_err;
1260	}
1261#endif
1262	retval = i2c_add_driver(&dummy_driver);
1263	if (retval)
1264		goto class_err;
1265	return 0;
1266
1267class_err:
1268#ifdef CONFIG_I2C_COMPAT
1269	class_compat_unregister(i2c_adapter_compat_class);
1270bus_err:
1271#endif
1272	bus_unregister(&i2c_bus_type);
1273	return retval;
1274}
1275
1276static void __exit i2c_exit(void)
1277{
1278	i2c_del_driver(&dummy_driver);
1279#ifdef CONFIG_I2C_COMPAT
1280	class_compat_unregister(i2c_adapter_compat_class);
1281#endif
1282	bus_unregister(&i2c_bus_type);
1283}
1284
1285/* We must initialize early, because some subsystems register i2c drivers
1286 * in subsys_initcall() code, but are linked (and initialized) before i2c.
1287 */
1288postcore_initcall(i2c_init);
1289module_exit(i2c_exit);
1290
1291/* ----------------------------------------------------
1292 * the functional interface to the i2c busses.
1293 * ----------------------------------------------------
1294 */
1295
1296/**
1297 * i2c_transfer - execute a single or combined I2C message
1298 * @adap: Handle to I2C bus
1299 * @msgs: One or more messages to execute before STOP is issued to
1300 *	terminate the operation; each message begins with a START.
1301 * @num: Number of messages to be executed.
1302 *
1303 * Returns negative errno, else the number of messages executed.
1304 *
1305 * Note that there is no requirement that each message be sent to
1306 * the same slave address, although that is the most common model.
1307 */
1308int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
1309{
1310	unsigned long orig_jiffies;
1311	int ret, try;
1312
1313	/* REVISIT the fault reporting model here is weak:
1314	 *
1315	 *  - When we get an error after receiving N bytes from a slave,
1316	 *    there is no way to report "N".
1317	 *
1318	 *  - When we get a NAK after transmitting N bytes to a slave,
1319	 *    there is no way to report "N" ... or to let the master
1320	 *    continue executing the rest of this combined message, if
1321	 *    that's the appropriate response.
1322	 *
1323	 *  - When for example "num" is two and we successfully complete
1324	 *    the first message but get an error part way through the
1325	 *    second, it's unclear whether that should be reported as
1326	 *    one (discarding status on the second message) or errno
1327	 *    (discarding status on the first one).
1328	 */
1329
1330	if (adap->algo->master_xfer) {
1331#ifdef DEBUG
1332		for (ret = 0; ret < num; ret++) {
1333			dev_dbg(&adap->dev, "master_xfer[%d] %c, addr=0x%02x, "
1334				"len=%d%s\n", ret, (msgs[ret].flags & I2C_M_RD)
1335				? 'R' : 'W', msgs[ret].addr, msgs[ret].len,
1336				(msgs[ret].flags & I2C_M_RECV_LEN) ? "+" : "");
1337		}
1338#endif
1339
1340		if (in_atomic() || irqs_disabled()) {
1341			ret = i2c_trylock_adapter(adap);
1342			if (!ret)
1343				/* I2C activity is ongoing. */
1344				return -EAGAIN;
1345		} else {
1346			i2c_lock_adapter(adap);
1347		}
1348
1349		/* Retry automatically on arbitration loss */
1350		orig_jiffies = jiffies;
1351		for (ret = 0, try = 0; try <= adap->retries; try++) {
1352			ret = adap->algo->master_xfer(adap, msgs, num);
1353			if (ret != -EAGAIN)
1354				break;
1355			if (time_after(jiffies, orig_jiffies + adap->timeout))
1356				break;
1357		}
1358		i2c_unlock_adapter(adap);
1359
1360		return ret;
1361	} else {
1362		dev_dbg(&adap->dev, "I2C level transfers not supported\n");
1363		return -EOPNOTSUPP;
1364	}
1365}
1366EXPORT_SYMBOL(i2c_transfer);
1367
1368/**
1369 * i2c_master_send - issue a single I2C message in master transmit mode
1370 * @client: Handle to slave device
1371 * @buf: Data that will be written to the slave
1372 * @count: How many bytes to write, must be less than 64k since msg.len is u16
1373 *
1374 * Returns negative errno, or else the number of bytes written.
1375 */
1376int i2c_master_send(const struct i2c_client *client, const char *buf, int count)
1377{
1378	int ret;
1379	struct i2c_adapter *adap = client->adapter;
1380	struct i2c_msg msg;
1381
1382	msg.addr = client->addr;
1383	msg.flags = client->flags & I2C_M_TEN;
1384	msg.len = count;
1385	msg.buf = (char *)buf;
1386
1387	ret = i2c_transfer(adap, &msg, 1);
1388
1389	/* If everything went ok (i.e. 1 msg transmitted), return #bytes
1390	   transmitted, else error code. */
1391	return (ret == 1) ? count : ret;
1392}
1393EXPORT_SYMBOL(i2c_master_send);
1394
1395/**
1396 * i2c_master_recv - issue a single I2C message in master receive mode
1397 * @client: Handle to slave device
1398 * @buf: Where to store data read from slave
1399 * @count: How many bytes to read, must be less than 64k since msg.len is u16
1400 *
1401 * Returns negative errno, or else the number of bytes read.
1402 */
1403int i2c_master_recv(const struct i2c_client *client, char *buf, int count)
1404{
1405	struct i2c_adapter *adap = client->adapter;
1406	struct i2c_msg msg;
1407	int ret;
1408
1409	msg.addr = client->addr;
1410	msg.flags = client->flags & I2C_M_TEN;
1411	msg.flags |= I2C_M_RD;
1412	msg.len = count;
1413	msg.buf = buf;
1414
1415	ret = i2c_transfer(adap, &msg, 1);
1416
1417	/* If everything went ok (i.e. 1 msg transmitted), return #bytes
1418	   transmitted, else error code. */
1419	return (ret == 1) ? count : ret;
1420}
1421EXPORT_SYMBOL(i2c_master_recv);
1422
1423/* ----------------------------------------------------
1424 * the i2c address scanning function
1425 * Will not work for 10-bit addresses!
1426 * ----------------------------------------------------
1427 */
1428
1429/*
1430 * Legacy default probe function, mostly relevant for SMBus. The default
1431 * probe method is a quick write, but it is known to corrupt the 24RF08
1432 * EEPROMs due to a state machine bug, and could also irreversibly
1433 * write-protect some EEPROMs, so for address ranges 0x30-0x37 and 0x50-0x5f,
1434 * we use a short byte read instead. Also, some bus drivers don't implement
1435 * quick write, so we fallback to a byte read in that case too.
1436 * On x86, there is another special case for FSC hardware monitoring chips,
1437 * which want regular byte reads (address 0x73.) Fortunately, these are the
1438 * only known chips using this I2C address on PC hardware.
1439 * Returns 1 if probe succeeded, 0 if not.
1440 */
1441static int i2c_default_probe(struct i2c_adapter *adap, unsigned short addr)
1442{
1443	int err;
1444	union i2c_smbus_data dummy;
1445
1446#ifdef CONFIG_X86
1447	if (addr == 0x73 && (adap->class & I2C_CLASS_HWMON)
1448	 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE_DATA))
1449		err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
1450				     I2C_SMBUS_BYTE_DATA, &dummy);
1451	else
1452#endif
1453	if (!((addr & ~0x07) == 0x30 || (addr & ~0x0f) == 0x50)
1454	 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_QUICK))
1455		err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_WRITE, 0,
1456				     I2C_SMBUS_QUICK, NULL);
1457	else if (i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE))
1458		err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
1459				     I2C_SMBUS_BYTE, &dummy);
1460	else {
1461		dev_warn(&adap->dev, "No suitable probing method supported\n");
1462		err = -EOPNOTSUPP;
1463	}
1464
1465	return err >= 0;
1466}
1467
1468static int i2c_detect_address(struct i2c_client *temp_client,
1469			      struct i2c_driver *driver)
1470{
1471	struct i2c_board_info info;
1472	struct i2c_adapter *adapter = temp_client->adapter;
1473	int addr = temp_client->addr;
1474	int err;
1475
1476	/* Make sure the address is valid */
1477	err = i2c_check_addr_validity(addr);
1478	if (err) {
1479		dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
1480			 addr);
1481		return err;
1482	}
1483
1484	/* Skip if already in use */
1485	if (i2c_check_addr_busy(adapter, addr))
1486		return 0;
1487
1488	/* Make sure there is something at this address */
1489	if (!i2c_default_probe(adapter, addr))
1490		return 0;
1491
1492	/* Finally call the custom detection function */
1493	memset(&info, 0, sizeof(struct i2c_board_info));
1494	info.addr = addr;
1495	err = driver->detect(temp_client, &info);
1496	if (err) {
1497		/* -ENODEV is returned if the detection fails. We catch it
1498		   here as this isn't an error. */
1499		return err == -ENODEV ? 0 : err;
1500	}
1501
1502	/* Consistency check */
1503	if (info.type[0] == '\0') {
1504		dev_err(&adapter->dev, "%s detection function provided "
1505			"no name for 0x%x\n", driver->driver.name,
1506			addr);
1507	} else {
1508		struct i2c_client *client;
1509
1510		/* Detection succeeded, instantiate the device */
1511		dev_dbg(&adapter->dev, "Creating %s at 0x%02x\n",
1512			info.type, info.addr);
1513		client = i2c_new_device(adapter, &info);
1514		if (client)
1515			list_add_tail(&client->detected, &driver->clients);
1516		else
1517			dev_err(&adapter->dev, "Failed creating %s at 0x%02x\n",
1518				info.type, info.addr);
1519	}
1520	return 0;
1521}
1522
1523static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
1524{
1525	const unsigned short *address_list;
1526	struct i2c_client *temp_client;
1527	int i, err = 0;
1528	int adap_id = i2c_adapter_id(adapter);
1529
1530	address_list = driver->address_list;
1531	if (!driver->detect || !address_list)
1532		return 0;
1533
1534	/* Stop here if the classes do not match */
1535	if (!(adapter->class & driver->class))
1536		return 0;
1537
1538	/* Set up a temporary client to help detect callback */
1539	temp_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
1540	if (!temp_client)
1541		return -ENOMEM;
1542	temp_client->adapter = adapter;
1543
1544	for (i = 0; address_list[i] != I2C_CLIENT_END; i += 1) {
1545		dev_dbg(&adapter->dev, "found normal entry for adapter %d, "
1546			"addr 0x%02x\n", adap_id, address_list[i]);
1547		temp_client->addr = address_list[i];
1548		err = i2c_detect_address(temp_client, driver);
1549		if (unlikely(err))
1550			break;
1551	}
1552
1553	kfree(temp_client);
1554	return err;
1555}
1556
1557int i2c_probe_func_quick_read(struct i2c_adapter *adap, unsigned short addr)
1558{
1559	return i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
1560			      I2C_SMBUS_QUICK, NULL) >= 0;
1561}
1562EXPORT_SYMBOL_GPL(i2c_probe_func_quick_read);
1563
1564struct i2c_client *
1565i2c_new_probed_device(struct i2c_adapter *adap,
1566		      struct i2c_board_info *info,
1567		      unsigned short const *addr_list,
1568		      int (*probe)(struct i2c_adapter *, unsigned short addr))
1569{
1570	int i;
1571
1572	if (!probe)
1573		probe = i2c_default_probe;
1574
1575	for (i = 0; addr_list[i] != I2C_CLIENT_END; i++) {
1576		/* Check address validity */
1577		if (i2c_check_addr_validity(addr_list[i]) < 0) {
1578			dev_warn(&adap->dev, "Invalid 7-bit address "
1579				 "0x%02x\n", addr_list[i]);
1580			continue;
1581		}
1582
1583		/* Check address availability */
1584		if (i2c_check_addr_busy(adap, addr_list[i])) {
1585			dev_dbg(&adap->dev, "Address 0x%02x already in "
1586				"use, not probing\n", addr_list[i]);
1587			continue;
1588		}
1589
1590		/* Test address responsiveness */
1591		if (probe(adap, addr_list[i]))
1592			break;
1593	}
1594
1595	if (addr_list[i] == I2C_CLIENT_END) {
1596		dev_dbg(&adap->dev, "Probing failed, no device found\n");
1597		return NULL;
1598	}
1599
1600	info->addr = addr_list[i];
1601	return i2c_new_device(adap, info);
1602}
1603EXPORT_SYMBOL_GPL(i2c_new_probed_device);
1604
1605struct i2c_adapter *i2c_get_adapter(int nr)
1606{
1607	struct i2c_adapter *adapter;
1608
1609	mutex_lock(&core_lock);
1610	adapter = idr_find(&i2c_adapter_idr, nr);
1611	if (adapter && !try_module_get(adapter->owner))
1612		adapter = NULL;
1613
1614	mutex_unlock(&core_lock);
1615	return adapter;
1616}
1617EXPORT_SYMBOL(i2c_get_adapter);
1618
1619void i2c_put_adapter(struct i2c_adapter *adap)
1620{
1621	module_put(adap->owner);
1622}
1623EXPORT_SYMBOL(i2c_put_adapter);
1624
1625/* The SMBus parts */
1626
1627#define POLY    (0x1070U << 3)
1628static u8 crc8(u16 data)
1629{
1630	int i;
1631
1632	for (i = 0; i < 8; i++) {
1633		if (data & 0x8000)
1634			data = data ^ POLY;
1635		data = data << 1;
1636	}
1637	return (u8)(data >> 8);
1638}
1639
1640/* Incremental CRC8 over count bytes in the array pointed to by p */
1641static u8 i2c_smbus_pec(u8 crc, u8 *p, size_t count)
1642{
1643	int i;
1644
1645	for (i = 0; i < count; i++)
1646		crc = crc8((crc ^ p[i]) << 8);
1647	return crc;
1648}
1649
1650/* Assume a 7-bit address, which is reasonable for SMBus */
1651static u8 i2c_smbus_msg_pec(u8 pec, struct i2c_msg *msg)
1652{
1653	/* The address will be sent first */
1654	u8 addr = (msg->addr << 1) | !!(msg->flags & I2C_M_RD);
1655	pec = i2c_smbus_pec(pec, &addr, 1);
1656
1657	/* The data buffer follows */
1658	return i2c_smbus_pec(pec, msg->buf, msg->len);
1659}
1660
1661/* Used for write only transactions */
1662static inline void i2c_smbus_add_pec(struct i2c_msg *msg)
1663{
1664	msg->buf[msg->len] = i2c_smbus_msg_pec(0, msg);
1665	msg->len++;
1666}
1667
1668/* Return <0 on CRC error
1669   If there was a write before this read (most cases) we need to take the
1670   partial CRC from the write part into account.
1671   Note that this function does modify the message (we need to decrease the
1672   message length to hide the CRC byte from the caller). */
1673static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg)
1674{
1675	u8 rpec = msg->buf[--msg->len];
1676	cpec = i2c_smbus_msg_pec(cpec, msg);
1677
1678	if (rpec != cpec) {
1679		pr_debug("i2c-core: Bad PEC 0x%02x vs. 0x%02x\n",
1680			rpec, cpec);
1681		return -EBADMSG;
1682	}
1683	return 0;
1684}
1685
1686/**
1687 * i2c_smbus_read_byte - SMBus "receive byte" protocol
1688 * @client: Handle to slave device
1689 *
1690 * This executes the SMBus "receive byte" protocol, returning negative errno
1691 * else the byte received from the device.
1692 */
1693s32 i2c_smbus_read_byte(const struct i2c_client *client)
1694{
1695	union i2c_smbus_data data;
1696	int status;
1697
1698	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1699				I2C_SMBUS_READ, 0,
1700				I2C_SMBUS_BYTE, &data);
1701	return (status < 0) ? status : data.byte;
1702}
1703EXPORT_SYMBOL(i2c_smbus_read_byte);
1704
1705/**
1706 * i2c_smbus_write_byte - SMBus "send byte" protocol
1707 * @client: Handle to slave device
1708 * @value: Byte to be sent
1709 *
1710 * This executes the SMBus "send byte" protocol, returning negative errno
1711 * else zero on success.
1712 */
1713s32 i2c_smbus_write_byte(const struct i2c_client *client, u8 value)
1714{
1715	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1716	                      I2C_SMBUS_WRITE, value, I2C_SMBUS_BYTE, NULL);
1717}
1718EXPORT_SYMBOL(i2c_smbus_write_byte);
1719
1720/**
1721 * i2c_smbus_read_byte_data - SMBus "read byte" protocol
1722 * @client: Handle to slave device
1723 * @command: Byte interpreted by slave
1724 *
1725 * This executes the SMBus "read byte" protocol, returning negative errno
1726 * else a data byte received from the device.
1727 */
1728s32 i2c_smbus_read_byte_data(const struct i2c_client *client, u8 command)
1729{
1730	union i2c_smbus_data data;
1731	int status;
1732
1733	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1734				I2C_SMBUS_READ, command,
1735				I2C_SMBUS_BYTE_DATA, &data);
1736	return (status < 0) ? status : data.byte;
1737}
1738EXPORT_SYMBOL(i2c_smbus_read_byte_data);
1739
1740/**
1741 * i2c_smbus_write_byte_data - SMBus "write byte" protocol
1742 * @client: Handle to slave device
1743 * @command: Byte interpreted by slave
1744 * @value: Byte being written
1745 *
1746 * This executes the SMBus "write byte" protocol, returning negative errno
1747 * else zero on success.
1748 */
1749s32 i2c_smbus_write_byte_data(const struct i2c_client *client, u8 command,
1750			      u8 value)
1751{
1752	union i2c_smbus_data data;
1753	data.byte = value;
1754	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1755			      I2C_SMBUS_WRITE, command,
1756			      I2C_SMBUS_BYTE_DATA, &data);
1757}
1758EXPORT_SYMBOL(i2c_smbus_write_byte_data);
1759
1760/**
1761 * i2c_smbus_read_word_data - SMBus "read word" protocol
1762 * @client: Handle to slave device
1763 * @command: Byte interpreted by slave
1764 *
1765 * This executes the SMBus "read word" protocol, returning negative errno
1766 * else a 16-bit unsigned "word" received from the device.
1767 */
1768s32 i2c_smbus_read_word_data(const struct i2c_client *client, u8 command)
1769{
1770	union i2c_smbus_data data;
1771	int status;
1772
1773	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1774				I2C_SMBUS_READ, command,
1775				I2C_SMBUS_WORD_DATA, &data);
1776	return (status < 0) ? status : data.word;
1777}
1778EXPORT_SYMBOL(i2c_smbus_read_word_data);
1779
1780/**
1781 * i2c_smbus_write_word_data - SMBus "write word" protocol
1782 * @client: Handle to slave device
1783 * @command: Byte interpreted by slave
1784 * @value: 16-bit "word" being written
1785 *
1786 * This executes the SMBus "write word" protocol, returning negative errno
1787 * else zero on success.
1788 */
1789s32 i2c_smbus_write_word_data(const struct i2c_client *client, u8 command,
1790			      u16 value)
1791{
1792	union i2c_smbus_data data;
1793	data.word = value;
1794	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1795			      I2C_SMBUS_WRITE, command,
1796			      I2C_SMBUS_WORD_DATA, &data);
1797}
1798EXPORT_SYMBOL(i2c_smbus_write_word_data);
1799
1800/**
1801 * i2c_smbus_process_call - SMBus "process call" protocol
1802 * @client: Handle to slave device
1803 * @command: Byte interpreted by slave
1804 * @value: 16-bit "word" being written
1805 *
1806 * This executes the SMBus "process call" protocol, returning negative errno
1807 * else a 16-bit unsigned "word" received from the device.
1808 */
1809s32 i2c_smbus_process_call(const struct i2c_client *client, u8 command,
1810			   u16 value)
1811{
1812	union i2c_smbus_data data;
1813	int status;
1814	data.word = value;
1815
1816	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1817				I2C_SMBUS_WRITE, command,
1818				I2C_SMBUS_PROC_CALL, &data);
1819	return (status < 0) ? status : data.word;
1820}
1821EXPORT_SYMBOL(i2c_smbus_process_call);
1822
1823/**
1824 * i2c_smbus_read_block_data - SMBus "block read" protocol
1825 * @client: Handle to slave device
1826 * @command: Byte interpreted by slave
1827 * @values: Byte array into which data will be read; big enough to hold
1828 *	the data returned by the slave.  SMBus allows at most 32 bytes.
1829 *
1830 * This executes the SMBus "block read" protocol, returning negative errno
1831 * else the number of data bytes in the slave's response.
1832 *
1833 * Note that using this function requires that the client's adapter support
1834 * the I2C_FUNC_SMBUS_READ_BLOCK_DATA functionality.  Not all adapter drivers
1835 * support this; its emulation through I2C messaging relies on a specific
1836 * mechanism (I2C_M_RECV_LEN) which may not be implemented.
1837 */
1838s32 i2c_smbus_read_block_data(const struct i2c_client *client, u8 command,
1839			      u8 *values)
1840{
1841	union i2c_smbus_data data;
1842	int status;
1843
1844	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1845				I2C_SMBUS_READ, command,
1846				I2C_SMBUS_BLOCK_DATA, &data);
1847	if (status)
1848		return status;
1849
1850	memcpy(values, &data.block[1], data.block[0]);
1851	return data.block[0];
1852}
1853EXPORT_SYMBOL(i2c_smbus_read_block_data);
1854
1855/**
1856 * i2c_smbus_write_block_data - SMBus "block write" protocol
1857 * @client: Handle to slave device
1858 * @command: Byte interpreted by slave
1859 * @length: Size of data block; SMBus allows at most 32 bytes
1860 * @values: Byte array which will be written.
1861 *
1862 * This executes the SMBus "block write" protocol, returning negative errno
1863 * else zero on success.
1864 */
1865s32 i2c_smbus_write_block_data(const struct i2c_client *client, u8 command,
1866			       u8 length, const u8 *values)
1867{
1868	union i2c_smbus_data data;
1869
1870	if (length > I2C_SMBUS_BLOCK_MAX)
1871		length = I2C_SMBUS_BLOCK_MAX;
1872	data.block[0] = length;
1873	memcpy(&data.block[1], values, length);
1874	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1875			      I2C_SMBUS_WRITE, command,
1876			      I2C_SMBUS_BLOCK_DATA, &data);
1877}
1878EXPORT_SYMBOL(i2c_smbus_write_block_data);
1879
1880/* Returns the number of read bytes */
1881s32 i2c_smbus_read_i2c_block_data(const struct i2c_client *client, u8 command,
1882				  u8 length, u8 *values)
1883{
1884	union i2c_smbus_data data;
1885	int status;
1886
1887	if (length > I2C_SMBUS_BLOCK_MAX)
1888		length = I2C_SMBUS_BLOCK_MAX;
1889	data.block[0] = length;
1890	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1891				I2C_SMBUS_READ, command,
1892				I2C_SMBUS_I2C_BLOCK_DATA, &data);
1893	if (status < 0)
1894		return status;
1895
1896	memcpy(values, &data.block[1], data.block[0]);
1897	return data.block[0];
1898}
1899EXPORT_SYMBOL(i2c_smbus_read_i2c_block_data);
1900
1901s32 i2c_smbus_write_i2c_block_data(const struct i2c_client *client, u8 command,
1902				   u8 length, const u8 *values)
1903{
1904	union i2c_smbus_data data;
1905
1906	if (length > I2C_SMBUS_BLOCK_MAX)
1907		length = I2C_SMBUS_BLOCK_MAX;
1908	data.block[0] = length;
1909	memcpy(data.block + 1, values, length);
1910	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1911			      I2C_SMBUS_WRITE, command,
1912			      I2C_SMBUS_I2C_BLOCK_DATA, &data);
1913}
1914EXPORT_SYMBOL(i2c_smbus_write_i2c_block_data);
1915
1916/* Simulate a SMBus command using the i2c protocol
1917   No checking of parameters is done!  */
1918static s32 i2c_smbus_xfer_emulated(struct i2c_adapter *adapter, u16 addr,
1919				   unsigned short flags,
1920				   char read_write, u8 command, int size,
1921				   union i2c_smbus_data *data)
1922{
1923	/* So we need to generate a series of msgs. In the case of writing, we
1924	  need to use only one message; when reading, we need two. We initialize
1925	  most things with sane defaults, to keep the code below somewhat
1926	  simpler. */
1927	unsigned char msgbuf0[I2C_SMBUS_BLOCK_MAX+3];
1928	unsigned char msgbuf1[I2C_SMBUS_BLOCK_MAX+2];
1929	int num = read_write == I2C_SMBUS_READ ? 2 : 1;
1930	struct i2c_msg msg[2] = { { addr, flags, 1, msgbuf0 },
1931	                          { addr, flags | I2C_M_RD, 0, msgbuf1 }
1932	                        };
1933	int i;
1934	u8 partial_pec = 0;
1935	int status;
1936
1937	msgbuf0[0] = command;
1938	switch (size) {
1939	case I2C_SMBUS_QUICK:
1940		msg[0].len = 0;
1941		/* Special case: The read/write field is used as data */
1942		msg[0].flags = flags | (read_write == I2C_SMBUS_READ ?
1943					I2C_M_RD : 0);
1944		num = 1;
1945		break;
1946	case I2C_SMBUS_BYTE:
1947		if (read_write == I2C_SMBUS_READ) {
1948			/* Special case: only a read! */
1949			msg[0].flags = I2C_M_RD | flags;
1950			num = 1;
1951		}
1952		break;
1953	case I2C_SMBUS_BYTE_DATA:
1954		if (read_write == I2C_SMBUS_READ)
1955			msg[1].len = 1;
1956		else {
1957			msg[0].len = 2;
1958			msgbuf0[1] = data->byte;
1959		}
1960		break;
1961	case I2C_SMBUS_WORD_DATA:
1962		if (read_write == I2C_SMBUS_READ)
1963			msg[1].len = 2;
1964		else {
1965			msg[0].len = 3;
1966			msgbuf0[1] = data->word & 0xff;
1967			msgbuf0[2] = data->word >> 8;
1968		}
1969		break;
1970	case I2C_SMBUS_PROC_CALL:
1971		num = 2; /* Special case */
1972		read_write = I2C_SMBUS_READ;
1973		msg[0].len = 3;
1974		msg[1].len = 2;
1975		msgbuf0[1] = data->word & 0xff;
1976		msgbuf0[2] = data->word >> 8;
1977		break;
1978	case I2C_SMBUS_BLOCK_DATA:
1979		if (read_write == I2C_SMBUS_READ) {
1980			msg[1].flags |= I2C_M_RECV_LEN;
1981			msg[1].len = 1; /* block length will be added by
1982					   the underlying bus driver */
1983		} else {
1984			msg[0].len = data->block[0] + 2;
1985			if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 2) {
1986				dev_err(&adapter->dev,
1987					"Invalid block write size %d\n",
1988					data->block[0]);
1989				return -EINVAL;
1990			}
1991			for (i = 1; i < msg[0].len; i++)
1992				msgbuf0[i] = data->block[i-1];
1993		}
1994		break;
1995	case I2C_SMBUS_BLOCK_PROC_CALL:
1996		num = 2; /* Another special case */
1997		read_write = I2C_SMBUS_READ;
1998		if (data->block[0] > I2C_SMBUS_BLOCK_MAX) {
1999			dev_err(&adapter->dev,
2000				"Invalid block write size %d\n",
2001				data->block[0]);
2002			return -EINVAL;
2003		}
2004		msg[0].len = data->block[0] + 2;
2005		for (i = 1; i < msg[0].len; i++)
2006			msgbuf0[i] = data->block[i-1];
2007		msg[1].flags |= I2C_M_RECV_LEN;
2008		msg[1].len = 1; /* block length will be added by
2009				   the underlying bus driver */
2010		break;
2011	case I2C_SMBUS_I2C_BLOCK_DATA:
2012		if (read_write == I2C_SMBUS_READ) {
2013			msg[1].len = data->block[0];
2014		} else {
2015			msg[0].len = data->block[0] + 1;
2016			if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 1) {
2017				dev_err(&adapter->dev,
2018					"Invalid block write size %d\n",
2019					data->block[0]);
2020				return -EINVAL;
2021			}
2022			for (i = 1; i <= data->block[0]; i++)
2023				msgbuf0[i] = data->block[i];
2024		}
2025		break;
2026	default:
2027		dev_err(&adapter->dev, "Unsupported transaction %d\n", size);
2028		return -EOPNOTSUPP;
2029	}
2030
2031	i = ((flags & I2C_CLIENT_PEC) && size != I2C_SMBUS_QUICK
2032				      && size != I2C_SMBUS_I2C_BLOCK_DATA);
2033	if (i) {
2034		/* Compute PEC if first message is a write */
2035		if (!(msg[0].flags & I2C_M_RD)) {
2036			if (num == 1) /* Write only */
2037				i2c_smbus_add_pec(&msg[0]);
2038			else /* Write followed by read */
2039				partial_pec = i2c_smbus_msg_pec(0, &msg[0]);
2040		}
2041		/* Ask for PEC if last message is a read */
2042		if (msg[num-1].flags & I2C_M_RD)
2043			msg[num-1].len++;
2044	}
2045
2046	status = i2c_transfer(adapter, msg, num);
2047	if (status < 0)
2048		return status;
2049
2050	/* Check PEC if last message is a read */
2051	if (i && (msg[num-1].flags & I2C_M_RD)) {
2052		status = i2c_smbus_check_pec(partial_pec, &msg[num-1]);
2053		if (status < 0)
2054			return status;
2055	}
2056
2057	if (read_write == I2C_SMBUS_READ)
2058		switch (size) {
2059		case I2C_SMBUS_BYTE:
2060			data->byte = msgbuf0[0];
2061			break;
2062		case I2C_SMBUS_BYTE_DATA:
2063			data->byte = msgbuf1[0];
2064			break;
2065		case I2C_SMBUS_WORD_DATA:
2066		case I2C_SMBUS_PROC_CALL:
2067			data->word = msgbuf1[0] | (msgbuf1[1] << 8);
2068			break;
2069		case I2C_SMBUS_I2C_BLOCK_DATA:
2070			for (i = 0; i < data->block[0]; i++)
2071				data->block[i+1] = msgbuf1[i];
2072			break;
2073		case I2C_SMBUS_BLOCK_DATA:
2074		case I2C_SMBUS_BLOCK_PROC_CALL:
2075			for (i = 0; i < msgbuf1[0] + 1; i++)
2076				data->block[i] = msgbuf1[i];
2077			break;
2078		}
2079	return 0;
2080}
2081
2082/**
2083 * i2c_smbus_xfer - execute SMBus protocol operations
2084 * @adapter: Handle to I2C bus
2085 * @addr: Address of SMBus slave on that bus
2086 * @flags: I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC)
2087 * @read_write: I2C_SMBUS_READ or I2C_SMBUS_WRITE
2088 * @command: Byte interpreted by slave, for protocols which use such bytes
2089 * @protocol: SMBus protocol operation to execute, such as I2C_SMBUS_PROC_CALL
2090 * @data: Data to be read or written
2091 *
2092 * This executes an SMBus protocol operation, and returns a negative
2093 * errno code else zero on success.
2094 */
2095s32 i2c_smbus_xfer(struct i2c_adapter *adapter, u16 addr, unsigned short flags,
2096		   char read_write, u8 command, int protocol,
2097		   union i2c_smbus_data *data)
2098{
2099	unsigned long orig_jiffies;
2100	int try;
2101	s32 res;
2102
2103	flags &= I2C_M_TEN | I2C_CLIENT_PEC;
2104
2105	if (adapter->algo->smbus_xfer) {
2106		i2c_lock_adapter(adapter);
2107
2108		/* Retry automatically on arbitration loss */
2109		orig_jiffies = jiffies;
2110		for (res = 0, try = 0; try <= adapter->retries; try++) {
2111			res = adapter->algo->smbus_xfer(adapter, addr, flags,
2112							read_write, command,
2113							protocol, data);
2114			if (res != -EAGAIN)
2115				break;
2116			if (time_after(jiffies,
2117				       orig_jiffies + adapter->timeout))
2118				break;
2119		}
2120		i2c_unlock_adapter(adapter);
2121	} else
2122		res = i2c_smbus_xfer_emulated(adapter, addr, flags, read_write,
2123					      command, protocol, data);
2124
2125	return res;
2126}
2127EXPORT_SYMBOL(i2c_smbus_xfer);
2128
2129MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
2130MODULE_DESCRIPTION("I2C-Bus main module");
2131MODULE_LICENSE("GPL");
2132