i2c: Check for address validity on client registration
[deliverable/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/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");
This page took 0.089612 seconds and 5 git commands to generate.