i2c: Export the i2c_bus_type symbol
[pandora-kernel.git] / drivers / i2c / i2c-core.c
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
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/platform_device.h>
33 #include <linux/mutex.h>
34 #include <linux/completion.h>
35 #include <linux/hardirq.h>
36 #include <linux/irqflags.h>
37 #include <asm/uaccess.h>
38
39 #include "i2c-core.h"
40
41
42 static DEFINE_MUTEX(core_lock);
43 static DEFINE_IDR(i2c_adapter_idr);
44
45 #define is_newstyle_driver(d) ((d)->probe || (d)->remove)
46
47 /* ------------------------------------------------------------------------- */
48
49 static const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id,
50                                                 const struct i2c_client *client)
51 {
52         while (id->name[0]) {
53                 if (strcmp(client->name, id->name) == 0)
54                         return id;
55                 id++;
56         }
57         return NULL;
58 }
59
60 static int i2c_device_match(struct device *dev, struct device_driver *drv)
61 {
62         struct i2c_client       *client = to_i2c_client(dev);
63         struct i2c_driver       *driver = to_i2c_driver(drv);
64
65         /* make legacy i2c drivers bypass driver model probing entirely;
66          * such drivers scan each i2c adapter/bus themselves.
67          */
68         if (!is_newstyle_driver(driver))
69                 return 0;
70
71         /* match on an id table if there is one */
72         if (driver->id_table)
73                 return i2c_match_id(driver->id_table, client) != NULL;
74
75         return 0;
76 }
77
78 #ifdef  CONFIG_HOTPLUG
79
80 /* uevent helps with hotplug: modprobe -q $(MODALIAS) */
81 static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env)
82 {
83         struct i2c_client       *client = to_i2c_client(dev);
84
85         /* by definition, legacy drivers can't hotplug */
86         if (dev->driver)
87                 return 0;
88
89         if (add_uevent_var(env, "MODALIAS=%s%s",
90                            I2C_MODULE_PREFIX, client->name))
91                 return -ENOMEM;
92         dev_dbg(dev, "uevent\n");
93         return 0;
94 }
95
96 #else
97 #define i2c_device_uevent       NULL
98 #endif  /* CONFIG_HOTPLUG */
99
100 static int i2c_device_probe(struct device *dev)
101 {
102         struct i2c_client       *client = to_i2c_client(dev);
103         struct i2c_driver       *driver = to_i2c_driver(dev->driver);
104         int status;
105
106         if (!driver->probe || !driver->id_table)
107                 return -ENODEV;
108         client->driver = driver;
109         dev_dbg(dev, "probe\n");
110
111         status = driver->probe(client, i2c_match_id(driver->id_table, client));
112         if (status)
113                 client->driver = NULL;
114         return status;
115 }
116
117 static int i2c_device_remove(struct device *dev)
118 {
119         struct i2c_client       *client = to_i2c_client(dev);
120         struct i2c_driver       *driver;
121         int                     status;
122
123         if (!dev->driver)
124                 return 0;
125
126         driver = to_i2c_driver(dev->driver);
127         if (driver->remove) {
128                 dev_dbg(dev, "remove\n");
129                 status = driver->remove(client);
130         } else {
131                 dev->driver = NULL;
132                 status = 0;
133         }
134         if (status == 0)
135                 client->driver = NULL;
136         return status;
137 }
138
139 static void i2c_device_shutdown(struct device *dev)
140 {
141         struct i2c_driver *driver;
142
143         if (!dev->driver)
144                 return;
145         driver = to_i2c_driver(dev->driver);
146         if (driver->shutdown)
147                 driver->shutdown(to_i2c_client(dev));
148 }
149
150 static int i2c_device_suspend(struct device * dev, pm_message_t mesg)
151 {
152         struct i2c_driver *driver;
153
154         if (!dev->driver)
155                 return 0;
156         driver = to_i2c_driver(dev->driver);
157         if (!driver->suspend)
158                 return 0;
159         return driver->suspend(to_i2c_client(dev), mesg);
160 }
161
162 static int i2c_device_resume(struct device * dev)
163 {
164         struct i2c_driver *driver;
165
166         if (!dev->driver)
167                 return 0;
168         driver = to_i2c_driver(dev->driver);
169         if (!driver->resume)
170                 return 0;
171         return driver->resume(to_i2c_client(dev));
172 }
173
174 static void i2c_client_release(struct device *dev)
175 {
176         struct i2c_client *client = to_i2c_client(dev);
177         complete(&client->released);
178 }
179
180 static void i2c_client_dev_release(struct device *dev)
181 {
182         kfree(to_i2c_client(dev));
183 }
184
185 static ssize_t show_client_name(struct device *dev, struct device_attribute *attr, char *buf)
186 {
187         struct i2c_client *client = to_i2c_client(dev);
188         return sprintf(buf, "%s\n", client->name);
189 }
190
191 static ssize_t show_modalias(struct device *dev, struct device_attribute *attr, char *buf)
192 {
193         struct i2c_client *client = to_i2c_client(dev);
194         return sprintf(buf, "%s%s\n", I2C_MODULE_PREFIX, client->name);
195 }
196
197 static struct device_attribute i2c_dev_attrs[] = {
198         __ATTR(name, S_IRUGO, show_client_name, NULL),
199         /* modalias helps coldplug:  modprobe $(cat .../modalias) */
200         __ATTR(modalias, S_IRUGO, show_modalias, NULL),
201         { },
202 };
203
204 struct bus_type i2c_bus_type = {
205         .name           = "i2c",
206         .dev_attrs      = i2c_dev_attrs,
207         .match          = i2c_device_match,
208         .uevent         = i2c_device_uevent,
209         .probe          = i2c_device_probe,
210         .remove         = i2c_device_remove,
211         .shutdown       = i2c_device_shutdown,
212         .suspend        = i2c_device_suspend,
213         .resume         = i2c_device_resume,
214 };
215 EXPORT_SYMBOL_GPL(i2c_bus_type);
216
217
218 /**
219  * i2c_verify_client - return parameter as i2c_client, or NULL
220  * @dev: device, probably from some driver model iterator
221  *
222  * When traversing the driver model tree, perhaps using driver model
223  * iterators like @device_for_each_child(), you can't assume very much
224  * about the nodes you find.  Use this function to avoid oopses caused
225  * by wrongly treating some non-I2C device as an i2c_client.
226  */
227 struct i2c_client *i2c_verify_client(struct device *dev)
228 {
229         return (dev->bus == &i2c_bus_type)
230                         ? to_i2c_client(dev)
231                         : NULL;
232 }
233 EXPORT_SYMBOL(i2c_verify_client);
234
235
236 /**
237  * i2c_new_device - instantiate an i2c device for use with a new style driver
238  * @adap: the adapter managing the device
239  * @info: describes one I2C device; bus_num is ignored
240  * Context: can sleep
241  *
242  * Create a device to work with a new style i2c driver, where binding is
243  * handled through driver model probe()/remove() methods.  This call is not
244  * appropriate for use by mainboad initialization logic, which usually runs
245  * during an arch_initcall() long before any i2c_adapter could exist.
246  *
247  * This returns the new i2c client, which may be saved for later use with
248  * i2c_unregister_device(); or NULL to indicate an error.
249  */
250 struct i2c_client *
251 i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
252 {
253         struct i2c_client       *client;
254         int                     status;
255
256         client = kzalloc(sizeof *client, GFP_KERNEL);
257         if (!client)
258                 return NULL;
259
260         client->adapter = adap;
261
262         client->dev.platform_data = info->platform_data;
263         device_init_wakeup(&client->dev, info->flags & I2C_CLIENT_WAKE);
264
265         client->flags = info->flags & ~I2C_CLIENT_WAKE;
266         client->addr = info->addr;
267         client->irq = info->irq;
268
269         strlcpy(client->name, info->type, sizeof(client->name));
270
271         /* a new style driver may be bound to this device when we
272          * return from this function, or any later moment (e.g. maybe
273          * hotplugging will load the driver module).  and the device
274          * refcount model is the standard driver model one.
275          */
276         status = i2c_attach_client(client);
277         if (status < 0) {
278                 kfree(client);
279                 client = NULL;
280         }
281         return client;
282 }
283 EXPORT_SYMBOL_GPL(i2c_new_device);
284
285
286 /**
287  * i2c_unregister_device - reverse effect of i2c_new_device()
288  * @client: value returned from i2c_new_device()
289  * Context: can sleep
290  */
291 void i2c_unregister_device(struct i2c_client *client)
292 {
293         struct i2c_adapter      *adapter = client->adapter;
294         struct i2c_driver       *driver = client->driver;
295
296         if (driver && !is_newstyle_driver(driver)) {
297                 dev_err(&client->dev, "can't unregister devices "
298                         "with legacy drivers\n");
299                 WARN_ON(1);
300                 return;
301         }
302
303         mutex_lock(&adapter->clist_lock);
304         list_del(&client->list);
305         mutex_unlock(&adapter->clist_lock);
306
307         device_unregister(&client->dev);
308 }
309 EXPORT_SYMBOL_GPL(i2c_unregister_device);
310
311
312 static const struct i2c_device_id dummy_id[] = {
313         { "dummy", 0 },
314         { },
315 };
316
317 static int dummy_probe(struct i2c_client *client,
318                        const struct i2c_device_id *id)
319 {
320         return 0;
321 }
322
323 static int dummy_remove(struct i2c_client *client)
324 {
325         return 0;
326 }
327
328 static struct i2c_driver dummy_driver = {
329         .driver.name    = "dummy",
330         .probe          = dummy_probe,
331         .remove         = dummy_remove,
332         .id_table       = dummy_id,
333 };
334
335 /**
336  * i2c_new_dummy - return a new i2c device bound to a dummy driver
337  * @adapter: the adapter managing the device
338  * @address: seven bit address to be used
339  * Context: can sleep
340  *
341  * This returns an I2C client bound to the "dummy" driver, intended for use
342  * with devices that consume multiple addresses.  Examples of such chips
343  * include various EEPROMS (like 24c04 and 24c08 models).
344  *
345  * These dummy devices have two main uses.  First, most I2C and SMBus calls
346  * except i2c_transfer() need a client handle; the dummy will be that handle.
347  * And second, this prevents the specified address from being bound to a
348  * different driver.
349  *
350  * This returns the new i2c client, which should be saved for later use with
351  * i2c_unregister_device(); or NULL to indicate an error.
352  */
353 struct i2c_client *
354 i2c_new_dummy(struct i2c_adapter *adapter, u16 address)
355 {
356         struct i2c_board_info info = {
357                 I2C_BOARD_INFO("dummy", address),
358         };
359
360         return i2c_new_device(adapter, &info);
361 }
362 EXPORT_SYMBOL_GPL(i2c_new_dummy);
363
364 /* ------------------------------------------------------------------------- */
365
366 /* I2C bus adapters -- one roots each I2C or SMBUS segment */
367
368 static void i2c_adapter_dev_release(struct device *dev)
369 {
370         struct i2c_adapter *adap = to_i2c_adapter(dev);
371         complete(&adap->dev_released);
372 }
373
374 static ssize_t
375 show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf)
376 {
377         struct i2c_adapter *adap = to_i2c_adapter(dev);
378         return sprintf(buf, "%s\n", adap->name);
379 }
380
381 static struct device_attribute i2c_adapter_attrs[] = {
382         __ATTR(name, S_IRUGO, show_adapter_name, NULL),
383         { },
384 };
385
386 static struct class i2c_adapter_class = {
387         .owner                  = THIS_MODULE,
388         .name                   = "i2c-adapter",
389         .dev_attrs              = i2c_adapter_attrs,
390 };
391
392 static void i2c_scan_static_board_info(struct i2c_adapter *adapter)
393 {
394         struct i2c_devinfo      *devinfo;
395
396         mutex_lock(&__i2c_board_lock);
397         list_for_each_entry(devinfo, &__i2c_board_list, list) {
398                 if (devinfo->busnum == adapter->nr
399                                 && !i2c_new_device(adapter,
400                                                 &devinfo->board_info))
401                         printk(KERN_ERR "i2c-core: can't create i2c%d-%04x\n",
402                                 i2c_adapter_id(adapter),
403                                 devinfo->board_info.addr);
404         }
405         mutex_unlock(&__i2c_board_lock);
406 }
407
408 static int i2c_do_add_adapter(struct device_driver *d, void *data)
409 {
410         struct i2c_driver *driver = to_i2c_driver(d);
411         struct i2c_adapter *adap = data;
412
413         if (driver->attach_adapter) {
414                 /* We ignore the return code; if it fails, too bad */
415                 driver->attach_adapter(adap);
416         }
417         return 0;
418 }
419
420 static int i2c_register_adapter(struct i2c_adapter *adap)
421 {
422         int res = 0, dummy;
423
424         mutex_init(&adap->bus_lock);
425         mutex_init(&adap->clist_lock);
426         INIT_LIST_HEAD(&adap->clients);
427
428         mutex_lock(&core_lock);
429
430         /* Add the adapter to the driver core.
431          * If the parent pointer is not set up,
432          * we add this adapter to the host bus.
433          */
434         if (adap->dev.parent == NULL) {
435                 adap->dev.parent = &platform_bus;
436                 pr_debug("I2C adapter driver [%s] forgot to specify "
437                          "physical device\n", adap->name);
438         }
439         sprintf(adap->dev.bus_id, "i2c-%d", adap->nr);
440         adap->dev.release = &i2c_adapter_dev_release;
441         adap->dev.class = &i2c_adapter_class;
442         res = device_register(&adap->dev);
443         if (res)
444                 goto out_list;
445
446         dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
447
448         /* create pre-declared device nodes for new-style drivers */
449         if (adap->nr < __i2c_first_dynamic_bus_num)
450                 i2c_scan_static_board_info(adap);
451
452         /* let legacy drivers scan this bus for matching devices */
453         dummy = bus_for_each_drv(&i2c_bus_type, NULL, adap,
454                                  i2c_do_add_adapter);
455
456 out_unlock:
457         mutex_unlock(&core_lock);
458         return res;
459
460 out_list:
461         idr_remove(&i2c_adapter_idr, adap->nr);
462         goto out_unlock;
463 }
464
465 /**
466  * i2c_add_adapter - declare i2c adapter, use dynamic bus number
467  * @adapter: the adapter to add
468  * Context: can sleep
469  *
470  * This routine is used to declare an I2C adapter when its bus number
471  * doesn't matter.  Examples: for I2C adapters dynamically added by
472  * USB links or PCI plugin cards.
473  *
474  * When this returns zero, a new bus number was allocated and stored
475  * in adap->nr, and the specified adapter became available for clients.
476  * Otherwise, a negative errno value is returned.
477  */
478 int i2c_add_adapter(struct i2c_adapter *adapter)
479 {
480         int     id, res = 0;
481
482 retry:
483         if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
484                 return -ENOMEM;
485
486         mutex_lock(&core_lock);
487         /* "above" here means "above or equal to", sigh */
488         res = idr_get_new_above(&i2c_adapter_idr, adapter,
489                                 __i2c_first_dynamic_bus_num, &id);
490         mutex_unlock(&core_lock);
491
492         if (res < 0) {
493                 if (res == -EAGAIN)
494                         goto retry;
495                 return res;
496         }
497
498         adapter->nr = id;
499         return i2c_register_adapter(adapter);
500 }
501 EXPORT_SYMBOL(i2c_add_adapter);
502
503 /**
504  * i2c_add_numbered_adapter - declare i2c adapter, use static bus number
505  * @adap: the adapter to register (with adap->nr initialized)
506  * Context: can sleep
507  *
508  * This routine is used to declare an I2C adapter when its bus number
509  * matters.  For example, use it for I2C adapters from system-on-chip CPUs,
510  * or otherwise built in to the system's mainboard, and where i2c_board_info
511  * is used to properly configure I2C devices.
512  *
513  * If no devices have pre-been declared for this bus, then be sure to
514  * register the adapter before any dynamically allocated ones.  Otherwise
515  * the required bus ID may not be available.
516  *
517  * When this returns zero, the specified adapter became available for
518  * clients using the bus number provided in adap->nr.  Also, the table
519  * of I2C devices pre-declared using i2c_register_board_info() is scanned,
520  * and the appropriate driver model device nodes are created.  Otherwise, a
521  * negative errno value is returned.
522  */
523 int i2c_add_numbered_adapter(struct i2c_adapter *adap)
524 {
525         int     id;
526         int     status;
527
528         if (adap->nr & ~MAX_ID_MASK)
529                 return -EINVAL;
530
531 retry:
532         if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
533                 return -ENOMEM;
534
535         mutex_lock(&core_lock);
536         /* "above" here means "above or equal to", sigh;
537          * we need the "equal to" result to force the result
538          */
539         status = idr_get_new_above(&i2c_adapter_idr, adap, adap->nr, &id);
540         if (status == 0 && id != adap->nr) {
541                 status = -EBUSY;
542                 idr_remove(&i2c_adapter_idr, id);
543         }
544         mutex_unlock(&core_lock);
545         if (status == -EAGAIN)
546                 goto retry;
547
548         if (status == 0)
549                 status = i2c_register_adapter(adap);
550         return status;
551 }
552 EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
553
554 static int i2c_do_del_adapter(struct device_driver *d, void *data)
555 {
556         struct i2c_driver *driver = to_i2c_driver(d);
557         struct i2c_adapter *adapter = data;
558         int res;
559
560         if (!driver->detach_adapter)
561                 return 0;
562         res = driver->detach_adapter(adapter);
563         if (res)
564                 dev_err(&adapter->dev, "detach_adapter failed (%d) "
565                         "for driver [%s]\n", res, driver->driver.name);
566         return res;
567 }
568
569 /**
570  * i2c_del_adapter - unregister I2C adapter
571  * @adap: the adapter being unregistered
572  * Context: can sleep
573  *
574  * This unregisters an I2C adapter which was previously registered
575  * by @i2c_add_adapter or @i2c_add_numbered_adapter.
576  */
577 int i2c_del_adapter(struct i2c_adapter *adap)
578 {
579         struct i2c_client *client, *_n;
580         int res = 0;
581
582         mutex_lock(&core_lock);
583
584         /* First make sure that this adapter was ever added */
585         if (idr_find(&i2c_adapter_idr, adap->nr) != adap) {
586                 pr_debug("i2c-core: attempting to delete unregistered "
587                          "adapter [%s]\n", adap->name);
588                 res = -EINVAL;
589                 goto out_unlock;
590         }
591
592         /* Tell drivers about this removal */
593         res = bus_for_each_drv(&i2c_bus_type, NULL, adap,
594                                i2c_do_del_adapter);
595         if (res)
596                 goto out_unlock;
597
598         /* detach any active clients. This must be done first, because
599          * it can fail; in which case we give up. */
600         list_for_each_entry_safe(client, _n, &adap->clients, list) {
601                 struct i2c_driver       *driver;
602
603                 driver = client->driver;
604
605                 /* new style, follow standard driver model */
606                 if (!driver || is_newstyle_driver(driver)) {
607                         i2c_unregister_device(client);
608                         continue;
609                 }
610
611                 /* legacy drivers create and remove clients themselves */
612                 if ((res = driver->detach_client(client))) {
613                         dev_err(&adap->dev, "detach_client failed for client "
614                                 "[%s] at address 0x%02x\n", client->name,
615                                 client->addr);
616                         goto out_unlock;
617                 }
618         }
619
620         /* clean up the sysfs representation */
621         init_completion(&adap->dev_released);
622         device_unregister(&adap->dev);
623
624         /* wait for sysfs to drop all references */
625         wait_for_completion(&adap->dev_released);
626
627         /* free bus id */
628         idr_remove(&i2c_adapter_idr, adap->nr);
629
630         dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
631
632  out_unlock:
633         mutex_unlock(&core_lock);
634         return res;
635 }
636 EXPORT_SYMBOL(i2c_del_adapter);
637
638
639 /* ------------------------------------------------------------------------- */
640
641 static int __attach_adapter(struct device *dev, void *data)
642 {
643         struct i2c_adapter *adapter = to_i2c_adapter(dev);
644         struct i2c_driver *driver = data;
645
646         driver->attach_adapter(adapter);
647
648         return 0;
649 }
650
651 /*
652  * An i2c_driver is used with one or more i2c_client (device) nodes to access
653  * i2c slave chips, on a bus instance associated with some i2c_adapter.  There
654  * are two models for binding the driver to its device:  "new style" drivers
655  * follow the standard Linux driver model and just respond to probe() calls
656  * issued if the driver core sees they match(); "legacy" drivers create device
657  * nodes themselves.
658  */
659
660 int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
661 {
662         int res;
663
664         /* new style driver methods can't mix with legacy ones */
665         if (is_newstyle_driver(driver)) {
666                 if (driver->attach_adapter || driver->detach_adapter
667                                 || driver->detach_client) {
668                         printk(KERN_WARNING
669                                         "i2c-core: driver [%s] is confused\n",
670                                         driver->driver.name);
671                         return -EINVAL;
672                 }
673         }
674
675         /* add the driver to the list of i2c drivers in the driver core */
676         driver->driver.owner = owner;
677         driver->driver.bus = &i2c_bus_type;
678
679         /* for new style drivers, when registration returns the driver core
680          * will have called probe() for all matching-but-unbound devices.
681          */
682         res = driver_register(&driver->driver);
683         if (res)
684                 return res;
685
686         mutex_lock(&core_lock);
687
688         pr_debug("i2c-core: driver [%s] registered\n", driver->driver.name);
689
690         /* legacy drivers scan i2c busses directly */
691         if (driver->attach_adapter)
692                 class_for_each_device(&i2c_adapter_class, driver,
693                                       __attach_adapter);
694
695         mutex_unlock(&core_lock);
696         return 0;
697 }
698 EXPORT_SYMBOL(i2c_register_driver);
699
700 static int __detach_adapter(struct device *dev, void *data)
701 {
702         struct i2c_adapter *adapter = to_i2c_adapter(dev);
703         struct i2c_driver *driver = data;
704
705         /* Have a look at each adapter, if clients of this driver are still
706          * attached. If so, detach them to be able to kill the driver
707          * afterwards.
708          */
709         if (driver->detach_adapter) {
710                 if (driver->detach_adapter(adapter))
711                         dev_err(&adapter->dev,
712                                 "detach_adapter failed for driver [%s]\n",
713                                 driver->driver.name);
714         } else {
715                 struct i2c_client *client, *_n;
716
717                 list_for_each_entry_safe(client, _n, &adapter->clients, list) {
718                         if (client->driver != driver)
719                                 continue;
720                         dev_dbg(&adapter->dev,
721                                 "detaching client [%s] at 0x%02x\n",
722                                 client->name, client->addr);
723                         if (driver->detach_client(client))
724                                 dev_err(&adapter->dev, "detach_client "
725                                         "failed for client [%s] at 0x%02x\n",
726                                         client->name, client->addr);
727                 }
728         }
729
730         return 0;
731 }
732
733 /**
734  * i2c_del_driver - unregister I2C driver
735  * @driver: the driver being unregistered
736  * Context: can sleep
737  */
738 void i2c_del_driver(struct i2c_driver *driver)
739 {
740         mutex_lock(&core_lock);
741
742         /* legacy driver? */
743         if (!is_newstyle_driver(driver))
744                 class_for_each_device(&i2c_adapter_class, driver,
745                                       __detach_adapter);
746
747         driver_unregister(&driver->driver);
748         pr_debug("i2c-core: driver [%s] unregistered\n", driver->driver.name);
749
750         mutex_unlock(&core_lock);
751 }
752 EXPORT_SYMBOL(i2c_del_driver);
753
754 /* ------------------------------------------------------------------------- */
755
756 static int __i2c_check_addr(struct device *dev, void *addrp)
757 {
758         struct i2c_client       *client = i2c_verify_client(dev);
759         int                     addr = *(int *)addrp;
760
761         if (client && client->addr == addr)
762                 return -EBUSY;
763         return 0;
764 }
765
766 static int i2c_check_addr(struct i2c_adapter *adapter, int addr)
767 {
768         return device_for_each_child(&adapter->dev, &addr, __i2c_check_addr);
769 }
770
771 int i2c_attach_client(struct i2c_client *client)
772 {
773         struct i2c_adapter *adapter = client->adapter;
774         int res = 0;
775
776         client->dev.parent = &client->adapter->dev;
777         client->dev.bus = &i2c_bus_type;
778
779         if (client->driver)
780                 client->dev.driver = &client->driver->driver;
781
782         if (client->driver && !is_newstyle_driver(client->driver)) {
783                 client->dev.release = i2c_client_release;
784                 client->dev.uevent_suppress = 1;
785         } else
786                 client->dev.release = i2c_client_dev_release;
787
788         snprintf(&client->dev.bus_id[0], sizeof(client->dev.bus_id),
789                 "%d-%04x", i2c_adapter_id(adapter), client->addr);
790         res = device_register(&client->dev);
791         if (res)
792                 goto out_err;
793
794         mutex_lock(&adapter->clist_lock);
795         list_add_tail(&client->list, &adapter->clients);
796         mutex_unlock(&adapter->clist_lock);
797
798         dev_dbg(&adapter->dev, "client [%s] registered with bus id %s\n",
799                 client->name, client->dev.bus_id);
800
801         if (adapter->client_register)  {
802                 if (adapter->client_register(client)) {
803                         dev_dbg(&adapter->dev, "client_register "
804                                 "failed for client [%s] at 0x%02x\n",
805                                 client->name, client->addr);
806                 }
807         }
808
809         return 0;
810
811 out_err:
812         dev_err(&adapter->dev, "Failed to attach i2c client %s at 0x%02x "
813                 "(%d)\n", client->name, client->addr, res);
814         return res;
815 }
816 EXPORT_SYMBOL(i2c_attach_client);
817
818 int i2c_detach_client(struct i2c_client *client)
819 {
820         struct i2c_adapter *adapter = client->adapter;
821         int res = 0;
822
823         if (adapter->client_unregister)  {
824                 res = adapter->client_unregister(client);
825                 if (res) {
826                         dev_err(&client->dev,
827                                 "client_unregister [%s] failed, "
828                                 "client not detached\n", client->name);
829                         goto out;
830                 }
831         }
832
833         mutex_lock(&adapter->clist_lock);
834         list_del(&client->list);
835         mutex_unlock(&adapter->clist_lock);
836
837         init_completion(&client->released);
838         device_unregister(&client->dev);
839         wait_for_completion(&client->released);
840
841  out:
842         return res;
843 }
844 EXPORT_SYMBOL(i2c_detach_client);
845
846 /**
847  * i2c_use_client - increments the reference count of the i2c client structure
848  * @client: the client being referenced
849  *
850  * Each live reference to a client should be refcounted. The driver model does
851  * that automatically as part of driver binding, so that most drivers don't
852  * need to do this explicitly: they hold a reference until they're unbound
853  * from the device.
854  *
855  * A pointer to the client with the incremented reference counter is returned.
856  */
857 struct i2c_client *i2c_use_client(struct i2c_client *client)
858 {
859         if (client && get_device(&client->dev))
860                 return client;
861         return NULL;
862 }
863 EXPORT_SYMBOL(i2c_use_client);
864
865 /**
866  * i2c_release_client - release a use of the i2c client structure
867  * @client: the client being no longer referenced
868  *
869  * Must be called when a user of a client is finished with it.
870  */
871 void i2c_release_client(struct i2c_client *client)
872 {
873         if (client)
874                 put_device(&client->dev);
875 }
876 EXPORT_SYMBOL(i2c_release_client);
877
878 struct i2c_cmd_arg {
879         unsigned        cmd;
880         void            *arg;
881 };
882
883 static int i2c_cmd(struct device *dev, void *_arg)
884 {
885         struct i2c_client       *client = i2c_verify_client(dev);
886         struct i2c_cmd_arg      *arg = _arg;
887
888         if (client && client->driver && client->driver->command)
889                 client->driver->command(client, arg->cmd, arg->arg);
890         return 0;
891 }
892
893 void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg)
894 {
895         struct i2c_cmd_arg      cmd_arg;
896
897         cmd_arg.cmd = cmd;
898         cmd_arg.arg = arg;
899         device_for_each_child(&adap->dev, &cmd_arg, i2c_cmd);
900 }
901 EXPORT_SYMBOL(i2c_clients_command);
902
903 static int __init i2c_init(void)
904 {
905         int retval;
906
907         retval = bus_register(&i2c_bus_type);
908         if (retval)
909                 return retval;
910         retval = class_register(&i2c_adapter_class);
911         if (retval)
912                 goto bus_err;
913         retval = i2c_add_driver(&dummy_driver);
914         if (retval)
915                 goto class_err;
916         return 0;
917
918 class_err:
919         class_unregister(&i2c_adapter_class);
920 bus_err:
921         bus_unregister(&i2c_bus_type);
922         return retval;
923 }
924
925 static void __exit i2c_exit(void)
926 {
927         i2c_del_driver(&dummy_driver);
928         class_unregister(&i2c_adapter_class);
929         bus_unregister(&i2c_bus_type);
930 }
931
932 subsys_initcall(i2c_init);
933 module_exit(i2c_exit);
934
935 /* ----------------------------------------------------
936  * the functional interface to the i2c busses.
937  * ----------------------------------------------------
938  */
939
940 /**
941  * i2c_transfer - execute a single or combined I2C message
942  * @adap: Handle to I2C bus
943  * @msgs: One or more messages to execute before STOP is issued to
944  *      terminate the operation; each message begins with a START.
945  * @num: Number of messages to be executed.
946  *
947  * Returns negative errno, else the number of messages executed.
948  *
949  * Note that there is no requirement that each message be sent to
950  * the same slave address, although that is the most common model.
951  */
952 int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg *msgs, int num)
953 {
954         int ret;
955
956         /* REVISIT the fault reporting model here is weak:
957          *
958          *  - When we get an error after receiving N bytes from a slave,
959          *    there is no way to report "N".
960          *
961          *  - When we get a NAK after transmitting N bytes to a slave,
962          *    there is no way to report "N" ... or to let the master
963          *    continue executing the rest of this combined message, if
964          *    that's the appropriate response.
965          *
966          *  - When for example "num" is two and we successfully complete
967          *    the first message but get an error part way through the
968          *    second, it's unclear whether that should be reported as
969          *    one (discarding status on the second message) or errno
970          *    (discarding status on the first one).
971          */
972
973         if (adap->algo->master_xfer) {
974 #ifdef DEBUG
975                 for (ret = 0; ret < num; ret++) {
976                         dev_dbg(&adap->dev, "master_xfer[%d] %c, addr=0x%02x, "
977                                 "len=%d%s\n", ret, (msgs[ret].flags & I2C_M_RD)
978                                 ? 'R' : 'W', msgs[ret].addr, msgs[ret].len,
979                                 (msgs[ret].flags & I2C_M_RECV_LEN) ? "+" : "");
980                 }
981 #endif
982
983                 if (in_atomic() || irqs_disabled()) {
984                         ret = mutex_trylock(&adap->bus_lock);
985                         if (!ret)
986                                 /* I2C activity is ongoing. */
987                                 return -EAGAIN;
988                 } else {
989                         mutex_lock_nested(&adap->bus_lock, adap->level);
990                 }
991
992                 ret = adap->algo->master_xfer(adap,msgs,num);
993                 mutex_unlock(&adap->bus_lock);
994
995                 return ret;
996         } else {
997                 dev_dbg(&adap->dev, "I2C level transfers not supported\n");
998                 return -EOPNOTSUPP;
999         }
1000 }
1001 EXPORT_SYMBOL(i2c_transfer);
1002
1003 /**
1004  * i2c_master_send - issue a single I2C message in master transmit mode
1005  * @client: Handle to slave device
1006  * @buf: Data that will be written to the slave
1007  * @count: How many bytes to write
1008  *
1009  * Returns negative errno, or else the number of bytes written.
1010  */
1011 int i2c_master_send(struct i2c_client *client,const char *buf ,int count)
1012 {
1013         int ret;
1014         struct i2c_adapter *adap=client->adapter;
1015         struct i2c_msg msg;
1016
1017         msg.addr = client->addr;
1018         msg.flags = client->flags & I2C_M_TEN;
1019         msg.len = count;
1020         msg.buf = (char *)buf;
1021
1022         ret = i2c_transfer(adap, &msg, 1);
1023
1024         /* If everything went ok (i.e. 1 msg transmitted), return #bytes
1025            transmitted, else error code. */
1026         return (ret == 1) ? count : ret;
1027 }
1028 EXPORT_SYMBOL(i2c_master_send);
1029
1030 /**
1031  * i2c_master_recv - issue a single I2C message in master receive mode
1032  * @client: Handle to slave device
1033  * @buf: Where to store data read from slave
1034  * @count: How many bytes to read
1035  *
1036  * Returns negative errno, or else the number of bytes read.
1037  */
1038 int i2c_master_recv(struct i2c_client *client, char *buf ,int count)
1039 {
1040         struct i2c_adapter *adap=client->adapter;
1041         struct i2c_msg msg;
1042         int ret;
1043
1044         msg.addr = client->addr;
1045         msg.flags = client->flags & I2C_M_TEN;
1046         msg.flags |= I2C_M_RD;
1047         msg.len = count;
1048         msg.buf = buf;
1049
1050         ret = i2c_transfer(adap, &msg, 1);
1051
1052         /* If everything went ok (i.e. 1 msg transmitted), return #bytes
1053            transmitted, else error code. */
1054         return (ret == 1) ? count : ret;
1055 }
1056 EXPORT_SYMBOL(i2c_master_recv);
1057
1058 /* ----------------------------------------------------
1059  * the i2c address scanning function
1060  * Will not work for 10-bit addresses!
1061  * ----------------------------------------------------
1062  */
1063 static int i2c_probe_address(struct i2c_adapter *adapter, int addr, int kind,
1064                              int (*found_proc) (struct i2c_adapter *, int, int))
1065 {
1066         int err;
1067
1068         /* Make sure the address is valid */
1069         if (addr < 0x03 || addr > 0x77) {
1070                 dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
1071                          addr);
1072                 return -EINVAL;
1073         }
1074
1075         /* Skip if already in use */
1076         if (i2c_check_addr(adapter, addr))
1077                 return 0;
1078
1079         /* Make sure there is something at this address, unless forced */
1080         if (kind < 0) {
1081                 if (i2c_smbus_xfer(adapter, addr, 0, 0, 0,
1082                                    I2C_SMBUS_QUICK, NULL) < 0)
1083                         return 0;
1084
1085                 /* prevent 24RF08 corruption */
1086                 if ((addr & ~0x0f) == 0x50)
1087                         i2c_smbus_xfer(adapter, addr, 0, 0, 0,
1088                                        I2C_SMBUS_QUICK, NULL);
1089         }
1090
1091         /* Finally call the custom detection function */
1092         err = found_proc(adapter, addr, kind);
1093         /* -ENODEV can be returned if there is a chip at the given address
1094            but it isn't supported by this chip driver. We catch it here as
1095            this isn't an error. */
1096         if (err == -ENODEV)
1097                 err = 0;
1098
1099         if (err)
1100                 dev_warn(&adapter->dev, "Client creation failed at 0x%x (%d)\n",
1101                          addr, err);
1102         return err;
1103 }
1104
1105 int i2c_probe(struct i2c_adapter *adapter,
1106               const struct i2c_client_address_data *address_data,
1107               int (*found_proc) (struct i2c_adapter *, int, int))
1108 {
1109         int i, err;
1110         int adap_id = i2c_adapter_id(adapter);
1111
1112         /* Force entries are done first, and are not affected by ignore
1113            entries */
1114         if (address_data->forces) {
1115                 const unsigned short * const *forces = address_data->forces;
1116                 int kind;
1117
1118                 for (kind = 0; forces[kind]; kind++) {
1119                         for (i = 0; forces[kind][i] != I2C_CLIENT_END;
1120                              i += 2) {
1121                                 if (forces[kind][i] == adap_id
1122                                  || forces[kind][i] == ANY_I2C_BUS) {
1123                                         dev_dbg(&adapter->dev, "found force "
1124                                                 "parameter for adapter %d, "
1125                                                 "addr 0x%02x, kind %d\n",
1126                                                 adap_id, forces[kind][i + 1],
1127                                                 kind);
1128                                         err = i2c_probe_address(adapter,
1129                                                 forces[kind][i + 1],
1130                                                 kind, found_proc);
1131                                         if (err)
1132                                                 return err;
1133                                 }
1134                         }
1135                 }
1136         }
1137
1138         /* Stop here if we can't use SMBUS_QUICK */
1139         if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) {
1140                 if (address_data->probe[0] == I2C_CLIENT_END
1141                  && address_data->normal_i2c[0] == I2C_CLIENT_END)
1142                         return 0;
1143
1144                 dev_warn(&adapter->dev, "SMBus Quick command not supported, "
1145                          "can't probe for chips\n");
1146                 return -EOPNOTSUPP;
1147         }
1148
1149         /* Probe entries are done second, and are not affected by ignore
1150            entries either */
1151         for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) {
1152                 if (address_data->probe[i] == adap_id
1153                  || address_data->probe[i] == ANY_I2C_BUS) {
1154                         dev_dbg(&adapter->dev, "found probe parameter for "
1155                                 "adapter %d, addr 0x%02x\n", adap_id,
1156                                 address_data->probe[i + 1]);
1157                         err = i2c_probe_address(adapter,
1158                                                 address_data->probe[i + 1],
1159                                                 -1, found_proc);
1160                         if (err)
1161                                 return err;
1162                 }
1163         }
1164
1165         /* Normal entries are done last, unless shadowed by an ignore entry */
1166         for (i = 0; address_data->normal_i2c[i] != I2C_CLIENT_END; i += 1) {
1167                 int j, ignore;
1168
1169                 ignore = 0;
1170                 for (j = 0; address_data->ignore[j] != I2C_CLIENT_END;
1171                      j += 2) {
1172                         if ((address_data->ignore[j] == adap_id ||
1173                              address_data->ignore[j] == ANY_I2C_BUS)
1174                          && address_data->ignore[j + 1]
1175                             == address_data->normal_i2c[i]) {
1176                                 dev_dbg(&adapter->dev, "found ignore "
1177                                         "parameter for adapter %d, "
1178                                         "addr 0x%02x\n", adap_id,
1179                                         address_data->ignore[j + 1]);
1180                                 ignore = 1;
1181                                 break;
1182                         }
1183                 }
1184                 if (ignore)
1185                         continue;
1186
1187                 dev_dbg(&adapter->dev, "found normal entry for adapter %d, "
1188                         "addr 0x%02x\n", adap_id,
1189                         address_data->normal_i2c[i]);
1190                 err = i2c_probe_address(adapter, address_data->normal_i2c[i],
1191                                         -1, found_proc);
1192                 if (err)
1193                         return err;
1194         }
1195
1196         return 0;
1197 }
1198 EXPORT_SYMBOL(i2c_probe);
1199
1200 struct i2c_client *
1201 i2c_new_probed_device(struct i2c_adapter *adap,
1202                       struct i2c_board_info *info,
1203                       unsigned short const *addr_list)
1204 {
1205         int i;
1206
1207         /* Stop here if the bus doesn't support probing */
1208         if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE)) {
1209                 dev_err(&adap->dev, "Probing not supported\n");
1210                 return NULL;
1211         }
1212
1213         for (i = 0; addr_list[i] != I2C_CLIENT_END; i++) {
1214                 /* Check address validity */
1215                 if (addr_list[i] < 0x03 || addr_list[i] > 0x77) {
1216                         dev_warn(&adap->dev, "Invalid 7-bit address "
1217                                  "0x%02x\n", addr_list[i]);
1218                         continue;
1219                 }
1220
1221                 /* Check address availability */
1222                 if (i2c_check_addr(adap, addr_list[i])) {
1223                         dev_dbg(&adap->dev, "Address 0x%02x already in "
1224                                 "use, not probing\n", addr_list[i]);
1225                         continue;
1226                 }
1227
1228                 /* Test address responsiveness
1229                    The default probe method is a quick write, but it is known
1230                    to corrupt the 24RF08 EEPROMs due to a state machine bug,
1231                    and could also irreversibly write-protect some EEPROMs, so
1232                    for address ranges 0x30-0x37 and 0x50-0x5f, we use a byte
1233                    read instead. Also, some bus drivers don't implement
1234                    quick write, so we fallback to a byte read it that case
1235                    too. */
1236                 if ((addr_list[i] & ~0x07) == 0x30
1237                  || (addr_list[i] & ~0x0f) == 0x50
1238                  || !i2c_check_functionality(adap, I2C_FUNC_SMBUS_QUICK)) {
1239                         if (i2c_smbus_xfer(adap, addr_list[i], 0,
1240                                            I2C_SMBUS_READ, 0,
1241                                            I2C_SMBUS_BYTE, NULL) >= 0)
1242                                 break;
1243                 } else {
1244                         if (i2c_smbus_xfer(adap, addr_list[i], 0,
1245                                            I2C_SMBUS_WRITE, 0,
1246                                            I2C_SMBUS_QUICK, NULL) >= 0)
1247                                 break;
1248                 }
1249         }
1250
1251         if (addr_list[i] == I2C_CLIENT_END) {
1252                 dev_dbg(&adap->dev, "Probing failed, no device found\n");
1253                 return NULL;
1254         }
1255
1256         info->addr = addr_list[i];
1257         return i2c_new_device(adap, info);
1258 }
1259 EXPORT_SYMBOL_GPL(i2c_new_probed_device);
1260
1261 struct i2c_adapter* i2c_get_adapter(int id)
1262 {
1263         struct i2c_adapter *adapter;
1264
1265         mutex_lock(&core_lock);
1266         adapter = (struct i2c_adapter *)idr_find(&i2c_adapter_idr, id);
1267         if (adapter && !try_module_get(adapter->owner))
1268                 adapter = NULL;
1269
1270         mutex_unlock(&core_lock);
1271         return adapter;
1272 }
1273 EXPORT_SYMBOL(i2c_get_adapter);
1274
1275 void i2c_put_adapter(struct i2c_adapter *adap)
1276 {
1277         module_put(adap->owner);
1278 }
1279 EXPORT_SYMBOL(i2c_put_adapter);
1280
1281 /* The SMBus parts */
1282
1283 #define POLY    (0x1070U << 3)
1284 static u8
1285 crc8(u16 data)
1286 {
1287         int i;
1288
1289         for(i = 0; i < 8; i++) {
1290                 if (data & 0x8000)
1291                         data = data ^ POLY;
1292                 data = data << 1;
1293         }
1294         return (u8)(data >> 8);
1295 }
1296
1297 /* Incremental CRC8 over count bytes in the array pointed to by p */
1298 static u8 i2c_smbus_pec(u8 crc, u8 *p, size_t count)
1299 {
1300         int i;
1301
1302         for(i = 0; i < count; i++)
1303                 crc = crc8((crc ^ p[i]) << 8);
1304         return crc;
1305 }
1306
1307 /* Assume a 7-bit address, which is reasonable for SMBus */
1308 static u8 i2c_smbus_msg_pec(u8 pec, struct i2c_msg *msg)
1309 {
1310         /* The address will be sent first */
1311         u8 addr = (msg->addr << 1) | !!(msg->flags & I2C_M_RD);
1312         pec = i2c_smbus_pec(pec, &addr, 1);
1313
1314         /* The data buffer follows */
1315         return i2c_smbus_pec(pec, msg->buf, msg->len);
1316 }
1317
1318 /* Used for write only transactions */
1319 static inline void i2c_smbus_add_pec(struct i2c_msg *msg)
1320 {
1321         msg->buf[msg->len] = i2c_smbus_msg_pec(0, msg);
1322         msg->len++;
1323 }
1324
1325 /* Return <0 on CRC error
1326    If there was a write before this read (most cases) we need to take the
1327    partial CRC from the write part into account.
1328    Note that this function does modify the message (we need to decrease the
1329    message length to hide the CRC byte from the caller). */
1330 static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg)
1331 {
1332         u8 rpec = msg->buf[--msg->len];
1333         cpec = i2c_smbus_msg_pec(cpec, msg);
1334
1335         if (rpec != cpec) {
1336                 pr_debug("i2c-core: Bad PEC 0x%02x vs. 0x%02x\n",
1337                         rpec, cpec);
1338                 return -EBADMSG;
1339         }
1340         return 0;
1341 }
1342
1343 /**
1344  * i2c_smbus_read_byte - SMBus "receive byte" protocol
1345  * @client: Handle to slave device
1346  *
1347  * This executes the SMBus "receive byte" protocol, returning negative errno
1348  * else the byte received from the device.
1349  */
1350 s32 i2c_smbus_read_byte(struct i2c_client *client)
1351 {
1352         union i2c_smbus_data data;
1353         int status;
1354
1355         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1356                                 I2C_SMBUS_READ, 0,
1357                                 I2C_SMBUS_BYTE, &data);
1358         return (status < 0) ? status : data.byte;
1359 }
1360 EXPORT_SYMBOL(i2c_smbus_read_byte);
1361
1362 /**
1363  * i2c_smbus_write_byte - SMBus "send byte" protocol
1364  * @client: Handle to slave device
1365  * @value: Byte to be sent
1366  *
1367  * This executes the SMBus "send byte" protocol, returning negative errno
1368  * else zero on success.
1369  */
1370 s32 i2c_smbus_write_byte(struct i2c_client *client, u8 value)
1371 {
1372         return i2c_smbus_xfer(client->adapter,client->addr,client->flags,
1373                               I2C_SMBUS_WRITE, value, I2C_SMBUS_BYTE, NULL);
1374 }
1375 EXPORT_SYMBOL(i2c_smbus_write_byte);
1376
1377 /**
1378  * i2c_smbus_read_byte_data - SMBus "read byte" protocol
1379  * @client: Handle to slave device
1380  * @command: Byte interpreted by slave
1381  *
1382  * This executes the SMBus "read byte" protocol, returning negative errno
1383  * else a data byte received from the device.
1384  */
1385 s32 i2c_smbus_read_byte_data(struct i2c_client *client, u8 command)
1386 {
1387         union i2c_smbus_data data;
1388         int status;
1389
1390         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1391                                 I2C_SMBUS_READ, command,
1392                                 I2C_SMBUS_BYTE_DATA, &data);
1393         return (status < 0) ? status : data.byte;
1394 }
1395 EXPORT_SYMBOL(i2c_smbus_read_byte_data);
1396
1397 /**
1398  * i2c_smbus_write_byte_data - SMBus "write byte" protocol
1399  * @client: Handle to slave device
1400  * @command: Byte interpreted by slave
1401  * @value: Byte being written
1402  *
1403  * This executes the SMBus "write byte" protocol, returning negative errno
1404  * else zero on success.
1405  */
1406 s32 i2c_smbus_write_byte_data(struct i2c_client *client, u8 command, u8 value)
1407 {
1408         union i2c_smbus_data data;
1409         data.byte = value;
1410         return i2c_smbus_xfer(client->adapter,client->addr,client->flags,
1411                               I2C_SMBUS_WRITE,command,
1412                               I2C_SMBUS_BYTE_DATA,&data);
1413 }
1414 EXPORT_SYMBOL(i2c_smbus_write_byte_data);
1415
1416 /**
1417  * i2c_smbus_read_word_data - SMBus "read word" protocol
1418  * @client: Handle to slave device
1419  * @command: Byte interpreted by slave
1420  *
1421  * This executes the SMBus "read word" protocol, returning negative errno
1422  * else a 16-bit unsigned "word" received from the device.
1423  */
1424 s32 i2c_smbus_read_word_data(struct i2c_client *client, u8 command)
1425 {
1426         union i2c_smbus_data data;
1427         int status;
1428
1429         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1430                                 I2C_SMBUS_READ, command,
1431                                 I2C_SMBUS_WORD_DATA, &data);
1432         return (status < 0) ? status : data.word;
1433 }
1434 EXPORT_SYMBOL(i2c_smbus_read_word_data);
1435
1436 /**
1437  * i2c_smbus_write_word_data - SMBus "write word" protocol
1438  * @client: Handle to slave device
1439  * @command: Byte interpreted by slave
1440  * @value: 16-bit "word" being written
1441  *
1442  * This executes the SMBus "write word" protocol, returning negative errno
1443  * else zero on success.
1444  */
1445 s32 i2c_smbus_write_word_data(struct i2c_client *client, u8 command, u16 value)
1446 {
1447         union i2c_smbus_data data;
1448         data.word = value;
1449         return i2c_smbus_xfer(client->adapter,client->addr,client->flags,
1450                               I2C_SMBUS_WRITE,command,
1451                               I2C_SMBUS_WORD_DATA,&data);
1452 }
1453 EXPORT_SYMBOL(i2c_smbus_write_word_data);
1454
1455 /**
1456  * i2c_smbus_read_block_data - SMBus "block read" protocol
1457  * @client: Handle to slave device
1458  * @command: Byte interpreted by slave
1459  * @values: Byte array into which data will be read; big enough to hold
1460  *      the data returned by the slave.  SMBus allows at most 32 bytes.
1461  *
1462  * This executes the SMBus "block read" protocol, returning negative errno
1463  * else the number of data bytes in the slave's response.
1464  *
1465  * Note that using this function requires that the client's adapter support
1466  * the I2C_FUNC_SMBUS_READ_BLOCK_DATA functionality.  Not all adapter drivers
1467  * support this; its emulation through I2C messaging relies on a specific
1468  * mechanism (I2C_M_RECV_LEN) which may not be implemented.
1469  */
1470 s32 i2c_smbus_read_block_data(struct i2c_client *client, u8 command,
1471                               u8 *values)
1472 {
1473         union i2c_smbus_data data;
1474         int status;
1475
1476         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1477                                 I2C_SMBUS_READ, command,
1478                                 I2C_SMBUS_BLOCK_DATA, &data);
1479         if (status)
1480                 return status;
1481
1482         memcpy(values, &data.block[1], data.block[0]);
1483         return data.block[0];
1484 }
1485 EXPORT_SYMBOL(i2c_smbus_read_block_data);
1486
1487 /**
1488  * i2c_smbus_write_block_data - SMBus "block write" protocol
1489  * @client: Handle to slave device
1490  * @command: Byte interpreted by slave
1491  * @length: Size of data block; SMBus allows at most 32 bytes
1492  * @values: Byte array which will be written.
1493  *
1494  * This executes the SMBus "block write" protocol, returning negative errno
1495  * else zero on success.
1496  */
1497 s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command,
1498                                u8 length, const u8 *values)
1499 {
1500         union i2c_smbus_data data;
1501
1502         if (length > I2C_SMBUS_BLOCK_MAX)
1503                 length = I2C_SMBUS_BLOCK_MAX;
1504         data.block[0] = length;
1505         memcpy(&data.block[1], values, length);
1506         return i2c_smbus_xfer(client->adapter,client->addr,client->flags,
1507                               I2C_SMBUS_WRITE,command,
1508                               I2C_SMBUS_BLOCK_DATA,&data);
1509 }
1510 EXPORT_SYMBOL(i2c_smbus_write_block_data);
1511
1512 /* Returns the number of read bytes */
1513 s32 i2c_smbus_read_i2c_block_data(struct i2c_client *client, u8 command,
1514                                   u8 length, u8 *values)
1515 {
1516         union i2c_smbus_data data;
1517         int status;
1518
1519         if (length > I2C_SMBUS_BLOCK_MAX)
1520                 length = I2C_SMBUS_BLOCK_MAX;
1521         data.block[0] = length;
1522         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1523                                 I2C_SMBUS_READ, command,
1524                                 I2C_SMBUS_I2C_BLOCK_DATA, &data);
1525         if (status < 0)
1526                 return status;
1527
1528         memcpy(values, &data.block[1], data.block[0]);
1529         return data.block[0];
1530 }
1531 EXPORT_SYMBOL(i2c_smbus_read_i2c_block_data);
1532
1533 s32 i2c_smbus_write_i2c_block_data(struct i2c_client *client, u8 command,
1534                                    u8 length, const u8 *values)
1535 {
1536         union i2c_smbus_data data;
1537
1538         if (length > I2C_SMBUS_BLOCK_MAX)
1539                 length = I2C_SMBUS_BLOCK_MAX;
1540         data.block[0] = length;
1541         memcpy(data.block + 1, values, length);
1542         return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1543                               I2C_SMBUS_WRITE, command,
1544                               I2C_SMBUS_I2C_BLOCK_DATA, &data);
1545 }
1546 EXPORT_SYMBOL(i2c_smbus_write_i2c_block_data);
1547
1548 /* Simulate a SMBus command using the i2c protocol
1549    No checking of parameters is done!  */
1550 static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr,
1551                                    unsigned short flags,
1552                                    char read_write, u8 command, int size,
1553                                    union i2c_smbus_data * data)
1554 {
1555         /* So we need to generate a series of msgs. In the case of writing, we
1556           need to use only one message; when reading, we need two. We initialize
1557           most things with sane defaults, to keep the code below somewhat
1558           simpler. */
1559         unsigned char msgbuf0[I2C_SMBUS_BLOCK_MAX+3];
1560         unsigned char msgbuf1[I2C_SMBUS_BLOCK_MAX+2];
1561         int num = read_write == I2C_SMBUS_READ?2:1;
1562         struct i2c_msg msg[2] = { { addr, flags, 1, msgbuf0 },
1563                                   { addr, flags | I2C_M_RD, 0, msgbuf1 }
1564                                 };
1565         int i;
1566         u8 partial_pec = 0;
1567         int status;
1568
1569         msgbuf0[0] = command;
1570         switch(size) {
1571         case I2C_SMBUS_QUICK:
1572                 msg[0].len = 0;
1573                 /* Special case: The read/write field is used as data */
1574                 msg[0].flags = flags | (read_write==I2C_SMBUS_READ)?I2C_M_RD:0;
1575                 num = 1;
1576                 break;
1577         case I2C_SMBUS_BYTE:
1578                 if (read_write == I2C_SMBUS_READ) {
1579                         /* Special case: only a read! */
1580                         msg[0].flags = I2C_M_RD | flags;
1581                         num = 1;
1582                 }
1583                 break;
1584         case I2C_SMBUS_BYTE_DATA:
1585                 if (read_write == I2C_SMBUS_READ)
1586                         msg[1].len = 1;
1587                 else {
1588                         msg[0].len = 2;
1589                         msgbuf0[1] = data->byte;
1590                 }
1591                 break;
1592         case I2C_SMBUS_WORD_DATA:
1593                 if (read_write == I2C_SMBUS_READ)
1594                         msg[1].len = 2;
1595                 else {
1596                         msg[0].len=3;
1597                         msgbuf0[1] = data->word & 0xff;
1598                         msgbuf0[2] = data->word >> 8;
1599                 }
1600                 break;
1601         case I2C_SMBUS_PROC_CALL:
1602                 num = 2; /* Special case */
1603                 read_write = I2C_SMBUS_READ;
1604                 msg[0].len = 3;
1605                 msg[1].len = 2;
1606                 msgbuf0[1] = data->word & 0xff;
1607                 msgbuf0[2] = data->word >> 8;
1608                 break;
1609         case I2C_SMBUS_BLOCK_DATA:
1610                 if (read_write == I2C_SMBUS_READ) {
1611                         msg[1].flags |= I2C_M_RECV_LEN;
1612                         msg[1].len = 1; /* block length will be added by
1613                                            the underlying bus driver */
1614                 } else {
1615                         msg[0].len = data->block[0] + 2;
1616                         if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 2) {
1617                                 dev_err(&adapter->dev,
1618                                         "Invalid block write size %d\n",
1619                                         data->block[0]);
1620                                 return -EINVAL;
1621                         }
1622                         for (i = 1; i < msg[0].len; i++)
1623                                 msgbuf0[i] = data->block[i-1];
1624                 }
1625                 break;
1626         case I2C_SMBUS_BLOCK_PROC_CALL:
1627                 num = 2; /* Another special case */
1628                 read_write = I2C_SMBUS_READ;
1629                 if (data->block[0] > I2C_SMBUS_BLOCK_MAX) {
1630                         dev_err(&adapter->dev,
1631                                 "Invalid block write size %d\n",
1632                                 data->block[0]);
1633                         return -EINVAL;
1634                 }
1635                 msg[0].len = data->block[0] + 2;
1636                 for (i = 1; i < msg[0].len; i++)
1637                         msgbuf0[i] = data->block[i-1];
1638                 msg[1].flags |= I2C_M_RECV_LEN;
1639                 msg[1].len = 1; /* block length will be added by
1640                                    the underlying bus driver */
1641                 break;
1642         case I2C_SMBUS_I2C_BLOCK_DATA:
1643                 if (read_write == I2C_SMBUS_READ) {
1644                         msg[1].len = data->block[0];
1645                 } else {
1646                         msg[0].len = data->block[0] + 1;
1647                         if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 1) {
1648                                 dev_err(&adapter->dev,
1649                                         "Invalid block write size %d\n",
1650                                         data->block[0]);
1651                                 return -EINVAL;
1652                         }
1653                         for (i = 1; i <= data->block[0]; i++)
1654                                 msgbuf0[i] = data->block[i];
1655                 }
1656                 break;
1657         default:
1658                 dev_err(&adapter->dev, "Unsupported transaction %d\n", size);
1659                 return -EOPNOTSUPP;
1660         }
1661
1662         i = ((flags & I2C_CLIENT_PEC) && size != I2C_SMBUS_QUICK
1663                                       && size != I2C_SMBUS_I2C_BLOCK_DATA);
1664         if (i) {
1665                 /* Compute PEC if first message is a write */
1666                 if (!(msg[0].flags & I2C_M_RD)) {
1667                         if (num == 1) /* Write only */
1668                                 i2c_smbus_add_pec(&msg[0]);
1669                         else /* Write followed by read */
1670                                 partial_pec = i2c_smbus_msg_pec(0, &msg[0]);
1671                 }
1672                 /* Ask for PEC if last message is a read */
1673                 if (msg[num-1].flags & I2C_M_RD)
1674                         msg[num-1].len++;
1675         }
1676
1677         status = i2c_transfer(adapter, msg, num);
1678         if (status < 0)
1679                 return status;
1680
1681         /* Check PEC if last message is a read */
1682         if (i && (msg[num-1].flags & I2C_M_RD)) {
1683                 status = i2c_smbus_check_pec(partial_pec, &msg[num-1]);
1684                 if (status < 0)
1685                         return status;
1686         }
1687
1688         if (read_write == I2C_SMBUS_READ)
1689                 switch(size) {
1690                         case I2C_SMBUS_BYTE:
1691                                 data->byte = msgbuf0[0];
1692                                 break;
1693                         case I2C_SMBUS_BYTE_DATA:
1694                                 data->byte = msgbuf1[0];
1695                                 break;
1696                         case I2C_SMBUS_WORD_DATA:
1697                         case I2C_SMBUS_PROC_CALL:
1698                                 data->word = msgbuf1[0] | (msgbuf1[1] << 8);
1699                                 break;
1700                         case I2C_SMBUS_I2C_BLOCK_DATA:
1701                                 for (i = 0; i < data->block[0]; i++)
1702                                         data->block[i+1] = msgbuf1[i];
1703                                 break;
1704                         case I2C_SMBUS_BLOCK_DATA:
1705                         case I2C_SMBUS_BLOCK_PROC_CALL:
1706                                 for (i = 0; i < msgbuf1[0] + 1; i++)
1707                                         data->block[i] = msgbuf1[i];
1708                                 break;
1709                 }
1710         return 0;
1711 }
1712
1713 /**
1714  * i2c_smbus_xfer - execute SMBus protocol operations
1715  * @adapter: Handle to I2C bus
1716  * @addr: Address of SMBus slave on that bus
1717  * @flags: I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC)
1718  * @read_write: I2C_SMBUS_READ or I2C_SMBUS_WRITE
1719  * @command: Byte interpreted by slave, for protocols which use such bytes
1720  * @protocol: SMBus protocol operation to execute, such as I2C_SMBUS_PROC_CALL
1721  * @data: Data to be read or written
1722  *
1723  * This executes an SMBus protocol operation, and returns a negative
1724  * errno code else zero on success.
1725  */
1726 s32 i2c_smbus_xfer(struct i2c_adapter * adapter, u16 addr, unsigned short flags,
1727                    char read_write, u8 command, int protocol,
1728                    union i2c_smbus_data * data)
1729 {
1730         s32 res;
1731
1732         flags &= I2C_M_TEN | I2C_CLIENT_PEC;
1733
1734         if (adapter->algo->smbus_xfer) {
1735                 mutex_lock(&adapter->bus_lock);
1736                 res = adapter->algo->smbus_xfer(adapter,addr,flags,read_write,
1737                                                 command, protocol, data);
1738                 mutex_unlock(&adapter->bus_lock);
1739         } else
1740                 res = i2c_smbus_xfer_emulated(adapter,addr,flags,read_write,
1741                                               command, protocol, data);
1742
1743         return res;
1744 }
1745 EXPORT_SYMBOL(i2c_smbus_xfer);
1746
1747 MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
1748 MODULE_DESCRIPTION("I2C-Bus main module");
1749 MODULE_LICENSE("GPL");