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