1 /* i2c-core.c - a device driver for the iic-bus interface */
2 /* ------------------------------------------------------------------------- */
3 /* Copyright (C) 1995-99 Simon G. Vogl
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.
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.
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 /* ------------------------------------------------------------------------- */
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> */
25 #include <linux/module.h>
26 #include <linux/kernel.h>
27 #include <linux/errno.h>
28 #include <linux/slab.h>
29 #include <linux/i2c.h>
30 #include <linux/init.h>
31 #include <linux/idr.h>
32 #include <linux/seq_file.h>
33 #include <linux/platform_device.h>
34 #include <linux/mutex.h>
35 #include <linux/completion.h>
36 #include <asm/uaccess.h>
41 static LIST_HEAD(adapters
);
42 static LIST_HEAD(drivers
);
43 static DEFINE_MUTEX(core_lists
);
44 static DEFINE_IDR(i2c_adapter_idr
);
46 #define is_newstyle_driver(d) ((d)->probe || (d)->remove)
48 /* ------------------------------------------------------------------------- */
50 static int i2c_device_match(struct device
*dev
, struct device_driver
*drv
)
52 struct i2c_client
*client
= to_i2c_client(dev
);
53 struct i2c_driver
*driver
= to_i2c_driver(drv
);
55 /* make legacy i2c drivers bypass driver model probing entirely;
56 * such drivers scan each i2c adapter/bus themselves.
58 if (!is_newstyle_driver(driver
))
61 /* new style drivers use the same kind of driver matching policy
62 * as platform devices or SPI: compare device and driver IDs.
64 return strcmp(client
->driver_name
, drv
->name
) == 0;
69 /* uevent helps with hotplug: modprobe -q $(MODALIAS) */
70 static int i2c_device_uevent(struct device
*dev
, char **envp
, int num_envp
,
71 char *buffer
, int buffer_size
)
73 struct i2c_client
*client
= to_i2c_client(dev
);
74 int i
= 0, length
= 0;
76 /* by definition, legacy drivers can't hotplug */
77 if (dev
->driver
|| !client
->driver_name
)
80 if (add_uevent_var(envp
, num_envp
, &i
, buffer
, buffer_size
, &length
,
81 "MODALIAS=%s", client
->driver_name
))
84 dev_dbg(dev
, "uevent\n");
89 #define i2c_device_uevent NULL
90 #endif /* CONFIG_HOTPLUG */
92 static int i2c_device_probe(struct device
*dev
)
94 struct i2c_client
*client
= to_i2c_client(dev
);
95 struct i2c_driver
*driver
= to_i2c_driver(dev
->driver
);
99 client
->driver
= driver
;
100 dev_dbg(dev
, "probe\n");
101 return driver
->probe(client
);
104 static int i2c_device_remove(struct device
*dev
)
106 struct i2c_client
*client
= to_i2c_client(dev
);
107 struct i2c_driver
*driver
;
113 driver
= to_i2c_driver(dev
->driver
);
114 if (driver
->remove
) {
115 dev_dbg(dev
, "remove\n");
116 status
= driver
->remove(client
);
122 client
->driver
= NULL
;
126 static void i2c_device_shutdown(struct device
*dev
)
128 struct i2c_driver
*driver
;
132 driver
= to_i2c_driver(dev
->driver
);
133 if (driver
->shutdown
)
134 driver
->shutdown(to_i2c_client(dev
));
137 static int i2c_device_suspend(struct device
* dev
, pm_message_t mesg
)
139 struct i2c_driver
*driver
;
143 driver
= to_i2c_driver(dev
->driver
);
144 if (!driver
->suspend
)
146 return driver
->suspend(to_i2c_client(dev
), mesg
);
149 static int i2c_device_resume(struct device
* dev
)
151 struct i2c_driver
*driver
;
155 driver
= to_i2c_driver(dev
->driver
);
158 return driver
->resume(to_i2c_client(dev
));
161 static void i2c_client_release(struct device
*dev
)
163 struct i2c_client
*client
= to_i2c_client(dev
);
164 complete(&client
->released
);
167 static void i2c_client_dev_release(struct device
*dev
)
169 kfree(to_i2c_client(dev
));
172 static ssize_t
show_client_name(struct device
*dev
, struct device_attribute
*attr
, char *buf
)
174 struct i2c_client
*client
= to_i2c_client(dev
);
175 return sprintf(buf
, "%s\n", client
->name
);
178 static ssize_t
show_modalias(struct device
*dev
, struct device_attribute
*attr
, char *buf
)
180 struct i2c_client
*client
= to_i2c_client(dev
);
181 return client
->driver_name
182 ? sprintf(buf
, "%s\n", client
->driver_name
)
186 static struct device_attribute i2c_dev_attrs
[] = {
187 __ATTR(name
, S_IRUGO
, show_client_name
, NULL
),
188 /* modalias helps coldplug: modprobe $(cat .../modalias) */
189 __ATTR(modalias
, S_IRUGO
, show_modalias
, NULL
),
193 struct bus_type i2c_bus_type
= {
195 .dev_attrs
= i2c_dev_attrs
,
196 .match
= i2c_device_match
,
197 .uevent
= i2c_device_uevent
,
198 .probe
= i2c_device_probe
,
199 .remove
= i2c_device_remove
,
200 .shutdown
= i2c_device_shutdown
,
201 .suspend
= i2c_device_suspend
,
202 .resume
= i2c_device_resume
,
204 EXPORT_SYMBOL_GPL(i2c_bus_type
);
207 * i2c_new_device - instantiate an i2c device for use with a new style driver
208 * @adap: the adapter managing the device
209 * @info: describes one I2C device; bus_num is ignored
212 * Create a device to work with a new style i2c driver, where binding is
213 * handled through driver model probe()/remove() methods. This call is not
214 * appropriate for use by mainboad initialization logic, which usually runs
215 * during an arch_initcall() long before any i2c_adapter could exist.
217 * This returns the new i2c client, which may be saved for later use with
218 * i2c_unregister_device(); or NULL to indicate an error.
221 i2c_new_device(struct i2c_adapter
*adap
, struct i2c_board_info
const *info
)
223 struct i2c_client
*client
;
226 client
= kzalloc(sizeof *client
, GFP_KERNEL
);
230 client
->adapter
= adap
;
232 client
->dev
.platform_data
= info
->platform_data
;
233 client
->flags
= info
->flags
;
234 client
->addr
= info
->addr
;
235 client
->irq
= info
->irq
;
237 strlcpy(client
->driver_name
, info
->driver_name
,
238 sizeof(client
->driver_name
));
239 strlcpy(client
->name
, info
->type
, sizeof(client
->name
));
241 /* a new style driver may be bound to this device when we
242 * return from this function, or any later moment (e.g. maybe
243 * hotplugging will load the driver module). and the device
244 * refcount model is the standard driver model one.
246 status
= i2c_attach_client(client
);
253 EXPORT_SYMBOL_GPL(i2c_new_device
);
257 * i2c_unregister_device - reverse effect of i2c_new_device()
258 * @client: value returned from i2c_new_device()
261 void i2c_unregister_device(struct i2c_client
*client
)
263 struct i2c_adapter
*adapter
= client
->adapter
;
264 struct i2c_driver
*driver
= client
->driver
;
266 if (driver
&& !is_newstyle_driver(driver
)) {
267 dev_err(&client
->dev
, "can't unregister devices "
268 "with legacy drivers\n");
273 mutex_lock(&adapter
->clist_lock
);
274 list_del(&client
->list
);
275 mutex_unlock(&adapter
->clist_lock
);
277 device_unregister(&client
->dev
);
279 EXPORT_SYMBOL_GPL(i2c_unregister_device
);
282 /* ------------------------------------------------------------------------- */
284 /* I2C bus adapters -- one roots each I2C or SMBUS segment */
286 void i2c_adapter_dev_release(struct device
*dev
)
288 struct i2c_adapter
*adap
= to_i2c_adapter(dev
);
289 complete(&adap
->dev_released
);
293 show_adapter_name(struct device
*dev
, struct device_attribute
*attr
, char *buf
)
295 struct i2c_adapter
*adap
= to_i2c_adapter(dev
);
296 return sprintf(buf
, "%s\n", adap
->name
);
299 static struct device_attribute i2c_adapter_attrs
[] = {
300 __ATTR(name
, S_IRUGO
, show_adapter_name
, NULL
),
304 struct class i2c_adapter_class
= {
305 .owner
= THIS_MODULE
,
306 .name
= "i2c-adapter",
307 .dev_attrs
= i2c_adapter_attrs
,
310 static void i2c_scan_static_board_info(struct i2c_adapter
*adapter
)
312 struct i2c_devinfo
*devinfo
;
314 mutex_lock(&__i2c_board_lock
);
315 list_for_each_entry(devinfo
, &__i2c_board_list
, list
) {
316 if (devinfo
->busnum
== adapter
->nr
317 && !i2c_new_device(adapter
,
318 &devinfo
->board_info
))
319 printk(KERN_ERR
"i2c-core: can't create i2c%d-%04x\n",
320 i2c_adapter_id(adapter
),
321 devinfo
->board_info
.addr
);
323 mutex_unlock(&__i2c_board_lock
);
326 static int i2c_register_adapter(struct i2c_adapter
*adap
)
329 struct list_head
*item
;
330 struct i2c_driver
*driver
;
332 mutex_init(&adap
->bus_lock
);
333 mutex_init(&adap
->clist_lock
);
334 INIT_LIST_HEAD(&adap
->clients
);
336 mutex_lock(&core_lists
);
337 list_add_tail(&adap
->list
, &adapters
);
339 /* Add the adapter to the driver core.
340 * If the parent pointer is not set up,
341 * we add this adapter to the host bus.
343 if (adap
->dev
.parent
== NULL
) {
344 adap
->dev
.parent
= &platform_bus
;
345 pr_debug("I2C adapter driver [%s] forgot to specify "
346 "physical device\n", adap
->name
);
348 sprintf(adap
->dev
.bus_id
, "i2c-%d", adap
->nr
);
349 adap
->dev
.release
= &i2c_adapter_dev_release
;
350 adap
->dev
.class = &i2c_adapter_class
;
351 res
= device_register(&adap
->dev
);
355 dev_dbg(&adap
->dev
, "adapter [%s] registered\n", adap
->name
);
357 /* create pre-declared device nodes for new-style drivers */
358 if (adap
->nr
< __i2c_first_dynamic_bus_num
)
359 i2c_scan_static_board_info(adap
);
361 /* let legacy drivers scan this bus for matching devices */
362 list_for_each(item
,&drivers
) {
363 driver
= list_entry(item
, struct i2c_driver
, list
);
364 if (driver
->attach_adapter
)
365 /* We ignore the return code; if it fails, too bad */
366 driver
->attach_adapter(adap
);
370 mutex_unlock(&core_lists
);
374 list_del(&adap
->list
);
375 idr_remove(&i2c_adapter_idr
, adap
->nr
);
380 * i2c_add_adapter - declare i2c adapter, use dynamic bus number
381 * @adapter: the adapter to add
384 * This routine is used to declare an I2C adapter when its bus number
385 * doesn't matter. Examples: for I2C adapters dynamically added by
386 * USB links or PCI plugin cards.
388 * When this returns zero, a new bus number was allocated and stored
389 * in adap->nr, and the specified adapter became available for clients.
390 * Otherwise, a negative errno value is returned.
392 int i2c_add_adapter(struct i2c_adapter
*adapter
)
397 if (idr_pre_get(&i2c_adapter_idr
, GFP_KERNEL
) == 0)
400 mutex_lock(&core_lists
);
401 /* "above" here means "above or equal to", sigh */
402 res
= idr_get_new_above(&i2c_adapter_idr
, adapter
,
403 __i2c_first_dynamic_bus_num
, &id
);
404 mutex_unlock(&core_lists
);
413 return i2c_register_adapter(adapter
);
415 EXPORT_SYMBOL(i2c_add_adapter
);
418 * i2c_add_numbered_adapter - declare i2c adapter, use static bus number
419 * @adap: the adapter to register (with adap->nr initialized)
422 * This routine is used to declare an I2C adapter when its bus number
423 * matters. Example: for I2C adapters from system-on-chip CPUs, or
424 * otherwise built in to the system's mainboard, and where i2c_board_info
425 * is used to properly configure I2C devices.
427 * If no devices have pre-been declared for this bus, then be sure to
428 * register the adapter before any dynamically allocated ones. Otherwise
429 * the required bus ID may not be available.
431 * When this returns zero, the specified adapter became available for
432 * clients using the bus number provided in adap->nr. Also, the table
433 * of I2C devices pre-declared using i2c_register_board_info() is scanned,
434 * and the appropriate driver model device nodes are created. Otherwise, a
435 * negative errno value is returned.
437 int i2c_add_numbered_adapter(struct i2c_adapter
*adap
)
442 if (adap
->nr
& ~MAX_ID_MASK
)
446 if (idr_pre_get(&i2c_adapter_idr
, GFP_KERNEL
) == 0)
449 mutex_lock(&core_lists
);
450 /* "above" here means "above or equal to", sigh;
451 * we need the "equal to" result to force the result
453 status
= idr_get_new_above(&i2c_adapter_idr
, adap
, adap
->nr
, &id
);
454 if (status
== 0 && id
!= adap
->nr
) {
456 idr_remove(&i2c_adapter_idr
, id
);
458 mutex_unlock(&core_lists
);
459 if (status
== -EAGAIN
)
463 status
= i2c_register_adapter(adap
);
466 EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter
);
469 * i2c_del_adapter - unregister I2C adapter
470 * @adap: the adapter being unregistered
473 * This unregisters an I2C adapter which was previously registered
474 * by @i2c_add_adapter or @i2c_add_numbered_adapter.
476 int i2c_del_adapter(struct i2c_adapter
*adap
)
478 struct list_head
*item
, *_n
;
479 struct i2c_adapter
*adap_from_list
;
480 struct i2c_driver
*driver
;
481 struct i2c_client
*client
;
484 mutex_lock(&core_lists
);
486 /* First make sure that this adapter was ever added */
487 list_for_each_entry(adap_from_list
, &adapters
, list
) {
488 if (adap_from_list
== adap
)
491 if (adap_from_list
!= adap
) {
492 pr_debug("i2c-core: attempting to delete unregistered "
493 "adapter [%s]\n", adap
->name
);
498 list_for_each(item
,&drivers
) {
499 driver
= list_entry(item
, struct i2c_driver
, list
);
500 if (driver
->detach_adapter
)
501 if ((res
= driver
->detach_adapter(adap
))) {
502 dev_err(&adap
->dev
, "detach_adapter failed "
504 driver
->driver
.name
);
509 /* detach any active clients. This must be done first, because
510 * it can fail; in which case we give up. */
511 list_for_each_safe(item
, _n
, &adap
->clients
) {
512 struct i2c_driver
*driver
;
514 client
= list_entry(item
, struct i2c_client
, list
);
515 driver
= client
->driver
;
517 /* new style, follow standard driver model */
518 if (!driver
|| is_newstyle_driver(driver
)) {
519 i2c_unregister_device(client
);
523 /* legacy drivers create and remove clients themselves */
524 if ((res
= driver
->detach_client(client
))) {
525 dev_err(&adap
->dev
, "detach_client failed for client "
526 "[%s] at address 0x%02x\n", client
->name
,
532 /* clean up the sysfs representation */
533 init_completion(&adap
->dev_released
);
534 device_unregister(&adap
->dev
);
535 list_del(&adap
->list
);
537 /* wait for sysfs to drop all references */
538 wait_for_completion(&adap
->dev_released
);
541 idr_remove(&i2c_adapter_idr
, adap
->nr
);
543 dev_dbg(&adap
->dev
, "adapter [%s] unregistered\n", adap
->name
);
546 mutex_unlock(&core_lists
);
549 EXPORT_SYMBOL(i2c_del_adapter
);
552 /* ------------------------------------------------------------------------- */
555 * An i2c_driver is used with one or more i2c_client (device) nodes to access
556 * i2c slave chips, on a bus instance associated with some i2c_adapter. There
557 * are two models for binding the driver to its device: "new style" drivers
558 * follow the standard Linux driver model and just respond to probe() calls
559 * issued if the driver core sees they match(); "legacy" drivers create device
563 int i2c_register_driver(struct module
*owner
, struct i2c_driver
*driver
)
567 /* new style driver methods can't mix with legacy ones */
568 if (is_newstyle_driver(driver
)) {
569 if (driver
->attach_adapter
|| driver
->detach_adapter
570 || driver
->detach_client
) {
572 "i2c-core: driver [%s] is confused\n",
573 driver
->driver
.name
);
578 /* add the driver to the list of i2c drivers in the driver core */
579 driver
->driver
.owner
= owner
;
580 driver
->driver
.bus
= &i2c_bus_type
;
582 /* for new style drivers, when registration returns the driver core
583 * will have called probe() for all matching-but-unbound devices.
585 res
= driver_register(&driver
->driver
);
589 mutex_lock(&core_lists
);
591 list_add_tail(&driver
->list
,&drivers
);
592 pr_debug("i2c-core: driver [%s] registered\n", driver
->driver
.name
);
594 /* legacy drivers scan i2c busses directly */
595 if (driver
->attach_adapter
) {
596 struct i2c_adapter
*adapter
;
598 list_for_each_entry(adapter
, &adapters
, list
) {
599 driver
->attach_adapter(adapter
);
603 mutex_unlock(&core_lists
);
606 EXPORT_SYMBOL(i2c_register_driver
);
609 * i2c_del_driver - unregister I2C driver
610 * @driver: the driver being unregistered
613 void i2c_del_driver(struct i2c_driver
*driver
)
615 struct list_head
*item1
, *item2
, *_n
;
616 struct i2c_client
*client
;
617 struct i2c_adapter
*adap
;
619 mutex_lock(&core_lists
);
621 /* new-style driver? */
622 if (is_newstyle_driver(driver
))
625 /* Have a look at each adapter, if clients of this driver are still
626 * attached. If so, detach them to be able to kill the driver
629 list_for_each(item1
,&adapters
) {
630 adap
= list_entry(item1
, struct i2c_adapter
, list
);
631 if (driver
->detach_adapter
) {
632 if (driver
->detach_adapter(adap
)) {
633 dev_err(&adap
->dev
, "detach_adapter failed "
635 driver
->driver
.name
);
638 list_for_each_safe(item2
, _n
, &adap
->clients
) {
639 client
= list_entry(item2
, struct i2c_client
, list
);
640 if (client
->driver
!= driver
)
642 dev_dbg(&adap
->dev
, "detaching client [%s] "
643 "at 0x%02x\n", client
->name
,
645 if (driver
->detach_client(client
)) {
646 dev_err(&adap
->dev
, "detach_client "
647 "failed for client [%s] at "
648 "0x%02x\n", client
->name
,
656 driver_unregister(&driver
->driver
);
657 list_del(&driver
->list
);
658 pr_debug("i2c-core: driver [%s] unregistered\n", driver
->driver
.name
);
660 mutex_unlock(&core_lists
);
662 EXPORT_SYMBOL(i2c_del_driver
);
664 /* ------------------------------------------------------------------------- */
666 static int __i2c_check_addr(struct i2c_adapter
*adapter
, unsigned int addr
)
668 struct list_head
*item
;
669 struct i2c_client
*client
;
671 list_for_each(item
,&adapter
->clients
) {
672 client
= list_entry(item
, struct i2c_client
, list
);
673 if (client
->addr
== addr
)
679 int i2c_check_addr(struct i2c_adapter
*adapter
, int addr
)
683 mutex_lock(&adapter
->clist_lock
);
684 rval
= __i2c_check_addr(adapter
, addr
);
685 mutex_unlock(&adapter
->clist_lock
);
689 EXPORT_SYMBOL(i2c_check_addr
);
691 int i2c_attach_client(struct i2c_client
*client
)
693 struct i2c_adapter
*adapter
= client
->adapter
;
696 mutex_lock(&adapter
->clist_lock
);
697 if (__i2c_check_addr(client
->adapter
, client
->addr
)) {
701 list_add_tail(&client
->list
,&adapter
->clients
);
703 client
->usage_count
= 0;
705 client
->dev
.parent
= &client
->adapter
->dev
;
706 client
->dev
.bus
= &i2c_bus_type
;
709 client
->dev
.driver
= &client
->driver
->driver
;
711 if (client
->driver
&& !is_newstyle_driver(client
->driver
)) {
712 client
->dev
.release
= i2c_client_release
;
713 client
->dev
.uevent_suppress
= 1;
715 client
->dev
.release
= i2c_client_dev_release
;
717 snprintf(&client
->dev
.bus_id
[0], sizeof(client
->dev
.bus_id
),
718 "%d-%04x", i2c_adapter_id(adapter
), client
->addr
);
719 dev_dbg(&adapter
->dev
, "client [%s] registered with bus id %s\n",
720 client
->name
, client
->dev
.bus_id
);
721 res
= device_register(&client
->dev
);
724 mutex_unlock(&adapter
->clist_lock
);
726 if (adapter
->client_register
) {
727 if (adapter
->client_register(client
)) {
728 dev_dbg(&adapter
->dev
, "client_register "
729 "failed for client [%s] at 0x%02x\n",
730 client
->name
, client
->addr
);
737 list_del(&client
->list
);
738 dev_err(&adapter
->dev
, "Failed to attach i2c client %s at 0x%02x "
739 "(%d)\n", client
->name
, client
->addr
, res
);
741 mutex_unlock(&adapter
->clist_lock
);
744 EXPORT_SYMBOL(i2c_attach_client
);
746 int i2c_detach_client(struct i2c_client
*client
)
748 struct i2c_adapter
*adapter
= client
->adapter
;
751 if (client
->usage_count
> 0) {
752 dev_warn(&client
->dev
, "Client [%s] still busy, "
753 "can't detach\n", client
->name
);
757 if (adapter
->client_unregister
) {
758 res
= adapter
->client_unregister(client
);
760 dev_err(&client
->dev
,
761 "client_unregister [%s] failed, "
762 "client not detached\n", client
->name
);
767 mutex_lock(&adapter
->clist_lock
);
768 list_del(&client
->list
);
769 init_completion(&client
->released
);
770 device_unregister(&client
->dev
);
771 mutex_unlock(&adapter
->clist_lock
);
772 wait_for_completion(&client
->released
);
777 EXPORT_SYMBOL(i2c_detach_client
);
779 static int i2c_inc_use_client(struct i2c_client
*client
)
782 if (!try_module_get(client
->driver
->driver
.owner
))
784 if (!try_module_get(client
->adapter
->owner
)) {
785 module_put(client
->driver
->driver
.owner
);
792 static void i2c_dec_use_client(struct i2c_client
*client
)
794 module_put(client
->driver
->driver
.owner
);
795 module_put(client
->adapter
->owner
);
798 int i2c_use_client(struct i2c_client
*client
)
802 ret
= i2c_inc_use_client(client
);
806 client
->usage_count
++;
810 EXPORT_SYMBOL(i2c_use_client
);
812 int i2c_release_client(struct i2c_client
*client
)
814 if (!client
->usage_count
) {
815 pr_debug("i2c-core: %s used one too many times\n",
820 client
->usage_count
--;
821 i2c_dec_use_client(client
);
825 EXPORT_SYMBOL(i2c_release_client
);
827 void i2c_clients_command(struct i2c_adapter
*adap
, unsigned int cmd
, void *arg
)
829 struct list_head
*item
;
830 struct i2c_client
*client
;
832 mutex_lock(&adap
->clist_lock
);
833 list_for_each(item
,&adap
->clients
) {
834 client
= list_entry(item
, struct i2c_client
, list
);
835 if (!try_module_get(client
->driver
->driver
.owner
))
837 if (NULL
!= client
->driver
->command
) {
838 mutex_unlock(&adap
->clist_lock
);
839 client
->driver
->command(client
,cmd
,arg
);
840 mutex_lock(&adap
->clist_lock
);
842 module_put(client
->driver
->driver
.owner
);
844 mutex_unlock(&adap
->clist_lock
);
846 EXPORT_SYMBOL(i2c_clients_command
);
848 static int __init
i2c_init(void)
852 retval
= bus_register(&i2c_bus_type
);
855 return class_register(&i2c_adapter_class
);
858 static void __exit
i2c_exit(void)
860 class_unregister(&i2c_adapter_class
);
861 bus_unregister(&i2c_bus_type
);
864 subsys_initcall(i2c_init
);
865 module_exit(i2c_exit
);
867 /* ----------------------------------------------------
868 * the functional interface to the i2c busses.
869 * ----------------------------------------------------
872 int i2c_transfer(struct i2c_adapter
* adap
, struct i2c_msg
*msgs
, int num
)
876 if (adap
->algo
->master_xfer
) {
878 for (ret
= 0; ret
< num
; ret
++) {
879 dev_dbg(&adap
->dev
, "master_xfer[%d] %c, addr=0x%02x, "
880 "len=%d%s\n", ret
, (msgs
[ret
].flags
& I2C_M_RD
)
881 ? 'R' : 'W', msgs
[ret
].addr
, msgs
[ret
].len
,
882 (msgs
[ret
].flags
& I2C_M_RECV_LEN
) ? "+" : "");
886 mutex_lock_nested(&adap
->bus_lock
, adap
->level
);
887 ret
= adap
->algo
->master_xfer(adap
,msgs
,num
);
888 mutex_unlock(&adap
->bus_lock
);
892 dev_dbg(&adap
->dev
, "I2C level transfers not supported\n");
896 EXPORT_SYMBOL(i2c_transfer
);
898 int i2c_master_send(struct i2c_client
*client
,const char *buf
,int count
)
901 struct i2c_adapter
*adap
=client
->adapter
;
904 msg
.addr
= client
->addr
;
905 msg
.flags
= client
->flags
& I2C_M_TEN
;
907 msg
.buf
= (char *)buf
;
909 ret
= i2c_transfer(adap
, &msg
, 1);
911 /* If everything went ok (i.e. 1 msg transmitted), return #bytes
912 transmitted, else error code. */
913 return (ret
== 1) ? count
: ret
;
915 EXPORT_SYMBOL(i2c_master_send
);
917 int i2c_master_recv(struct i2c_client
*client
, char *buf
,int count
)
919 struct i2c_adapter
*adap
=client
->adapter
;
923 msg
.addr
= client
->addr
;
924 msg
.flags
= client
->flags
& I2C_M_TEN
;
925 msg
.flags
|= I2C_M_RD
;
929 ret
= i2c_transfer(adap
, &msg
, 1);
931 /* If everything went ok (i.e. 1 msg transmitted), return #bytes
932 transmitted, else error code. */
933 return (ret
== 1) ? count
: ret
;
935 EXPORT_SYMBOL(i2c_master_recv
);
937 int i2c_control(struct i2c_client
*client
,
938 unsigned int cmd
, unsigned long arg
)
941 struct i2c_adapter
*adap
= client
->adapter
;
943 dev_dbg(&client
->adapter
->dev
, "i2c ioctl, cmd: 0x%x, arg: %#lx\n", cmd
, arg
);
952 if (adap
->algo
->algo_control
!=NULL
)
953 ret
= adap
->algo
->algo_control(adap
,cmd
,arg
);
957 EXPORT_SYMBOL(i2c_control
);
959 /* ----------------------------------------------------
960 * the i2c address scanning function
961 * Will not work for 10-bit addresses!
962 * ----------------------------------------------------
964 static int i2c_probe_address(struct i2c_adapter
*adapter
, int addr
, int kind
,
965 int (*found_proc
) (struct i2c_adapter
*, int, int))
969 /* Make sure the address is valid */
970 if (addr
< 0x03 || addr
> 0x77) {
971 dev_warn(&adapter
->dev
, "Invalid probe address 0x%02x\n",
976 /* Skip if already in use */
977 if (i2c_check_addr(adapter
, addr
))
980 /* Make sure there is something at this address, unless forced */
982 if (i2c_smbus_xfer(adapter
, addr
, 0, 0, 0,
983 I2C_SMBUS_QUICK
, NULL
) < 0)
986 /* prevent 24RF08 corruption */
987 if ((addr
& ~0x0f) == 0x50)
988 i2c_smbus_xfer(adapter
, addr
, 0, 0, 0,
989 I2C_SMBUS_QUICK
, NULL
);
992 /* Finally call the custom detection function */
993 err
= found_proc(adapter
, addr
, kind
);
994 /* -ENODEV can be returned if there is a chip at the given address
995 but it isn't supported by this chip driver. We catch it here as
996 this isn't an error. */
1001 dev_warn(&adapter
->dev
, "Client creation failed at 0x%x (%d)\n",
1006 int i2c_probe(struct i2c_adapter
*adapter
,
1007 struct i2c_client_address_data
*address_data
,
1008 int (*found_proc
) (struct i2c_adapter
*, int, int))
1011 int adap_id
= i2c_adapter_id(adapter
);
1013 /* Force entries are done first, and are not affected by ignore
1015 if (address_data
->forces
) {
1016 unsigned short **forces
= address_data
->forces
;
1019 for (kind
= 0; forces
[kind
]; kind
++) {
1020 for (i
= 0; forces
[kind
][i
] != I2C_CLIENT_END
;
1022 if (forces
[kind
][i
] == adap_id
1023 || forces
[kind
][i
] == ANY_I2C_BUS
) {
1024 dev_dbg(&adapter
->dev
, "found force "
1025 "parameter for adapter %d, "
1026 "addr 0x%02x, kind %d\n",
1027 adap_id
, forces
[kind
][i
+ 1],
1029 err
= i2c_probe_address(adapter
,
1030 forces
[kind
][i
+ 1],
1039 /* Stop here if we can't use SMBUS_QUICK */
1040 if (!i2c_check_functionality(adapter
, I2C_FUNC_SMBUS_QUICK
)) {
1041 if (address_data
->probe
[0] == I2C_CLIENT_END
1042 && address_data
->normal_i2c
[0] == I2C_CLIENT_END
)
1045 dev_warn(&adapter
->dev
, "SMBus Quick command not supported, "
1046 "can't probe for chips\n");
1050 /* Probe entries are done second, and are not affected by ignore
1052 for (i
= 0; address_data
->probe
[i
] != I2C_CLIENT_END
; i
+= 2) {
1053 if (address_data
->probe
[i
] == adap_id
1054 || address_data
->probe
[i
] == ANY_I2C_BUS
) {
1055 dev_dbg(&adapter
->dev
, "found probe parameter for "
1056 "adapter %d, addr 0x%02x\n", adap_id
,
1057 address_data
->probe
[i
+ 1]);
1058 err
= i2c_probe_address(adapter
,
1059 address_data
->probe
[i
+ 1],
1066 /* Normal entries are done last, unless shadowed by an ignore entry */
1067 for (i
= 0; address_data
->normal_i2c
[i
] != I2C_CLIENT_END
; i
+= 1) {
1071 for (j
= 0; address_data
->ignore
[j
] != I2C_CLIENT_END
;
1073 if ((address_data
->ignore
[j
] == adap_id
||
1074 address_data
->ignore
[j
] == ANY_I2C_BUS
)
1075 && address_data
->ignore
[j
+ 1]
1076 == address_data
->normal_i2c
[i
]) {
1077 dev_dbg(&adapter
->dev
, "found ignore "
1078 "parameter for adapter %d, "
1079 "addr 0x%02x\n", adap_id
,
1080 address_data
->ignore
[j
+ 1]);
1088 dev_dbg(&adapter
->dev
, "found normal entry for adapter %d, "
1089 "addr 0x%02x\n", adap_id
,
1090 address_data
->normal_i2c
[i
]);
1091 err
= i2c_probe_address(adapter
, address_data
->normal_i2c
[i
],
1099 EXPORT_SYMBOL(i2c_probe
);
1102 i2c_new_probed_device(struct i2c_adapter
*adap
,
1103 struct i2c_board_info
*info
,
1104 unsigned short const *addr_list
)
1108 /* Stop here if the bus doesn't support probing */
1109 if (!i2c_check_functionality(adap
, I2C_FUNC_SMBUS_READ_BYTE
)) {
1110 dev_err(&adap
->dev
, "Probing not supported\n");
1114 mutex_lock(&adap
->clist_lock
);
1115 for (i
= 0; addr_list
[i
] != I2C_CLIENT_END
; i
++) {
1116 /* Check address validity */
1117 if (addr_list
[i
] < 0x03 || addr_list
[i
] > 0x77) {
1118 dev_warn(&adap
->dev
, "Invalid 7-bit address "
1119 "0x%02x\n", addr_list
[i
]);
1123 /* Check address availability */
1124 if (__i2c_check_addr(adap
, addr_list
[i
])) {
1125 dev_dbg(&adap
->dev
, "Address 0x%02x already in "
1126 "use, not probing\n", addr_list
[i
]);
1130 /* Test address responsiveness
1131 The default probe method is a quick write, but it is known
1132 to corrupt the 24RF08 EEPROMs due to a state machine bug,
1133 and could also irreversibly write-protect some EEPROMs, so
1134 for address ranges 0x30-0x37 and 0x50-0x5f, we use a byte
1135 read instead. Also, some bus drivers don't implement
1136 quick write, so we fallback to a byte read it that case
1138 if ((addr_list
[i
] & ~0x07) == 0x30
1139 || (addr_list
[i
] & ~0x0f) == 0x50
1140 || !i2c_check_functionality(adap
, I2C_FUNC_SMBUS_QUICK
)) {
1141 if (i2c_smbus_xfer(adap
, addr_list
[i
], 0,
1143 I2C_SMBUS_BYTE
, NULL
) >= 0)
1146 if (i2c_smbus_xfer(adap
, addr_list
[i
], 0,
1148 I2C_SMBUS_QUICK
, NULL
) >= 0)
1152 mutex_unlock(&adap
->clist_lock
);
1154 if (addr_list
[i
] == I2C_CLIENT_END
) {
1155 dev_dbg(&adap
->dev
, "Probing failed, no device found\n");
1159 info
->addr
= addr_list
[i
];
1160 return i2c_new_device(adap
, info
);
1162 EXPORT_SYMBOL_GPL(i2c_new_probed_device
);
1164 struct i2c_adapter
* i2c_get_adapter(int id
)
1166 struct i2c_adapter
*adapter
;
1168 mutex_lock(&core_lists
);
1169 adapter
= (struct i2c_adapter
*)idr_find(&i2c_adapter_idr
, id
);
1170 if (adapter
&& !try_module_get(adapter
->owner
))
1173 mutex_unlock(&core_lists
);
1176 EXPORT_SYMBOL(i2c_get_adapter
);
1178 void i2c_put_adapter(struct i2c_adapter
*adap
)
1180 module_put(adap
->owner
);
1182 EXPORT_SYMBOL(i2c_put_adapter
);
1184 /* The SMBus parts */
1186 #define POLY (0x1070U << 3)
1192 for(i
= 0; i
< 8; i
++) {
1197 return (u8
)(data
>> 8);
1200 /* Incremental CRC8 over count bytes in the array pointed to by p */
1201 static u8
i2c_smbus_pec(u8 crc
, u8
*p
, size_t count
)
1205 for(i
= 0; i
< count
; i
++)
1206 crc
= crc8((crc
^ p
[i
]) << 8);
1210 /* Assume a 7-bit address, which is reasonable for SMBus */
1211 static u8
i2c_smbus_msg_pec(u8 pec
, struct i2c_msg
*msg
)
1213 /* The address will be sent first */
1214 u8 addr
= (msg
->addr
<< 1) | !!(msg
->flags
& I2C_M_RD
);
1215 pec
= i2c_smbus_pec(pec
, &addr
, 1);
1217 /* The data buffer follows */
1218 return i2c_smbus_pec(pec
, msg
->buf
, msg
->len
);
1221 /* Used for write only transactions */
1222 static inline void i2c_smbus_add_pec(struct i2c_msg
*msg
)
1224 msg
->buf
[msg
->len
] = i2c_smbus_msg_pec(0, msg
);
1228 /* Return <0 on CRC error
1229 If there was a write before this read (most cases) we need to take the
1230 partial CRC from the write part into account.
1231 Note that this function does modify the message (we need to decrease the
1232 message length to hide the CRC byte from the caller). */
1233 static int i2c_smbus_check_pec(u8 cpec
, struct i2c_msg
*msg
)
1235 u8 rpec
= msg
->buf
[--msg
->len
];
1236 cpec
= i2c_smbus_msg_pec(cpec
, msg
);
1239 pr_debug("i2c-core: Bad PEC 0x%02x vs. 0x%02x\n",
1246 s32
i2c_smbus_write_quick(struct i2c_client
*client
, u8 value
)
1248 return i2c_smbus_xfer(client
->adapter
,client
->addr
,client
->flags
,
1249 value
,0,I2C_SMBUS_QUICK
,NULL
);
1251 EXPORT_SYMBOL(i2c_smbus_write_quick
);
1253 s32
i2c_smbus_read_byte(struct i2c_client
*client
)
1255 union i2c_smbus_data data
;
1256 if (i2c_smbus_xfer(client
->adapter
,client
->addr
,client
->flags
,
1257 I2C_SMBUS_READ
,0,I2C_SMBUS_BYTE
, &data
))
1262 EXPORT_SYMBOL(i2c_smbus_read_byte
);
1264 s32
i2c_smbus_write_byte(struct i2c_client
*client
, u8 value
)
1266 return i2c_smbus_xfer(client
->adapter
,client
->addr
,client
->flags
,
1267 I2C_SMBUS_WRITE
, value
, I2C_SMBUS_BYTE
, NULL
);
1269 EXPORT_SYMBOL(i2c_smbus_write_byte
);
1271 s32
i2c_smbus_read_byte_data(struct i2c_client
*client
, u8 command
)
1273 union i2c_smbus_data data
;
1274 if (i2c_smbus_xfer(client
->adapter
,client
->addr
,client
->flags
,
1275 I2C_SMBUS_READ
,command
, I2C_SMBUS_BYTE_DATA
,&data
))
1280 EXPORT_SYMBOL(i2c_smbus_read_byte_data
);
1282 s32
i2c_smbus_write_byte_data(struct i2c_client
*client
, u8 command
, u8 value
)
1284 union i2c_smbus_data data
;
1286 return i2c_smbus_xfer(client
->adapter
,client
->addr
,client
->flags
,
1287 I2C_SMBUS_WRITE
,command
,
1288 I2C_SMBUS_BYTE_DATA
,&data
);
1290 EXPORT_SYMBOL(i2c_smbus_write_byte_data
);
1292 s32
i2c_smbus_read_word_data(struct i2c_client
*client
, u8 command
)
1294 union i2c_smbus_data data
;
1295 if (i2c_smbus_xfer(client
->adapter
,client
->addr
,client
->flags
,
1296 I2C_SMBUS_READ
,command
, I2C_SMBUS_WORD_DATA
, &data
))
1301 EXPORT_SYMBOL(i2c_smbus_read_word_data
);
1303 s32
i2c_smbus_write_word_data(struct i2c_client
*client
, u8 command
, u16 value
)
1305 union i2c_smbus_data data
;
1307 return i2c_smbus_xfer(client
->adapter
,client
->addr
,client
->flags
,
1308 I2C_SMBUS_WRITE
,command
,
1309 I2C_SMBUS_WORD_DATA
,&data
);
1311 EXPORT_SYMBOL(i2c_smbus_write_word_data
);
1313 /* Returns the number of read bytes */
1314 s32
i2c_smbus_read_block_data(struct i2c_client
*client
, u8 command
,
1317 union i2c_smbus_data data
;
1319 if (i2c_smbus_xfer(client
->adapter
, client
->addr
, client
->flags
,
1320 I2C_SMBUS_READ
, command
,
1321 I2C_SMBUS_BLOCK_DATA
, &data
))
1324 memcpy(values
, &data
.block
[1], data
.block
[0]);
1325 return data
.block
[0];
1327 EXPORT_SYMBOL(i2c_smbus_read_block_data
);
1329 s32
i2c_smbus_write_block_data(struct i2c_client
*client
, u8 command
,
1330 u8 length
, const u8
*values
)
1332 union i2c_smbus_data data
;
1334 if (length
> I2C_SMBUS_BLOCK_MAX
)
1335 length
= I2C_SMBUS_BLOCK_MAX
;
1336 data
.block
[0] = length
;
1337 memcpy(&data
.block
[1], values
, length
);
1338 return i2c_smbus_xfer(client
->adapter
,client
->addr
,client
->flags
,
1339 I2C_SMBUS_WRITE
,command
,
1340 I2C_SMBUS_BLOCK_DATA
,&data
);
1342 EXPORT_SYMBOL(i2c_smbus_write_block_data
);
1344 /* Returns the number of read bytes */
1345 s32
i2c_smbus_read_i2c_block_data(struct i2c_client
*client
, u8 command
,
1346 u8 length
, u8
*values
)
1348 union i2c_smbus_data data
;
1350 if (length
> I2C_SMBUS_BLOCK_MAX
)
1351 length
= I2C_SMBUS_BLOCK_MAX
;
1352 data
.block
[0] = length
;
1353 if (i2c_smbus_xfer(client
->adapter
,client
->addr
,client
->flags
,
1354 I2C_SMBUS_READ
,command
,
1355 I2C_SMBUS_I2C_BLOCK_DATA
,&data
))
1358 memcpy(values
, &data
.block
[1], data
.block
[0]);
1359 return data
.block
[0];
1361 EXPORT_SYMBOL(i2c_smbus_read_i2c_block_data
);
1363 s32
i2c_smbus_write_i2c_block_data(struct i2c_client
*client
, u8 command
,
1364 u8 length
, const u8
*values
)
1366 union i2c_smbus_data data
;
1368 if (length
> I2C_SMBUS_BLOCK_MAX
)
1369 length
= I2C_SMBUS_BLOCK_MAX
;
1370 data
.block
[0] = length
;
1371 memcpy(data
.block
+ 1, values
, length
);
1372 return i2c_smbus_xfer(client
->adapter
, client
->addr
, client
->flags
,
1373 I2C_SMBUS_WRITE
, command
,
1374 I2C_SMBUS_I2C_BLOCK_DATA
, &data
);
1376 EXPORT_SYMBOL(i2c_smbus_write_i2c_block_data
);
1378 /* Simulate a SMBus command using the i2c protocol
1379 No checking of parameters is done! */
1380 static s32
i2c_smbus_xfer_emulated(struct i2c_adapter
* adapter
, u16 addr
,
1381 unsigned short flags
,
1382 char read_write
, u8 command
, int size
,
1383 union i2c_smbus_data
* data
)
1385 /* So we need to generate a series of msgs. In the case of writing, we
1386 need to use only one message; when reading, we need two. We initialize
1387 most things with sane defaults, to keep the code below somewhat
1389 unsigned char msgbuf0
[I2C_SMBUS_BLOCK_MAX
+3];
1390 unsigned char msgbuf1
[I2C_SMBUS_BLOCK_MAX
+2];
1391 int num
= read_write
== I2C_SMBUS_READ
?2:1;
1392 struct i2c_msg msg
[2] = { { addr
, flags
, 1, msgbuf0
},
1393 { addr
, flags
| I2C_M_RD
, 0, msgbuf1
}
1398 msgbuf0
[0] = command
;
1400 case I2C_SMBUS_QUICK
:
1402 /* Special case: The read/write field is used as data */
1403 msg
[0].flags
= flags
| (read_write
==I2C_SMBUS_READ
)?I2C_M_RD
:0;
1406 case I2C_SMBUS_BYTE
:
1407 if (read_write
== I2C_SMBUS_READ
) {
1408 /* Special case: only a read! */
1409 msg
[0].flags
= I2C_M_RD
| flags
;
1413 case I2C_SMBUS_BYTE_DATA
:
1414 if (read_write
== I2C_SMBUS_READ
)
1418 msgbuf0
[1] = data
->byte
;
1421 case I2C_SMBUS_WORD_DATA
:
1422 if (read_write
== I2C_SMBUS_READ
)
1426 msgbuf0
[1] = data
->word
& 0xff;
1427 msgbuf0
[2] = data
->word
>> 8;
1430 case I2C_SMBUS_PROC_CALL
:
1431 num
= 2; /* Special case */
1432 read_write
= I2C_SMBUS_READ
;
1435 msgbuf0
[1] = data
->word
& 0xff;
1436 msgbuf0
[2] = data
->word
>> 8;
1438 case I2C_SMBUS_BLOCK_DATA
:
1439 if (read_write
== I2C_SMBUS_READ
) {
1440 msg
[1].flags
|= I2C_M_RECV_LEN
;
1441 msg
[1].len
= 1; /* block length will be added by
1442 the underlying bus driver */
1444 msg
[0].len
= data
->block
[0] + 2;
1445 if (msg
[0].len
> I2C_SMBUS_BLOCK_MAX
+ 2) {
1446 dev_err(&adapter
->dev
, "smbus_access called with "
1447 "invalid block write size (%d)\n",
1451 for (i
= 1; i
< msg
[0].len
; i
++)
1452 msgbuf0
[i
] = data
->block
[i
-1];
1455 case I2C_SMBUS_BLOCK_PROC_CALL
:
1456 num
= 2; /* Another special case */
1457 read_write
= I2C_SMBUS_READ
;
1458 if (data
->block
[0] > I2C_SMBUS_BLOCK_MAX
) {
1459 dev_err(&adapter
->dev
, "%s called with invalid "
1460 "block proc call size (%d)\n", __FUNCTION__
,
1464 msg
[0].len
= data
->block
[0] + 2;
1465 for (i
= 1; i
< msg
[0].len
; i
++)
1466 msgbuf0
[i
] = data
->block
[i
-1];
1467 msg
[1].flags
|= I2C_M_RECV_LEN
;
1468 msg
[1].len
= 1; /* block length will be added by
1469 the underlying bus driver */
1471 case I2C_SMBUS_I2C_BLOCK_DATA
:
1472 if (read_write
== I2C_SMBUS_READ
) {
1473 msg
[1].len
= data
->block
[0];
1475 msg
[0].len
= data
->block
[0] + 1;
1476 if (msg
[0].len
> I2C_SMBUS_BLOCK_MAX
+ 1) {
1477 dev_err(&adapter
->dev
, "i2c_smbus_xfer_emulated called with "
1478 "invalid block write size (%d)\n",
1482 for (i
= 1; i
<= data
->block
[0]; i
++)
1483 msgbuf0
[i
] = data
->block
[i
];
1487 dev_err(&adapter
->dev
, "smbus_access called with invalid size (%d)\n",
1492 i
= ((flags
& I2C_CLIENT_PEC
) && size
!= I2C_SMBUS_QUICK
1493 && size
!= I2C_SMBUS_I2C_BLOCK_DATA
);
1495 /* Compute PEC if first message is a write */
1496 if (!(msg
[0].flags
& I2C_M_RD
)) {
1497 if (num
== 1) /* Write only */
1498 i2c_smbus_add_pec(&msg
[0]);
1499 else /* Write followed by read */
1500 partial_pec
= i2c_smbus_msg_pec(0, &msg
[0]);
1502 /* Ask for PEC if last message is a read */
1503 if (msg
[num
-1].flags
& I2C_M_RD
)
1507 if (i2c_transfer(adapter
, msg
, num
) < 0)
1510 /* Check PEC if last message is a read */
1511 if (i
&& (msg
[num
-1].flags
& I2C_M_RD
)) {
1512 if (i2c_smbus_check_pec(partial_pec
, &msg
[num
-1]) < 0)
1516 if (read_write
== I2C_SMBUS_READ
)
1518 case I2C_SMBUS_BYTE
:
1519 data
->byte
= msgbuf0
[0];
1521 case I2C_SMBUS_BYTE_DATA
:
1522 data
->byte
= msgbuf1
[0];
1524 case I2C_SMBUS_WORD_DATA
:
1525 case I2C_SMBUS_PROC_CALL
:
1526 data
->word
= msgbuf1
[0] | (msgbuf1
[1] << 8);
1528 case I2C_SMBUS_I2C_BLOCK_DATA
:
1529 for (i
= 0; i
< data
->block
[0]; i
++)
1530 data
->block
[i
+1] = msgbuf1
[i
];
1532 case I2C_SMBUS_BLOCK_DATA
:
1533 case I2C_SMBUS_BLOCK_PROC_CALL
:
1534 for (i
= 0; i
< msgbuf1
[0] + 1; i
++)
1535 data
->block
[i
] = msgbuf1
[i
];
1542 s32
i2c_smbus_xfer(struct i2c_adapter
* adapter
, u16 addr
, unsigned short flags
,
1543 char read_write
, u8 command
, int size
,
1544 union i2c_smbus_data
* data
)
1548 flags
&= I2C_M_TEN
| I2C_CLIENT_PEC
;
1550 if (adapter
->algo
->smbus_xfer
) {
1551 mutex_lock(&adapter
->bus_lock
);
1552 res
= adapter
->algo
->smbus_xfer(adapter
,addr
,flags
,read_write
,
1554 mutex_unlock(&adapter
->bus_lock
);
1556 res
= i2c_smbus_xfer_emulated(adapter
,addr
,flags
,read_write
,
1561 EXPORT_SYMBOL(i2c_smbus_xfer
);
1563 MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
1564 MODULE_DESCRIPTION("I2C-Bus main module");
1565 MODULE_LICENSE("GPL");