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